@genome-spy/core 0.28.1 → 0.28.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,21 +1,21 @@
1
- var AE=Object.defineProperty;var xE=(R,T,K)=>T in R?AE(R,T,{enumerable:!0,configurable:!0,writable:!0,value:K}):R[T]=K;var $h=(R,T,K)=>(xE(R,typeof T!="symbol"?T+"":T,K),K),cu=(R,T,K)=>{if(!T.has(R))throw TypeError("Cannot "+K)};var V=(R,T,K)=>(cu(R,T,"read from private field"),K?K.call(R):T.get(R)),he=(R,T,K)=>{if(T.has(R))throw TypeError("Cannot add the same private member more than once");T instanceof WeakSet?T.add(R):T.set(R,K)},Yn=(R,T,K,It)=>(cu(R,T,"write to private field"),It?It.call(R,K):T.set(R,K),K),ed=(R,T,K,It)=>({set _(To){Yn(R,T,To,K)},get _(){return V(R,T,It)}}),ue=(R,T,K)=>(cu(R,T,"access private method"),K);(function(R,T){typeof exports=="object"&&typeof module<"u"?T(exports):typeof define=="function"&&define.amd?define(["exports"],T):(R=typeof globalThis<"u"?globalThis:R||self,T(R.genomeSpyEmbed={}))})(this,function(R){var Jr,lu,Un,Hn,Re,Qn,_r,fu,$e,Mt,Fo,td,Mo,nd,on,ri,$r,hu,ei,du,ti,pu,Io,rd,ni;"use strict";function T(t,e,n){return t.fields=e||[],t.fname=n,t}function K(t){return t==null?null:t.fname}function It(t){return t==null?null:t.fields}function To(t){return t.length===1?id(t[0]):od(t)}const id=t=>function(e){return e[t]},od=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function X(t){throw Error(t)}function sd(t){const e=[],n=t.length;let r=null,i=0,o="",s,a,u;t=t+"";function c(){e.push(o+t.substring(s,a)),o="",s=a+1}for(s=a=0;a<n;++a)if(u=t[a],u==="\\")o+=t.substring(s,a),o+=t.substring(++a,++a),s=a;else if(u===r)c(),r=null,i=-1;else{if(r)continue;s===i&&u==='"'||s===i&&u==="'"?(s=a+1,r=u):u==="."&&!i?a>s?c():s=a+1:u==="["?(a>s&&c(),i=s=a+1):u==="]"&&(i||X("Access path missing open bracket: "+t),i>0&&c(),i=0,s=a+1)}return i&&X("Access path missing closing bracket: "+t),r&&X("Access path missing closing quote: "+t),a>s&&(a++,c()),e}function ii(t,e,n){const r=sd(t);return t=r.length===1?r[0]:t,T((n&&n.get||To)(r),[t],e||t)}ii("id");const oi=T(t=>t,[],"identity");T(()=>0,[],"zero"),T(()=>1,[],"one"),T(()=>!0,[],"true"),T(()=>!1,[],"false");var Me=Array.isArray;function ke(t){return t===Object(t)}function Ne(t){return t[t.length-1]}function Wn(t){return t==null||t===""?null:+t}const gu=t=>e=>t*Math.exp(e),mu=t=>e=>Math.log(t*e),ad=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),ud=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,si=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function Po(t,e,n,r){const i=n(t[0]),o=n(Ne(t)),s=(o-i)*e;return[r(i-s),r(o-s)]}function cd(t,e){return Po(t,e,Wn,oi)}function ld(t,e){var n=Math.sign(t[0]);return Po(t,e,mu(n),gu(n))}function fd(t,e,n){return Po(t,e,si(n),si(1/n))}function ai(t,e,n,r,i){const o=r(t[0]),s=r(Ne(t)),a=e!=null?r(e):(o+s)/2;return[i(a+(o-a)*n),i(a+(s-a)*n)]}function Au(t,e,n){return ai(t,e,n,Wn,oi)}function xu(t,e,n){const r=Math.sign(t[0]);return ai(t,e,n,mu(r),gu(r))}function Lo(t,e,n,r){return ai(t,e,n,si(r),si(1/r))}function hd(t,e,n,r){return ai(t,e,n,ad(r),ud(r))}function Ro(t){return t!=null?Me(t)?t:[t]:[]}function dd(t,e,n){let r=t[0],i=t[1],o;return i<r&&(o=i,i=r,r=o),o=i-r,o>=n-e?[e,n]:[r=Math.min(Math.max(r,e),n-o),r+o]}function ge(t){return typeof t=="function"}const pd="descending";function yu(t,e,n){n=n||{},e=Ro(e)||[];const r=[],i=[],o={},s=n.comparator||gd;return Ro(t).forEach((a,u)=>{a!=null&&(r.push(e[u]===pd?-1:1),i.push(a=ge(a)?a:ii(a,null,n)),(It(a)||[]).forEach(c=>o[c]=1))}),i.length===0?null:T(s(i,r),Object.keys(o))}const bu=(t,e)=>(t<e||t==null)&&e!=null?-1:(t>e||e==null)&&t!=null?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e===e?-1:e!==e&&t===t?1:0),gd=(t,e)=>t.length===1?md(t[0],e[0]):Ad(t,e,t.length),md=(t,e)=>function(n,r){return bu(t(n),t(r))*e},Ad=(t,e,n)=>(e.push(0),function(r,i){let o,s=0,a=-1;for(;s===0&&++a<n;)o=t[a],s=bu(o(r),o(i));return s*e[a]});function xd(t){return ge(t)?t:()=>t}function ko(t){for(let e,n,r=1,i=arguments.length;r<i;++r){e=arguments[r];for(n in e)t[n]=e[n]}return t}const yd=Object.prototype.hasOwnProperty;function Tt(t,e){return yd.call(t,e)}function ui(t){return typeof t=="boolean"}function bd(t){return Object.prototype.toString.call(t)==="[object Date]"}function wd(t){return t&&ge(t[Symbol.iterator])}function me(t){return typeof t=="number"}function Z(t){return typeof t=="string"}function vd(t,e){const n=t[0],r=Ne(t),i=+e;return i?i===1?r:n+i*(r-n):n}function ci(t){return t&&Ne(t)-t[0]||0}function li(t){return Me(t)?"["+t.map(li)+"]":ke(t)||Z(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function Cd(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const Ed=t=>me(t)||bd(t)?t:Date.parse(t);function Sd(t,e){return e=e||Ed,t==null||t===""?null:e(t)}function Dd(t){return t==null||t===""?null:t+""}function fi(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var wu={},No={},zo=34,Xn=10,Oo=13;function vu(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function Bd(t,e){var n=vu(t);return function(r,i){return e(n(r),i,t)}}function Cu(t){var e=Object.create(null),n=[];return t.forEach(function(r){for(var i in r)i in e||n.push(e[i]=i)}),n}function Ae(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function Fd(t){return t<0?"-"+Ae(-t,6):t>9999?"+"+Ae(t,6):Ae(t,4)}function Md(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":Fd(t.getUTCFullYear())+"-"+Ae(t.getUTCMonth()+1,2)+"-"+Ae(t.getUTCDate(),2)+(i?"T"+Ae(e,2)+":"+Ae(n,2)+":"+Ae(r,2)+"."+Ae(i,3)+"Z":r?"T"+Ae(e,2)+":"+Ae(n,2)+":"+Ae(r,2)+"Z":n||e?"T"+Ae(e,2)+":"+Ae(n,2)+"Z":"")}function Eu(t){var e=new RegExp('["'+t+`
2
- \r]`),n=t.charCodeAt(0);function r(l,h){var p,d,g=i(l,function(A,m){if(p)return p(A,m-1);d=A,p=h?Bd(A,h):vu(A)});return g.columns=d||[],g}function i(l,h){var p=[],d=l.length,g=0,A=0,m,b=d<=0,y=!1;l.charCodeAt(d-1)===Xn&&--d,l.charCodeAt(d-1)===Oo&&--d;function w(){if(b)return No;if(y)return y=!1,wu;var C,B=g,I;if(l.charCodeAt(B)===zo){for(;g++<d&&l.charCodeAt(g)!==zo||l.charCodeAt(++g)===zo;);return(C=g)>=d?b=!0:(I=l.charCodeAt(g++))===Xn?y=!0:I===Oo&&(y=!0,l.charCodeAt(g)===Xn&&++g),l.slice(B+1,C-1).replace(/""/g,'"')}for(;g<d;){if((I=l.charCodeAt(C=g++))===Xn)y=!0;else if(I===Oo)y=!0,l.charCodeAt(g)===Xn&&++g;else if(I!==n)continue;return l.slice(B,C)}return b=!0,l.slice(B,d)}for(;(m=w())!==No;){for(var E=[];m!==wu&&m!==No;)E.push(m),m=w();h&&(E=h(E,A++))==null||p.push(E)}return p}function o(l,h){return l.map(function(p){return h.map(function(d){return f(p[d])}).join(t)})}function s(l,h){return h==null&&(h=Cu(l)),[h.map(f).join(t)].concat(o(l,h)).join(`
1
+ (function(P,I){typeof exports=="object"&&typeof module<"u"?I(exports):typeof define=="function"&&define.amd?define(["exports"],I):(P=typeof globalThis<"u"?globalThis:P||self,I(P.genomeSpyEmbed={}))})(this,function(P){var qr,lu,Gn,Un,Re,Hn,Jr,fu,$e,Ft,Bo,nd,Fo,rd,rn,ni,_r,hu,$r,du,ei,pu,Mo,id,ti;"use strict";var xE=Object.defineProperty;var yE=(P,I,Z)=>I in P?xE(P,I,{enumerable:!0,configurable:!0,writable:!0,value:Z}):P[I]=Z;var $h=(P,I,Z)=>(yE(P,typeof I!="symbol"?I+"":I,Z),Z),cu=(P,I,Z)=>{if(!I.has(P))throw TypeError("Cannot "+Z)};var Q=(P,I,Z)=>(cu(P,I,"read from private field"),Z?Z.call(P):I.get(P)),he=(P,I,Z)=>{if(I.has(P))throw TypeError("Cannot add the same private member more than once");I instanceof WeakSet?I.add(P):I.set(P,Z)},Yn=(P,I,Z,Mt)=>(cu(P,I,"write to private field"),Mt?Mt.call(P,Z):I.set(P,Z),Z),ed=(P,I,Z,Mt)=>({set _(Io){Yn(P,I,Io,Z)},get _(){return Q(P,I,Mt)}}),ue=(P,I,Z)=>(cu(P,I,"access private method"),Z);function I(t,e,n){return t.fields=e||[],t.fname=n,t}function Z(t){return t==null?null:t.fname}function Mt(t){return t==null?null:t.fields}function Io(t){return t.length===1?od(t[0]):sd(t)}const od=t=>function(e){return e[t]},sd=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function Y(t){throw Error(t)}function ad(t){const e=[],n=t.length;let r=null,i=0,o="",s,a,u;t=t+"";function c(){e.push(o+t.substring(s,a)),o="",s=a+1}for(s=a=0;a<n;++a)if(u=t[a],u==="\\")o+=t.substring(s,a),o+=t.substring(++a,++a),s=a;else if(u===r)c(),r=null,i=-1;else{if(r)continue;s===i&&u==='"'||s===i&&u==="'"?(s=a+1,r=u):u==="."&&!i?a>s?c():s=a+1:u==="["?(a>s&&c(),i=s=a+1):u==="]"&&(i||Y("Access path missing open bracket: "+t),i>0&&c(),i=0,s=a+1)}return i&&Y("Access path missing closing bracket: "+t),r&&Y("Access path missing closing quote: "+t),a>s&&(a++,c()),e}function ri(t,e,n){const r=ad(t);return t=r.length===1?r[0]:t,I((n&&n.get||Io)(r),[t],e||t)}ri("id");const ii=I(t=>t,[],"identity");I(()=>0,[],"zero"),I(()=>1,[],"one"),I(()=>!0,[],"true"),I(()=>!1,[],"false");var Fe=Array.isArray;function Le(t){return t===Object(t)}function ke(t){return t[t.length-1]}function Wn(t){return t==null||t===""?null:+t}const gu=t=>e=>t*Math.exp(e),mu=t=>e=>Math.log(t*e),ud=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),cd=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,oi=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function To(t,e,n,r){const i=n(t[0]),o=n(ke(t)),s=(o-i)*e;return[r(i-s),r(o-s)]}function ld(t,e){return To(t,e,Wn,ii)}function fd(t,e){var n=Math.sign(t[0]);return To(t,e,mu(n),gu(n))}function hd(t,e,n){return To(t,e,oi(n),oi(1/n))}function si(t,e,n,r,i){const o=r(t[0]),s=r(ke(t)),a=e!=null?r(e):(o+s)/2;return[i(a+(o-a)*n),i(a+(s-a)*n)]}function Au(t,e,n){return si(t,e,n,Wn,ii)}function xu(t,e,n){const r=Math.sign(t[0]);return si(t,e,n,mu(r),gu(r))}function Po(t,e,n,r){return si(t,e,n,oi(r),oi(1/r))}function dd(t,e,n,r){return si(t,e,n,ud(r),cd(r))}function Ro(t){return t!=null?Fe(t)?t:[t]:[]}function pd(t,e,n){let r=t[0],i=t[1],o;return i<r&&(o=i,i=r,r=o),o=i-r,o>=n-e?[e,n]:[r=Math.min(Math.max(r,e),n-o),r+o]}function ge(t){return typeof t=="function"}const gd="descending";function yu(t,e,n){n=n||{},e=Ro(e)||[];const r=[],i=[],o={},s=n.comparator||md;return Ro(t).forEach((a,u)=>{a!=null&&(r.push(e[u]===gd?-1:1),i.push(a=ge(a)?a:ri(a,null,n)),(Mt(a)||[]).forEach(c=>o[c]=1))}),i.length===0?null:I(s(i,r),Object.keys(o))}const bu=(t,e)=>(t<e||t==null)&&e!=null?-1:(t>e||e==null)&&t!=null?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e===e?-1:e!==e&&t===t?1:0),md=(t,e)=>t.length===1?Ad(t[0],e[0]):xd(t,e,t.length),Ad=(t,e)=>function(n,r){return bu(t(n),t(r))*e},xd=(t,e,n)=>(e.push(0),function(r,i){let o,s=0,a=-1;for(;s===0&&++a<n;)o=t[a],s=bu(o(r),o(i));return s*e[a]});function yd(t){return ge(t)?t:()=>t}function Lo(t){for(let e,n,r=1,i=arguments.length;r<i;++r){e=arguments[r];for(n in e)t[n]=e[n]}return t}const bd=Object.prototype.hasOwnProperty;function It(t,e){return bd.call(t,e)}function ai(t){return typeof t=="boolean"}function wd(t){return Object.prototype.toString.call(t)==="[object Date]"}function vd(t){return t&&ge(t[Symbol.iterator])}function me(t){return typeof t=="number"}function W(t){return typeof t=="string"}function Cd(t,e){const n=t[0],r=ke(t),i=+e;return i?i===1?r:n+i*(r-n):n}function ui(t){return t&&ke(t)-t[0]||0}function ci(t){return Fe(t)?"["+t.map(ci)+"]":Le(t)||W(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function Ed(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const Sd=t=>me(t)||wd(t)?t:Date.parse(t);function Dd(t,e){return e=e||Sd,t==null||t===""?null:e(t)}function Bd(t){return t==null||t===""?null:t+""}function li(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var wu={},ko={},No=34,Xn=10,zo=13;function vu(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function Fd(t,e){var n=vu(t);return function(r,i){return e(n(r),i,t)}}function Cu(t){var e=Object.create(null),n=[];return t.forEach(function(r){for(var i in r)i in e||n.push(e[i]=i)}),n}function Ae(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function Md(t){return t<0?"-"+Ae(-t,6):t>9999?"+"+Ae(t,6):Ae(t,4)}function Id(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":Md(t.getUTCFullYear())+"-"+Ae(t.getUTCMonth()+1,2)+"-"+Ae(t.getUTCDate(),2)+(i?"T"+Ae(e,2)+":"+Ae(n,2)+":"+Ae(r,2)+"."+Ae(i,3)+"Z":r?"T"+Ae(e,2)+":"+Ae(n,2)+":"+Ae(r,2)+"Z":n||e?"T"+Ae(e,2)+":"+Ae(n,2)+"Z":"")}function Eu(t){var e=new RegExp('["'+t+`
2
+ \r]`),n=t.charCodeAt(0);function r(l,h){var p,d,g=i(l,function(m,A){if(p)return p(m,A-1);d=m,p=h?Fd(m,h):vu(m)});return g.columns=d||[],g}function i(l,h){var p=[],d=l.length,g=0,m=0,A,y=d<=0,b=!1;l.charCodeAt(d-1)===Xn&&--d,l.charCodeAt(d-1)===zo&&--d;function C(){if(y)return ko;if(b)return b=!1,wu;var E,w=g,X;if(l.charCodeAt(w)===No){for(;g++<d&&l.charCodeAt(g)!==No||l.charCodeAt(++g)===No;);return(E=g)>=d?y=!0:(X=l.charCodeAt(g++))===Xn?b=!0:X===zo&&(b=!0,l.charCodeAt(g)===Xn&&++g),l.slice(w+1,E-1).replace(/""/g,'"')}for(;g<d;){if((X=l.charCodeAt(E=g++))===Xn)b=!0;else if(X===zo)b=!0,l.charCodeAt(g)===Xn&&++g;else if(X!==n)continue;return l.slice(w,E)}return y=!0,l.slice(w,d)}for(;(A=C())!==ko;){for(var B=[];A!==wu&&A!==ko;)B.push(A),A=C();h&&(B=h(B,m++))==null||p.push(B)}return p}function o(l,h){return l.map(function(p){return h.map(function(d){return f(p[d])}).join(t)})}function s(l,h){return h==null&&(h=Cu(l)),[h.map(f).join(t)].concat(o(l,h)).join(`
3
3
  `)}function a(l,h){return h==null&&(h=Cu(l)),o(l,h).join(`
4
4
  `)}function u(l){return l.map(c).join(`
5
- `)}function c(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?Md(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:u,formatRow:c,formatValue:f}}var Id=Eu(" "),Td=Id.parseRows;function Pd(t){return t}function Ld(t){if(t==null)return Pd;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],s=t.translate[1];return function(a,u){u||(e=n=0);var c=2,f=a.length,l=new Array(f);for(l[0]=(e+=a[0])*r+o,l[1]=(n+=a[1])*i+s;c<f;)l[c]=a[c],++c;return l}}function Rd(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function kd(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return Su(t,n)})}:Su(t,e)}function Su(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=Du(t,e);return n==null&&r==null?{type:"Feature",properties:i,geometry:o}:r==null?{type:"Feature",id:n,properties:i,geometry:o}:{type:"Feature",id:n,bbox:r,properties:i,geometry:o}}function Du(t,e){var n=Ld(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var h=r[f<0?~f:f],p=0,d=h.length;p<d;++p)l.push(n(h[p],p));f<0&&Rd(l,d)}function o(f){return n(f)}function s(f){for(var l=[],h=0,p=f.length;h<p;++h)i(f[h],l);return l.length<2&&l.push(l[0]),l}function a(f){for(var l=s(f);l.length<4;)l.push(l[0]);return l}function u(f){return f.map(a)}function c(f){var l=f.type,h;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(c)};case"Point":h=o(f.coordinates);break;case"MultiPoint":h=f.coordinates.map(o);break;case"LineString":h=s(f.arcs);break;case"MultiLineString":h=f.arcs.map(s);break;case"Polygon":h=u(f.arcs);break;case"MultiPolygon":h=f.arcs.map(u);break;default:return null}return{type:l,coordinates:h}}return c(e)}function Nd(t,e){var n={},r={},i={},o=[],s=-1;e.forEach(function(c,f){var l=t.arcs[c<0?~c:c],h;l.length<3&&!l[1][0]&&!l[1][1]&&(h=e[++s],e[s]=c,e[f]=h)}),e.forEach(function(c){var f=a(c),l=f[0],h=f[1],p,d;if(p=i[l])if(delete i[p.end],p.push(c),p.end=h,d=r[h]){delete r[d.start];var g=d===p?p:p.concat(d);r[g.start=p.start]=i[g.end=d.end]=g}else r[p.start]=i[p.end]=p;else if(p=r[h])if(delete r[p.start],p.unshift(c),p.start=l,d=i[l]){delete i[d.end];var A=d===p?p:d.concat(p);r[A.start=d.start]=i[A.end=p.end]=A}else r[p.start]=i[p.end]=p;else p=[c],r[p.start=l]=i[p.end=h]=p});function a(c){var f=t.arcs[c<0?~c:c],l=f[0],h;return t.transform?(h=[0,0],f.forEach(function(p){h[0]+=p[0],h[1]+=p[1]})):h=f[f.length-1],c<0?[h,l]:[l,h]}function u(c,f){for(var l in c){var h=c[l];delete f[h.start],delete h.start,delete h.end,h.forEach(function(p){n[p<0?~p:p]=1}),o.push(h)}}return u(i,r),u(r,i),e.forEach(function(c){n[c<0?~c:c]||o.push([c])}),o}function zd(t){return Du(t,Od.apply(this,arguments))}function Od(t,e,n){var r,i,o;if(arguments.length>1)r=Gd(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:Nd(t,r)}}function Gd(t,e,n){var r=[],i=[],o;function s(l){var h=l<0?~l:l;(i[h]||(i[h]=[])).push({i:l,g:o})}function a(l){l.forEach(s)}function u(l){l.forEach(a)}function c(l){l.forEach(u)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":a(l.arcs);break;case"MultiLineString":case"Polygon":u(l.arcs);break;case"MultiPolygon":c(l.arcs);break}}return f(e),i.forEach(n==null?function(l){r.push(l[0].i)}:function(l){n(l[0].g,l[l.length-1].g)&&r.push(l[0].i)}),r}function Zn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Ud(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function hi(t){let e,n,r;t.length!==2?(e=Zn,n=(a,u)=>Zn(t(a),u),r=(a,u)=>t(a)-u):(e=t===Zn||t===Ud?t:Hd,n=t,r=t);function i(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<0?c=l+1:f=l}while(c<f)}return c}function o(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<=0?c=l+1:f=l}while(c<f)}return c}function s(a,u,c=0,f=a.length){const l=i(a,u,c,f-1);return l>c&&r(a[l-1],u)>-r(a[l],u)?l-1:l}return{left:i,center:s,right:o}}function Hd(){return 0}function Bu(t){return t===null?NaN:+t}const Fu=hi(Zn),Go=Fu.right;Fu.left,hi(Bu).center;const an=Go;function Qd(t,e){let n,r;if(e===void 0)for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));else{let i=-1;for(let o of t)(o=e(o,++i,t))!=null&&(n===void 0?o>=o&&(n=r=o):(n>o&&(n=o),r<o&&(r=o)))}return[n,r]}class Pt extends Map{constructor(e,n=Yd){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(Mu(this,e))}has(e){return super.has(Mu(this,e))}set(e,n){return super.set(jd(this,e),n)}delete(e){return super.delete(Vd(this,e))}}function Mu({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function jd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Vd({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Yd(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Uo(t){return t}function di(t,...e){return Iu(t,Uo,Uo,e)}function Wd(t,...e){return Iu(t,Array.from,Uo,e)}function Iu(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new Pt,u=r[s++];let c=-1;for(const f of o){const l=u(f,++c,o),h=a.get(l);h?h.push(f):a.set(l,[f])}for(const[f,l]of a)a.set(f,i(l,s));return e(a)}(t,0)}var Ho=Math.sqrt(50),Qo=Math.sqrt(10),jo=Math.sqrt(2);function pi(t,e,n){var r,i=-1,o,s,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(a=Tu(t,e,n))===0||!isFinite(a))return[];if(a>0){let u=Math.round(t/a),c=Math.round(e/a);for(u*a<t&&++u,c*a>e&&--c,s=new Array(o=c-u+1);++i<o;)s[i]=(u+i)*a}else{a=-a;let u=Math.round(t*a),c=Math.round(e*a);for(u/a<t&&++u,c/a>e&&--c,s=new Array(o=c-u+1);++i<o;)s[i]=(u+i)/a}return r&&s.reverse(),s}function Tu(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=Ho?10:o>=Qo?5:o>=jo?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Ho?10:o>=Qo?5:o>=jo?2:1)}function Lt(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Ho?i*=10:o>=Qo?i*=5:o>=jo&&(i*=2),e<t?-i:i}function Pu(t,e,n=Bu){if(!!(r=t.length)){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),s=+n(t[o],o,t),a=+n(t[o+1],o+1,t);return s+(a-s)*(i-o)}}function Kn(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function gi(t,e){let n=0;if(e===void 0)for(let r of t)(r=+r)&&(n+=r);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}function Xd(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function mi(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function un(t){return t=mi(Math.abs(t)),t?t[1]:NaN}function Zd(t,e){return function(n,r){for(var i=n.length,o=[],s=0,a=t[0],u=0;i>0&&a>0&&(u+a+1>r&&(a=Math.max(1,r-u)),o.push(n.substring(i-=a,i+a)),!((u+=a+1)>r));)a=t[s=(s+1)%t.length];return o.reverse().join(e)}}function Kd(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var qd=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ft(t){if(!(e=qd.exec(t)))throw new Error("invalid format: "+t);var e;return new Vo({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}ft.prototype=Vo.prototype;function Vo(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}Vo.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Jd(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var Lu;function _d(t,e){var n=mi(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Lu=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+mi(t,Math.max(0,e+o-1))[0]}function Ru(t,e){var n=mi(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const ku={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Xd,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Ru(t*100,e),r:Ru,s:_d,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Nu(t){return t}var zu=Array.prototype.map,Ou=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function $d(t){var e=t.grouping===void 0||t.thousands===void 0?Nu:Zd(zu.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?Nu:Kd(zu.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function c(l){l=ft(l);var h=l.fill,p=l.align,d=l.sign,g=l.symbol,A=l.zero,m=l.width,b=l.comma,y=l.precision,w=l.trim,E=l.type;E==="n"?(b=!0,E="g"):ku[E]||(y===void 0&&(y=12),w=!0,E="g"),(A||h==="0"&&p==="=")&&(A=!0,h="0",p="=");var C=g==="$"?n:g==="#"&&/[boxX]/.test(E)?"0"+E.toLowerCase():"",B=g==="$"?r:/[%p]/.test(E)?s:"",I=ku[E],P=/[defgprs%]/.test(E);y=y===void 0?6:/[gprs]/.test(E)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y));function U(M){var ve=C,oe=B,Se,et,De;if(E==="c")oe=I(M)+oe,M="";else{M=+M;var jn=M<0||1/M<0;if(M=isNaN(M)?u:I(Math.abs(M),y),w&&(M=Jd(M)),jn&&+M==0&&d!=="+"&&(jn=!1),ve=(jn?d==="("?d:a:d==="-"||d==="("?"":d)+ve,oe=(E==="s"?Ou[8+Lu/3]:"")+oe+(jn&&d==="("?")":""),P){for(Se=-1,et=M.length;++Se<et;)if(De=M.charCodeAt(Se),48>De||De>57){oe=(De===46?i+M.slice(Se+1):M.slice(Se))+oe,M=M.slice(0,Se);break}}}b&&!A&&(M=e(M,1/0));var Vn=ve.length+M.length+oe.length,Ve=Vn<m?new Array(m-Vn+1).join(h):"";switch(b&&A&&(M=e(Ve+M,Ve.length?m-oe.length:1/0),Ve=""),p){case"<":M=ve+M+oe+Ve;break;case"=":M=ve+Ve+M+oe;break;case"^":M=Ve.slice(0,Vn=Ve.length>>1)+ve+M+oe+Ve.slice(Vn);break;default:M=Ve+ve+M+oe;break}return o(M)}return U.toString=function(){return l+""},U}function f(l,h){var p=c((l=ft(l),l.type="f",l)),d=Math.max(-8,Math.min(8,Math.floor(un(h)/3)))*3,g=Math.pow(10,-d),A=Ou[8+d/3];return function(m){return p(g*m)+A}}return{format:c,formatPrefix:f}}var Ai,se,Yo;ep({thousands:",",grouping:[3],currency:["$",""]});function ep(t){return Ai=$d(t),se=Ai.format,Yo=Ai.formatPrefix,Ai}function Gu(t){return Math.max(0,-un(Math.abs(t)))}function Uu(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(un(e)/3)))*3-un(Math.abs(t)))}function Hu(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,un(e)-un(t))+1}var Wo=new Date,Xo=new Date;function $(t,e,n,r){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=function(o){return t(o=new Date(+o)),o},i.ceil=function(o){return t(o=new Date(o-1)),e(o,1),t(o),o},i.round=function(o){var s=i(o),a=i.ceil(o);return o-s<a-o?s:a},i.offset=function(o,s){return e(o=new Date(+o),s==null?1:Math.floor(s)),o},i.range=function(o,s,a){var u=[],c;if(o=i.ceil(o),a=a==null?1:Math.floor(a),!(o<s)||!(a>0))return u;do u.push(c=new Date(+o)),e(o,a),t(o);while(c<o&&o<s);return u},i.filter=function(o){return $(function(s){if(s>=s)for(;t(s),!o(s);)s.setTime(s-1)},function(s,a){if(s>=s)if(a<0)for(;++a<=0;)for(;e(s,-1),!o(s););else for(;--a>=0;)for(;e(s,1),!o(s););})},n&&(i.count=function(o,s){return Wo.setTime(+o),Xo.setTime(+s),t(Wo),t(Xo),Math.floor(n(Wo,Xo))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(s){return r(s)%o===0}:function(s){return i.count(0,s)%o===0}):i}),i}var xi=$(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});xi.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?$(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):xi};const Zo=xi;xi.range;const tt=1e3,Ie=tt*60,nt=Ie*60,Rt=nt*24,Ko=Rt*7,Qu=Rt*30,qo=Rt*365;var ju=$(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*tt)},function(t,e){return(e-t)/tt},function(t){return t.getUTCSeconds()});const ht=ju;ju.range;var Vu=$(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*tt)},function(t,e){t.setTime(+t+e*Ie)},function(t,e){return(e-t)/Ie},function(t){return t.getMinutes()});const Jo=Vu;Vu.range;var Yu=$(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*tt-t.getMinutes()*Ie)},function(t,e){t.setTime(+t+e*nt)},function(t,e){return(e-t)/nt},function(t){return t.getHours()});const _o=Yu;Yu.range;var Wu=$(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ie)/Rt,t=>t.getDate()-1);const kt=Wu;Wu.range;function Nt(t){return $(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,n){e.setDate(e.getDate()+n*7)},function(e,n){return(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*Ie)/Ko})}var qn=Nt(0),yi=Nt(1),tp=Nt(2),np=Nt(3),cn=Nt(4),rp=Nt(5),ip=Nt(6);qn.range,yi.range,tp.range,np.range,cn.range,rp.range,ip.range;var Xu=$(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()});const bi=Xu;Xu.range;var $o=$(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});$o.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:$(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)})};const dt=$o;$o.range;var Zu=$(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Ie)},function(t,e){return(e-t)/Ie},function(t){return t.getUTCMinutes()});const es=Zu;Zu.range;var Ku=$(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*nt)},function(t,e){return(e-t)/nt},function(t){return t.getUTCHours()});const ts=Ku;Ku.range;var qu=$(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/Rt},function(t){return t.getUTCDate()-1});const zt=qu;qu.range;function Ot(t){return $(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCDate(e.getUTCDate()+n*7)},function(e,n){return(n-e)/Ko})}var Jn=Ot(0),wi=Ot(1),op=Ot(2),sp=Ot(3),ln=Ot(4),ap=Ot(5),up=Ot(6);Jn.range,wi.range,op.range,sp.range,ln.range,ap.range,up.range;var Ju=$(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()});const vi=Ju;Ju.range;var ns=$(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});ns.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:$(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})};const pt=ns;ns.range;function _u(t,e,n,r,i,o){const s=[[ht,1,tt],[ht,5,5*tt],[ht,15,15*tt],[ht,30,30*tt],[o,1,Ie],[o,5,5*Ie],[o,15,15*Ie],[o,30,30*Ie],[i,1,nt],[i,3,3*nt],[i,6,6*nt],[i,12,12*nt],[r,1,Rt],[r,2,2*Rt],[n,1,Ko],[e,1,Qu],[e,3,3*Qu],[t,1,qo]];function a(c,f,l){const h=f<c;h&&([c,f]=[f,c]);const p=l&&typeof l.range=="function"?l:u(c,f,l),d=p?p.range(c,+f+1):[];return h?d.reverse():d}function u(c,f,l){const h=Math.abs(f-c)/l,p=hi(([,,A])=>A).right(s,h);if(p===s.length)return t.every(Lt(c/qo,f/qo,l));if(p===0)return Zo.every(Math.max(Lt(c,f,l),1));const[d,g]=s[h/s[p-1][2]<s[p][2]/h?p-1:p];return d.every(g)}return[a,u]}const[cp,lp]=_u(pt,vi,Jn,zt,ts,es),[fp,hp]=_u(dt,bi,qn,kt,_o,Jo),_n="year",$n="quarter",er="month",tr="week",nr="date",Ci="day",rs="dayofyear",rr="hours",ir="minutes",or="seconds",Ei="milliseconds";[_n,$n,er,tr,nr,Ci,rs,rr,ir,or,Ei].reduce((t,e,n)=>(t[e]=1+n,t),{});const dp={[_n]:dt,[$n]:bi.every(3),[er]:bi,[tr]:qn,[nr]:kt,[Ci]:kt,[rs]:kt,[rr]:_o,[ir]:Jo,[or]:ht,[Ei]:Zo},pp={[_n]:pt,[$n]:vi.every(3),[er]:vi,[tr]:Jn,[nr]:zt,[Ci]:zt,[rs]:zt,[rr]:ts,[ir]:es,[or]:ht,[Ei]:Zo};function gp(t){return dp[t]}function mp(t){return pp[t]}function is(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function os(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function sr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function $u(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,s=t.shortDays,a=t.months,u=t.shortMonths,c=ar(i),f=ur(i),l=ar(o),h=ur(o),p=ar(s),d=ur(s),g=ar(a),A=ur(a),m=ar(u),b=ur(u),y={a:jn,A:Vn,b:Ve,B:uE,c:null,d:oc,e:oc,f:Gp,g:Kp,G:Jp,H:Np,I:zp,j:Op,L:sc,m:Up,M:Hp,p:cE,q:lE,Q:hc,s:dc,S:Qp,u:jp,U:Vp,V:Yp,w:Wp,W:Xp,x:null,X:null,y:Zp,Y:qp,Z:_p,"%":fc},w={a:fE,A:hE,b:dE,B:pE,c:null,d:uc,e:uc,f:ng,g:hg,G:pg,H:$p,I:eg,j:tg,L:cc,m:rg,M:ig,p:gE,q:mE,Q:hc,s:dc,S:og,u:sg,U:ag,V:ug,w:cg,W:lg,x:null,X:null,y:fg,Y:dg,Z:gg,"%":fc},E={a:U,A:M,b:ve,B:oe,c:Se,d:rc,e:rc,f:Pp,g:nc,G:tc,H:ic,I:ic,j:Fp,L:Tp,m:Bp,M:Mp,p:P,q:Dp,Q:Rp,s:kp,S:Ip,u:wp,U:vp,V:Cp,w:bp,W:Ep,x:et,X:De,y:nc,Y:tc,Z:Sp,"%":Lp};y.x=C(n,y),y.X=C(r,y),y.c=C(e,y),w.x=C(n,w),w.X=C(r,w),w.c=C(e,w);function C(D,L){return function(z){var v=[],Ce=-1,Q=0,Be=D.length,Fe,sn,_h;for(z instanceof Date||(z=new Date(+z));++Ce<Be;)D.charCodeAt(Ce)===37&&(v.push(D.slice(Q,Ce)),(sn=ec[Fe=D.charAt(++Ce)])!=null?Fe=D.charAt(++Ce):sn=Fe==="e"?" ":"0",(_h=L[Fe])&&(Fe=_h(z,sn)),v.push(Fe),Q=Ce+1);return v.push(D.slice(Q,Ce)),v.join("")}}function B(D,L){return function(z){var v=sr(1900,void 0,1),Ce=I(v,D,z+="",0),Q,Be;if(Ce!=z.length)return null;if("Q"in v)return new Date(v.Q);if("s"in v)return new Date(v.s*1e3+("L"in v?v.L:0));if(L&&!("Z"in v)&&(v.Z=0),"p"in v&&(v.H=v.H%12+v.p*12),v.m===void 0&&(v.m="q"in v?v.q:0),"V"in v){if(v.V<1||v.V>53)return null;"w"in v||(v.w=1),"Z"in v?(Q=os(sr(v.y,0,1)),Be=Q.getUTCDay(),Q=Be>4||Be===0?wi.ceil(Q):wi(Q),Q=zt.offset(Q,(v.V-1)*7),v.y=Q.getUTCFullYear(),v.m=Q.getUTCMonth(),v.d=Q.getUTCDate()+(v.w+6)%7):(Q=is(sr(v.y,0,1)),Be=Q.getDay(),Q=Be>4||Be===0?yi.ceil(Q):yi(Q),Q=kt.offset(Q,(v.V-1)*7),v.y=Q.getFullYear(),v.m=Q.getMonth(),v.d=Q.getDate()+(v.w+6)%7)}else("W"in v||"U"in v)&&("w"in v||(v.w="u"in v?v.u%7:"W"in v?1:0),Be="Z"in v?os(sr(v.y,0,1)).getUTCDay():is(sr(v.y,0,1)).getDay(),v.m=0,v.d="W"in v?(v.w+6)%7+v.W*7-(Be+5)%7:v.w+v.U*7-(Be+6)%7);return"Z"in v?(v.H+=v.Z/100|0,v.M+=v.Z%100,os(v)):is(v)}}function I(D,L,z,v){for(var Ce=0,Q=L.length,Be=z.length,Fe,sn;Ce<Q;){if(v>=Be)return-1;if(Fe=L.charCodeAt(Ce++),Fe===37){if(Fe=L.charAt(Ce++),sn=E[Fe in ec?L.charAt(Ce++):Fe],!sn||(v=sn(D,z,v))<0)return-1}else if(Fe!=z.charCodeAt(v++))return-1}return v}function P(D,L,z){var v=c.exec(L.slice(z));return v?(D.p=f.get(v[0].toLowerCase()),z+v[0].length):-1}function U(D,L,z){var v=p.exec(L.slice(z));return v?(D.w=d.get(v[0].toLowerCase()),z+v[0].length):-1}function M(D,L,z){var v=l.exec(L.slice(z));return v?(D.w=h.get(v[0].toLowerCase()),z+v[0].length):-1}function ve(D,L,z){var v=m.exec(L.slice(z));return v?(D.m=b.get(v[0].toLowerCase()),z+v[0].length):-1}function oe(D,L,z){var v=g.exec(L.slice(z));return v?(D.m=A.get(v[0].toLowerCase()),z+v[0].length):-1}function Se(D,L,z){return I(D,e,L,z)}function et(D,L,z){return I(D,n,L,z)}function De(D,L,z){return I(D,r,L,z)}function jn(D){return s[D.getDay()]}function Vn(D){return o[D.getDay()]}function Ve(D){return u[D.getMonth()]}function uE(D){return a[D.getMonth()]}function cE(D){return i[+(D.getHours()>=12)]}function lE(D){return 1+~~(D.getMonth()/3)}function fE(D){return s[D.getUTCDay()]}function hE(D){return o[D.getUTCDay()]}function dE(D){return u[D.getUTCMonth()]}function pE(D){return a[D.getUTCMonth()]}function gE(D){return i[+(D.getUTCHours()>=12)]}function mE(D){return 1+~~(D.getUTCMonth()/3)}return{format:function(D){var L=C(D+="",y);return L.toString=function(){return D},L},parse:function(D){var L=B(D+="",!1);return L.toString=function(){return D},L},utcFormat:function(D){var L=C(D+="",w);return L.toString=function(){return D},L},utcParse:function(D){var L=B(D+="",!0);return L.toString=function(){return D},L}}}var ec={"-":"",_:" ",0:"0"},ee=/^\s*\d+/,Ap=/^%/,xp=/[\\^$*+?|[\]().{}]/g;function k(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function yp(t){return t.replace(xp,"\\$&")}function ar(t){return new RegExp("^(?:"+t.map(yp).join("|")+")","i")}function ur(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function bp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function wp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function vp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Cp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Ep(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function tc(t,e,n){var r=ee.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function nc(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Sp(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Dp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function Bp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function rc(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Fp(t,e,n){var r=ee.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function ic(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Mp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Ip(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Tp(t,e,n){var r=ee.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Pp(t,e,n){var r=ee.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Lp(t,e,n){var r=Ap.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Rp(t,e,n){var r=ee.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function kp(t,e,n){var r=ee.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function oc(t,e){return k(t.getDate(),e,2)}function Np(t,e){return k(t.getHours(),e,2)}function zp(t,e){return k(t.getHours()%12||12,e,2)}function Op(t,e){return k(1+kt.count(dt(t),t),e,3)}function sc(t,e){return k(t.getMilliseconds(),e,3)}function Gp(t,e){return sc(t,e)+"000"}function Up(t,e){return k(t.getMonth()+1,e,2)}function Hp(t,e){return k(t.getMinutes(),e,2)}function Qp(t,e){return k(t.getSeconds(),e,2)}function jp(t){var e=t.getDay();return e===0?7:e}function Vp(t,e){return k(qn.count(dt(t)-1,t),e,2)}function ac(t){var e=t.getDay();return e>=4||e===0?cn(t):cn.ceil(t)}function Yp(t,e){return t=ac(t),k(cn.count(dt(t),t)+(dt(t).getDay()===4),e,2)}function Wp(t){return t.getDay()}function Xp(t,e){return k(yi.count(dt(t)-1,t),e,2)}function Zp(t,e){return k(t.getFullYear()%100,e,2)}function Kp(t,e){return t=ac(t),k(t.getFullYear()%100,e,2)}function qp(t,e){return k(t.getFullYear()%1e4,e,4)}function Jp(t,e){var n=t.getDay();return t=n>=4||n===0?cn(t):cn.ceil(t),k(t.getFullYear()%1e4,e,4)}function _p(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+k(e/60|0,"0",2)+k(e%60,"0",2)}function uc(t,e){return k(t.getUTCDate(),e,2)}function $p(t,e){return k(t.getUTCHours(),e,2)}function eg(t,e){return k(t.getUTCHours()%12||12,e,2)}function tg(t,e){return k(1+zt.count(pt(t),t),e,3)}function cc(t,e){return k(t.getUTCMilliseconds(),e,3)}function ng(t,e){return cc(t,e)+"000"}function rg(t,e){return k(t.getUTCMonth()+1,e,2)}function ig(t,e){return k(t.getUTCMinutes(),e,2)}function og(t,e){return k(t.getUTCSeconds(),e,2)}function sg(t){var e=t.getUTCDay();return e===0?7:e}function ag(t,e){return k(Jn.count(pt(t)-1,t),e,2)}function lc(t){var e=t.getUTCDay();return e>=4||e===0?ln(t):ln.ceil(t)}function ug(t,e){return t=lc(t),k(ln.count(pt(t),t)+(pt(t).getUTCDay()===4),e,2)}function cg(t){return t.getUTCDay()}function lg(t,e){return k(wi.count(pt(t)-1,t),e,2)}function fg(t,e){return k(t.getUTCFullYear()%100,e,2)}function hg(t,e){return t=lc(t),k(t.getUTCFullYear()%100,e,2)}function dg(t,e){return k(t.getUTCFullYear()%1e4,e,4)}function pg(t,e){var n=t.getUTCDay();return t=n>=4||n===0?ln(t):ln.ceil(t),k(t.getUTCFullYear()%1e4,e,4)}function gg(){return"+0000"}function fc(){return"%"}function hc(t){return+t}function dc(t){return Math.floor(+t/1e3)}var fn,ss,pc,as,gc;mg({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function mg(t){return fn=$u(t),ss=fn.format,pc=fn.parse,as=fn.utcFormat,gc=fn.utcParse,fn}function cr(t){const e={};return n=>e[n]||(e[n]=t(n))}function Ag(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=xg(r,i);const s=o<r.length?r.slice(o):"";for(;--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function xg(t,e){let n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}function yg(t){const e=cr(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=ft(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return Ag(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=ft(s==null?",f":s);const a=Lt(r,i,o),u=Math.max(Math.abs(r),Math.abs(i));let c;if(s.precision==null)switch(s.type){case"s":return isNaN(c=Uu(a,u))||(s.precision=c),n(s,u);case"":case"e":case"g":case"p":case"r":{isNaN(c=Hu(a,u))||(s.precision=c-(s.type==="e"));break}case"f":case"%":{isNaN(c=Gu(a))||(s.precision=c-(s.type==="%")*2);break}}return e(s)}}}bg();function bg(){return yg({format:se,formatPrefix:Yo})}function mc(t,e,n){n=n||{},ke(n)||X("Invalid time multi-format specifier: ".concat(n));const r=e(or),i=e(ir),o=e(rr),s=e(nr),a=e(tr),u=e(er),c=e($n),f=e(_n),l=t(n[Ei]||".%L"),h=t(n[or]||":%S"),p=t(n[ir]||"%I:%M"),d=t(n[rr]||"%I %p"),g=t(n[nr]||n[Ci]||"%a %d"),A=t(n[tr]||"%b %d"),m=t(n[er]||"%B"),b=t(n[$n]||"%B"),y=t(n[_n]||"%Y");return w=>(r(w)<w?l:i(w)<w?h:o(w)<w?p:s(w)<w?d:u(w)<w?a(w)<w?g:A:f(w)<w?c(w)<w?m:b:y)(w)}function Ac(t){const e=cr(t.format),n=cr(t.utcFormat);return{timeFormat:r=>Z(r)?e(r):mc(e,gp,r),utcFormat:r=>Z(r)?n(r):mc(n,mp,r),timeParse:cr(t.parse),utcParse:cr(t.utcParse)}}let us;wg();function wg(){return us=Ac({format:ss,parse:pc,utcFormat:as,utcParse:gc})}function vg(t){return Ac($u(t))}function Cg(t){return arguments.length?us=vg(t):us}const Eg=/^(data:|([A-Za-z]+:)?\/\/)/,Sg=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,Dg=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,xc="file://";function Bg(t,e){return n=>({options:n||{},sanitize:Mg,load:Fg,fileAccess:!!e,file:Ig(e),http:Pg(t)})}async function Fg(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function Mg(t,e){e=ko({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=Sg.test(t.replace(Dg,""));(t==null||typeof t!="string"||!a)&&X("Sanitize failure, invalid URI: "+li(t));const u=Eg.test(t);return(s=e.baseURL)&&!u&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(xc))||e.mode==="file"||e.mode!=="http"&&!u&&n,i?t=t.slice(xc.length):t.startsWith("//")&&(e.defaultProtocol==="file"?(t=t.slice(2),o=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!o}),r.href=t,e.target&&(r.target=e.target+""),e.rel&&(r.rel=e.rel+""),e.context==="image"&&e.crossOrigin&&(r.crossOrigin=e.crossOrigin+""),r}function Ig(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):Tg}async function Tg(){X("No file system access.")}function Pg(t){return t?async function(e,n){const r=ko({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?ge(o[i])?o[i]():o.text():X(o.status+""+o.statusText)}:Lg}async function Lg(){X("No HTTP fetch method available.")}const Rg=t=>t!=null&&t===t,kg=t=>t==="true"||t==="false"||t===!0||t===!1,Ng=t=>!Number.isNaN(Date.parse(t)),yc=t=>!Number.isNaN(+t)&&!(t instanceof Date),zg=t=>yc(t)&&Number.isInteger(+t),bc={boolean:Cd,integer:Wn,number:Wn,date:Sd,string:Dd,unknown:oi},Si=[kg,zg,yc,Ng],Og=["boolean","integer","number","date"];function Gg(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=Si.length,i=Si.map((o,s)=>s+1);for(let o=0,s=0,a,u;o<n;++o)for(u=e?t[o][e]:t[o],a=0;a<r;++a)if(i[a]&&Rg(u)&&!Si[a](u)&&(i[a]=0,++s,s===Si.length))return"string";return Og[i.reduce((o,s)=>o===0?s:o,0)-1]}function Ug(t,e){return e.reduce((n,r)=>(n[r]=Gg(t,r),n),{})}function wc(t){const e=function(n,r){const i={delimiter:t};return cs(n,r?ko(r,i):i)};return e.responseType="text",e}function cs(t,e){return e.header&&(t=e.header.map(li).join(e.delimiter)+`
6
- `+t),Eu(e.delimiter).parse(t+"")}cs.responseType="text";function Hg(t){return typeof Buffer=="function"&&ge(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function ls(t,e){const n=e&&e.property?ii(e.property):oi;return ke(t)&&!Hg(t)?Qg(n(t),e):n(JSON.parse(t))}ls.responseType="json";function Qg(t,e){return!Me(t)&&wd(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const jg={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function vc(t,e){let n,r,i,o;return t=ls(t,e),e&&e.feature?(n=kd,i=e.feature):e&&e.mesh?(n=zd,i=e.mesh,o=jg[e.filter]):X("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):X("Invalid TopoJSON object: "+i),r&&r.features||[r]}vc.responseType="json";const fs={dsv:cs,csv:wc(","),tsv:wc(" "),json:ls,topojson:vc};function Cc(t,e){return arguments.length>1?(fs[t]=e,this):Tt(fs,t)?fs[t]:null}function Ec(t,e,n,r){e=e||{};const i=Cc(e.type||"json");return i||X("Unknown data format type: "+e.type),t=i(t,e),e.parse&&Vg(t,e.parse,n,r),Tt(t,"columns")&&delete t.columns,t}function Vg(t,e,n,r){if(!t.length)return;const i=Cg();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),s,a,u,c,f,l;e==="auto"&&(e=Ug(t,o)),o=Object.keys(e);const h=o.map(p=>{const d=e[p];let g,A;if(d&&(d.startsWith("date:")||d.startsWith("utc:")))return g=d.split(/:(.+)?/,2),A=g[1],(A[0]==="'"&&A[A.length-1]==="'"||A[0]==='"'&&A[A.length-1]==='"')&&(A=A.slice(1,-1)),(g[0]==="utc"?r:n)(A);if(!bc[d])throw Error("Illegal format pattern: "+p+":"+d);return bc[d]});for(u=0,f=t.length,l=o.length;u<f;++u)for(s=t[u],c=0;c<l;++c)a=o[c],s[a]=h[c](s[a])}const Di=Bg(typeof fetch<"u"&&fetch,null);/**
5
+ `)}function c(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?Id(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:u,formatRow:c,formatValue:f}}var Td=Eu(" "),Pd=Td.parseRows;function Rd(t){return t}function Ld(t){if(t==null)return Rd;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],s=t.translate[1];return function(a,u){u||(e=n=0);var c=2,f=a.length,l=new Array(f);for(l[0]=(e+=a[0])*r+o,l[1]=(n+=a[1])*i+s;c<f;)l[c]=a[c],++c;return l}}function kd(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Nd(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return Su(t,n)})}:Su(t,e)}function Su(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=Du(t,e);return n==null&&r==null?{type:"Feature",properties:i,geometry:o}:r==null?{type:"Feature",id:n,properties:i,geometry:o}:{type:"Feature",id:n,bbox:r,properties:i,geometry:o}}function Du(t,e){var n=Ld(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var h=r[f<0?~f:f],p=0,d=h.length;p<d;++p)l.push(n(h[p],p));f<0&&kd(l,d)}function o(f){return n(f)}function s(f){for(var l=[],h=0,p=f.length;h<p;++h)i(f[h],l);return l.length<2&&l.push(l[0]),l}function a(f){for(var l=s(f);l.length<4;)l.push(l[0]);return l}function u(f){return f.map(a)}function c(f){var l=f.type,h;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(c)};case"Point":h=o(f.coordinates);break;case"MultiPoint":h=f.coordinates.map(o);break;case"LineString":h=s(f.arcs);break;case"MultiLineString":h=f.arcs.map(s);break;case"Polygon":h=u(f.arcs);break;case"MultiPolygon":h=f.arcs.map(u);break;default:return null}return{type:l,coordinates:h}}return c(e)}function zd(t,e){var n={},r={},i={},o=[],s=-1;e.forEach(function(c,f){var l=t.arcs[c<0?~c:c],h;l.length<3&&!l[1][0]&&!l[1][1]&&(h=e[++s],e[s]=c,e[f]=h)}),e.forEach(function(c){var f=a(c),l=f[0],h=f[1],p,d;if(p=i[l])if(delete i[p.end],p.push(c),p.end=h,d=r[h]){delete r[d.start];var g=d===p?p:p.concat(d);r[g.start=p.start]=i[g.end=d.end]=g}else r[p.start]=i[p.end]=p;else if(p=r[h])if(delete r[p.start],p.unshift(c),p.start=l,d=i[l]){delete i[d.end];var m=d===p?p:d.concat(p);r[m.start=d.start]=i[m.end=p.end]=m}else r[p.start]=i[p.end]=p;else p=[c],r[p.start=l]=i[p.end=h]=p});function a(c){var f=t.arcs[c<0?~c:c],l=f[0],h;return t.transform?(h=[0,0],f.forEach(function(p){h[0]+=p[0],h[1]+=p[1]})):h=f[f.length-1],c<0?[h,l]:[l,h]}function u(c,f){for(var l in c){var h=c[l];delete f[h.start],delete h.start,delete h.end,h.forEach(function(p){n[p<0?~p:p]=1}),o.push(h)}}return u(i,r),u(r,i),e.forEach(function(c){n[c<0?~c:c]||o.push([c])}),o}function Od(t){return Du(t,Gd.apply(this,arguments))}function Gd(t,e,n){var r,i,o;if(arguments.length>1)r=Ud(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:zd(t,r)}}function Ud(t,e,n){var r=[],i=[],o;function s(l){var h=l<0?~l:l;(i[h]||(i[h]=[])).push({i:l,g:o})}function a(l){l.forEach(s)}function u(l){l.forEach(a)}function c(l){l.forEach(u)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":a(l.arcs);break;case"MultiLineString":case"Polygon":u(l.arcs);break;case"MultiPolygon":c(l.arcs);break}}return f(e),i.forEach(n==null?function(l){r.push(l[0].i)}:function(l){n(l[0].g,l[l.length-1].g)&&r.push(l[0].i)}),r}function Zn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Hd(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function fi(t){let e,n,r;t.length!==2?(e=Zn,n=(a,u)=>Zn(t(a),u),r=(a,u)=>t(a)-u):(e=t===Zn||t===Hd?t:Qd,n=t,r=t);function i(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<0?c=l+1:f=l}while(c<f)}return c}function o(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<=0?c=l+1:f=l}while(c<f)}return c}function s(a,u,c=0,f=a.length){const l=i(a,u,c,f-1);return l>c&&r(a[l-1],u)>-r(a[l],u)?l-1:l}return{left:i,center:s,right:o}}function Qd(){return 0}function Bu(t){return t===null?NaN:+t}const Fu=fi(Zn),Oo=Fu.right;Fu.left,fi(Bu).center;const sn=Oo;function jd(t,e){let n,r;if(e===void 0)for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));else{let i=-1;for(let o of t)(o=e(o,++i,t))!=null&&(n===void 0?o>=o&&(n=r=o):(n>o&&(n=o),r<o&&(r=o)))}return[n,r]}class Tt extends Map{constructor(e,n=Wd){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(Mu(this,e))}has(e){return super.has(Mu(this,e))}set(e,n){return super.set(Vd(this,e),n)}delete(e){return super.delete(Yd(this,e))}}function Mu({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Vd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Yd({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Wd(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Go(t){return t}function hi(t,...e){return Iu(t,Go,Go,e)}function Xd(t,...e){return Iu(t,Array.from,Go,e)}function Iu(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new Tt,u=r[s++];let c=-1;for(const f of o){const l=u(f,++c,o),h=a.get(l);h?h.push(f):a.set(l,[f])}for(const[f,l]of a)a.set(f,i(l,s));return e(a)}(t,0)}var Uo=Math.sqrt(50),Ho=Math.sqrt(10),Qo=Math.sqrt(2);function di(t,e,n){var r,i=-1,o,s,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(a=Tu(t,e,n))===0||!isFinite(a))return[];if(a>0){let u=Math.round(t/a),c=Math.round(e/a);for(u*a<t&&++u,c*a>e&&--c,s=new Array(o=c-u+1);++i<o;)s[i]=(u+i)*a}else{a=-a;let u=Math.round(t*a),c=Math.round(e*a);for(u/a<t&&++u,c/a>e&&--c,s=new Array(o=c-u+1);++i<o;)s[i]=(u+i)/a}return r&&s.reverse(),s}function Tu(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=Uo?10:o>=Ho?5:o>=Qo?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Uo?10:o>=Ho?5:o>=Qo?2:1)}function Pt(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Uo?i*=10:o>=Ho?i*=5:o>=Qo&&(i*=2),e<t?-i:i}function Pu(t,e,n=Bu){if(r=t.length){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),s=+n(t[o],o,t),a=+n(t[o+1],o+1,t);return s+(a-s)*(i-o)}}function Kn(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function pi(t,e){let n=0;if(e===void 0)for(let r of t)(r=+r)&&(n+=r);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}function Zd(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function gi(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function an(t){return t=gi(Math.abs(t)),t?t[1]:NaN}function Kd(t,e){return function(n,r){for(var i=n.length,o=[],s=0,a=t[0],u=0;i>0&&a>0&&(u+a+1>r&&(a=Math.max(1,r-u)),o.push(n.substring(i-=a,i+a)),!((u+=a+1)>r));)a=t[s=(s+1)%t.length];return o.reverse().join(e)}}function qd(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Jd=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function lt(t){if(!(e=Jd.exec(t)))throw new Error("invalid format: "+t);var e;return new jo({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}lt.prototype=jo.prototype;function jo(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}jo.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function _d(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var Ru;function $d(t,e){var n=gi(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Ru=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+gi(t,Math.max(0,e+o-1))[0]}function Lu(t,e){var n=gi(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const ku={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Zd,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Lu(t*100,e),r:Lu,s:$d,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Nu(t){return t}var zu=Array.prototype.map,Ou=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function ep(t){var e=t.grouping===void 0||t.thousands===void 0?Nu:Kd(zu.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?Nu:qd(zu.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"−":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function c(l){l=lt(l);var h=l.fill,p=l.align,d=l.sign,g=l.symbol,m=l.zero,A=l.width,y=l.comma,b=l.precision,C=l.trim,B=l.type;B==="n"?(y=!0,B="g"):ku[B]||(b===void 0&&(b=12),C=!0,B="g"),(m||h==="0"&&p==="=")&&(m=!0,h="0",p="=");var E=g==="$"?n:g==="#"&&/[boxX]/.test(B)?"0"+B.toLowerCase():"",w=g==="$"?r:/[%p]/.test(B)?s:"",X=ku[B],H=/[defgprs%]/.test(B);b=b===void 0?6:/[gprs]/.test(B)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b));function ae(M){var Se=E,_=w,ve,je,Qn;if(B==="c")_=X(M)+_,M="";else{M=+M;var jn=M<0||1/M<0;if(M=isNaN(M)?u:X(Math.abs(M),b),C&&(M=_d(M)),jn&&+M==0&&d!=="+"&&(jn=!1),Se=(jn?d==="("?d:a:d==="-"||d==="("?"":d)+Se,_=(B==="s"?Ou[8+Ru/3]:"")+_+(jn&&d==="("?")":""),H){for(ve=-1,je=M.length;++ve<je;)if(Qn=M.charCodeAt(ve),48>Qn||Qn>57){_=(Qn===46?i+M.slice(ve+1):M.slice(ve))+_,M=M.slice(0,ve);break}}}y&&!m&&(M=e(M,1/0));var Vn=Se.length+M.length+_.length,Ve=Vn<A?new Array(A-Vn+1).join(h):"";switch(y&&m&&(M=e(Ve+M,Ve.length?A-_.length:1/0),Ve=""),p){case"<":M=Se+M+_+Ve;break;case"=":M=Se+Ve+M+_;break;case"^":M=Ve.slice(0,Vn=Ve.length>>1)+Se+M+_+Ve.slice(Vn);break;default:M=Ve+Se+M+_;break}return o(M)}return ae.toString=function(){return l+""},ae}function f(l,h){var p=c((l=lt(l),l.type="f",l)),d=Math.max(-8,Math.min(8,Math.floor(an(h)/3)))*3,g=Math.pow(10,-d),m=Ou[8+d/3];return function(A){return p(g*A)+m}}return{format:c,formatPrefix:f}}var mi,oe,Vo;tp({thousands:",",grouping:[3],currency:["$",""]});function tp(t){return mi=ep(t),oe=mi.format,Vo=mi.formatPrefix,mi}function Gu(t){return Math.max(0,-an(Math.abs(t)))}function Uu(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(an(e)/3)))*3-an(Math.abs(t)))}function Hu(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,an(e)-an(t))+1}var Yo=new Date,Wo=new Date;function $(t,e,n,r){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=function(o){return t(o=new Date(+o)),o},i.ceil=function(o){return t(o=new Date(o-1)),e(o,1),t(o),o},i.round=function(o){var s=i(o),a=i.ceil(o);return o-s<a-o?s:a},i.offset=function(o,s){return e(o=new Date(+o),s==null?1:Math.floor(s)),o},i.range=function(o,s,a){var u=[],c;if(o=i.ceil(o),a=a==null?1:Math.floor(a),!(o<s)||!(a>0))return u;do u.push(c=new Date(+o)),e(o,a),t(o);while(c<o&&o<s);return u},i.filter=function(o){return $(function(s){if(s>=s)for(;t(s),!o(s);)s.setTime(s-1)},function(s,a){if(s>=s)if(a<0)for(;++a<=0;)for(;e(s,-1),!o(s););else for(;--a>=0;)for(;e(s,1),!o(s););})},n&&(i.count=function(o,s){return Yo.setTime(+o),Wo.setTime(+s),t(Yo),t(Wo),Math.floor(n(Yo,Wo))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(s){return r(s)%o===0}:function(s){return i.count(0,s)%o===0}):i}),i}var Ai=$(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});Ai.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?$(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):Ai};const Xo=Ai;Ai.range;const et=1e3,Me=et*60,tt=Me*60,Rt=tt*24,Zo=Rt*7,Qu=Rt*30,Ko=Rt*365;var ju=$(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*et)},function(t,e){return(e-t)/et},function(t){return t.getUTCSeconds()});const ft=ju;ju.range;var Vu=$(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*et)},function(t,e){t.setTime(+t+e*Me)},function(t,e){return(e-t)/Me},function(t){return t.getMinutes()});const qo=Vu;Vu.range;var Yu=$(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*et-t.getMinutes()*Me)},function(t,e){t.setTime(+t+e*tt)},function(t,e){return(e-t)/tt},function(t){return t.getHours()});const Jo=Yu;Yu.range;var Wu=$(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Me)/Rt,t=>t.getDate()-1);const Lt=Wu;Wu.range;function kt(t){return $(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,n){e.setDate(e.getDate()+n*7)},function(e,n){return(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*Me)/Zo})}var qn=kt(0),xi=kt(1),np=kt(2),rp=kt(3),un=kt(4),ip=kt(5),op=kt(6);qn.range,xi.range,np.range,rp.range,un.range,ip.range,op.range;var Xu=$(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()});const yi=Xu;Xu.range;var _o=$(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});_o.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:$(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)})};const ht=_o;_o.range;var Zu=$(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Me)},function(t,e){return(e-t)/Me},function(t){return t.getUTCMinutes()});const $o=Zu;Zu.range;var Ku=$(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*tt)},function(t,e){return(e-t)/tt},function(t){return t.getUTCHours()});const es=Ku;Ku.range;var qu=$(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/Rt},function(t){return t.getUTCDate()-1});const Nt=qu;qu.range;function zt(t){return $(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCDate(e.getUTCDate()+n*7)},function(e,n){return(n-e)/Zo})}var Jn=zt(0),bi=zt(1),sp=zt(2),ap=zt(3),cn=zt(4),up=zt(5),cp=zt(6);Jn.range,bi.range,sp.range,ap.range,cn.range,up.range,cp.range;var Ju=$(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()});const wi=Ju;Ju.range;var ts=$(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});ts.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:$(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})};const dt=ts;ts.range;function _u(t,e,n,r,i,o){const s=[[ft,1,et],[ft,5,5*et],[ft,15,15*et],[ft,30,30*et],[o,1,Me],[o,5,5*Me],[o,15,15*Me],[o,30,30*Me],[i,1,tt],[i,3,3*tt],[i,6,6*tt],[i,12,12*tt],[r,1,Rt],[r,2,2*Rt],[n,1,Zo],[e,1,Qu],[e,3,3*Qu],[t,1,Ko]];function a(c,f,l){const h=f<c;h&&([c,f]=[f,c]);const p=l&&typeof l.range=="function"?l:u(c,f,l),d=p?p.range(c,+f+1):[];return h?d.reverse():d}function u(c,f,l){const h=Math.abs(f-c)/l,p=fi(([,,m])=>m).right(s,h);if(p===s.length)return t.every(Pt(c/Ko,f/Ko,l));if(p===0)return Xo.every(Math.max(Pt(c,f,l),1));const[d,g]=s[h/s[p-1][2]<s[p][2]/h?p-1:p];return d.every(g)}return[a,u]}const[lp,fp]=_u(dt,wi,Jn,Nt,es,$o),[hp,dp]=_u(ht,yi,qn,Lt,Jo,qo),_n="year",$n="quarter",er="month",tr="week",nr="date",vi="day",ns="dayofyear",rr="hours",ir="minutes",or="seconds",Ci="milliseconds";[_n,$n,er,tr,nr,vi,ns,rr,ir,or,Ci].reduce((t,e,n)=>(t[e]=1+n,t),{});const pp={[_n]:ht,[$n]:yi.every(3),[er]:yi,[tr]:qn,[nr]:Lt,[vi]:Lt,[ns]:Lt,[rr]:Jo,[ir]:qo,[or]:ft,[Ci]:Xo},gp={[_n]:dt,[$n]:wi.every(3),[er]:wi,[tr]:Jn,[nr]:Nt,[vi]:Nt,[ns]:Nt,[rr]:es,[ir]:$o,[or]:ft,[Ci]:Xo};function mp(t){return pp[t]}function Ap(t){return gp[t]}function rs(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function is(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function sr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function $u(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,s=t.shortDays,a=t.months,u=t.shortMonths,c=ar(i),f=ur(i),l=ar(o),h=ur(o),p=ar(s),d=ur(s),g=ar(a),m=ur(a),A=ar(u),y=ur(u),b={a:jn,A:Vn,b:Ve,B:cE,c:null,d:oc,e:oc,f:Up,g:qp,G:_p,H:zp,I:Op,j:Gp,L:sc,m:Hp,M:Qp,p:lE,q:fE,Q:hc,s:dc,S:jp,u:Vp,U:Yp,V:Wp,w:Xp,W:Zp,x:null,X:null,y:Kp,Y:Jp,Z:$p,"%":fc},C={a:hE,A:dE,b:pE,B:gE,c:null,d:uc,e:uc,f:rg,g:dg,G:gg,H:eg,I:tg,j:ng,L:cc,m:ig,M:og,p:mE,q:AE,Q:hc,s:dc,S:sg,u:ag,U:ug,V:cg,w:lg,W:fg,x:null,X:null,y:hg,Y:pg,Z:mg,"%":fc},B={a:ae,A:M,b:Se,B:_,c:ve,d:rc,e:rc,f:Rp,g:nc,G:tc,H:ic,I:ic,j:Mp,L:Pp,m:Fp,M:Ip,p:H,q:Bp,Q:kp,s:Np,S:Tp,u:vp,U:Cp,V:Ep,w:wp,W:Sp,x:je,X:Qn,y:nc,Y:tc,Z:Dp,"%":Lp};b.x=E(n,b),b.X=E(r,b),b.c=E(e,b),C.x=E(n,C),C.X=E(r,C),C.c=E(e,C);function E(D,T){return function(k){var v=[],Ce=-1,G=0,De=D.length,Be,on,_h;for(k instanceof Date||(k=new Date(+k));++Ce<De;)D.charCodeAt(Ce)===37&&(v.push(D.slice(G,Ce)),(on=ec[Be=D.charAt(++Ce)])!=null?Be=D.charAt(++Ce):on=Be==="e"?" ":"0",(_h=T[Be])&&(Be=_h(k,on)),v.push(Be),G=Ce+1);return v.push(D.slice(G,Ce)),v.join("")}}function w(D,T){return function(k){var v=sr(1900,void 0,1),Ce=X(v,D,k+="",0),G,De;if(Ce!=k.length)return null;if("Q"in v)return new Date(v.Q);if("s"in v)return new Date(v.s*1e3+("L"in v?v.L:0));if(T&&!("Z"in v)&&(v.Z=0),"p"in v&&(v.H=v.H%12+v.p*12),v.m===void 0&&(v.m="q"in v?v.q:0),"V"in v){if(v.V<1||v.V>53)return null;"w"in v||(v.w=1),"Z"in v?(G=is(sr(v.y,0,1)),De=G.getUTCDay(),G=De>4||De===0?bi.ceil(G):bi(G),G=Nt.offset(G,(v.V-1)*7),v.y=G.getUTCFullYear(),v.m=G.getUTCMonth(),v.d=G.getUTCDate()+(v.w+6)%7):(G=rs(sr(v.y,0,1)),De=G.getDay(),G=De>4||De===0?xi.ceil(G):xi(G),G=Lt.offset(G,(v.V-1)*7),v.y=G.getFullYear(),v.m=G.getMonth(),v.d=G.getDate()+(v.w+6)%7)}else("W"in v||"U"in v)&&("w"in v||(v.w="u"in v?v.u%7:"W"in v?1:0),De="Z"in v?is(sr(v.y,0,1)).getUTCDay():rs(sr(v.y,0,1)).getDay(),v.m=0,v.d="W"in v?(v.w+6)%7+v.W*7-(De+5)%7:v.w+v.U*7-(De+6)%7);return"Z"in v?(v.H+=v.Z/100|0,v.M+=v.Z%100,is(v)):rs(v)}}function X(D,T,k,v){for(var Ce=0,G=T.length,De=k.length,Be,on;Ce<G;){if(v>=De)return-1;if(Be=T.charCodeAt(Ce++),Be===37){if(Be=T.charAt(Ce++),on=B[Be in ec?T.charAt(Ce++):Be],!on||(v=on(D,k,v))<0)return-1}else if(Be!=k.charCodeAt(v++))return-1}return v}function H(D,T,k){var v=c.exec(T.slice(k));return v?(D.p=f.get(v[0].toLowerCase()),k+v[0].length):-1}function ae(D,T,k){var v=p.exec(T.slice(k));return v?(D.w=d.get(v[0].toLowerCase()),k+v[0].length):-1}function M(D,T,k){var v=l.exec(T.slice(k));return v?(D.w=h.get(v[0].toLowerCase()),k+v[0].length):-1}function Se(D,T,k){var v=A.exec(T.slice(k));return v?(D.m=y.get(v[0].toLowerCase()),k+v[0].length):-1}function _(D,T,k){var v=g.exec(T.slice(k));return v?(D.m=m.get(v[0].toLowerCase()),k+v[0].length):-1}function ve(D,T,k){return X(D,e,T,k)}function je(D,T,k){return X(D,n,T,k)}function Qn(D,T,k){return X(D,r,T,k)}function jn(D){return s[D.getDay()]}function Vn(D){return o[D.getDay()]}function Ve(D){return u[D.getMonth()]}function cE(D){return a[D.getMonth()]}function lE(D){return i[+(D.getHours()>=12)]}function fE(D){return 1+~~(D.getMonth()/3)}function hE(D){return s[D.getUTCDay()]}function dE(D){return o[D.getUTCDay()]}function pE(D){return u[D.getUTCMonth()]}function gE(D){return a[D.getUTCMonth()]}function mE(D){return i[+(D.getUTCHours()>=12)]}function AE(D){return 1+~~(D.getUTCMonth()/3)}return{format:function(D){var T=E(D+="",b);return T.toString=function(){return D},T},parse:function(D){var T=w(D+="",!1);return T.toString=function(){return D},T},utcFormat:function(D){var T=E(D+="",C);return T.toString=function(){return D},T},utcParse:function(D){var T=w(D+="",!0);return T.toString=function(){return D},T}}}var ec={"-":"",_:" ",0:"0"},ee=/^\s*\d+/,xp=/^%/,yp=/[\\^$*+?|[\]().{}]/g;function R(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function bp(t){return t.replace(yp,"\\$&")}function ar(t){return new RegExp("^(?:"+t.map(bp).join("|")+")","i")}function ur(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function wp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function vp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Cp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Ep(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Sp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function tc(t,e,n){var r=ee.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function nc(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Dp(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Bp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function Fp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function rc(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Mp(t,e,n){var r=ee.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function ic(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Ip(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Tp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Pp(t,e,n){var r=ee.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Rp(t,e,n){var r=ee.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Lp(t,e,n){var r=xp.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function kp(t,e,n){var r=ee.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Np(t,e,n){var r=ee.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function oc(t,e){return R(t.getDate(),e,2)}function zp(t,e){return R(t.getHours(),e,2)}function Op(t,e){return R(t.getHours()%12||12,e,2)}function Gp(t,e){return R(1+Lt.count(ht(t),t),e,3)}function sc(t,e){return R(t.getMilliseconds(),e,3)}function Up(t,e){return sc(t,e)+"000"}function Hp(t,e){return R(t.getMonth()+1,e,2)}function Qp(t,e){return R(t.getMinutes(),e,2)}function jp(t,e){return R(t.getSeconds(),e,2)}function Vp(t){var e=t.getDay();return e===0?7:e}function Yp(t,e){return R(qn.count(ht(t)-1,t),e,2)}function ac(t){var e=t.getDay();return e>=4||e===0?un(t):un.ceil(t)}function Wp(t,e){return t=ac(t),R(un.count(ht(t),t)+(ht(t).getDay()===4),e,2)}function Xp(t){return t.getDay()}function Zp(t,e){return R(xi.count(ht(t)-1,t),e,2)}function Kp(t,e){return R(t.getFullYear()%100,e,2)}function qp(t,e){return t=ac(t),R(t.getFullYear()%100,e,2)}function Jp(t,e){return R(t.getFullYear()%1e4,e,4)}function _p(t,e){var n=t.getDay();return t=n>=4||n===0?un(t):un.ceil(t),R(t.getFullYear()%1e4,e,4)}function $p(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+R(e/60|0,"0",2)+R(e%60,"0",2)}function uc(t,e){return R(t.getUTCDate(),e,2)}function eg(t,e){return R(t.getUTCHours(),e,2)}function tg(t,e){return R(t.getUTCHours()%12||12,e,2)}function ng(t,e){return R(1+Nt.count(dt(t),t),e,3)}function cc(t,e){return R(t.getUTCMilliseconds(),e,3)}function rg(t,e){return cc(t,e)+"000"}function ig(t,e){return R(t.getUTCMonth()+1,e,2)}function og(t,e){return R(t.getUTCMinutes(),e,2)}function sg(t,e){return R(t.getUTCSeconds(),e,2)}function ag(t){var e=t.getUTCDay();return e===0?7:e}function ug(t,e){return R(Jn.count(dt(t)-1,t),e,2)}function lc(t){var e=t.getUTCDay();return e>=4||e===0?cn(t):cn.ceil(t)}function cg(t,e){return t=lc(t),R(cn.count(dt(t),t)+(dt(t).getUTCDay()===4),e,2)}function lg(t){return t.getUTCDay()}function fg(t,e){return R(bi.count(dt(t)-1,t),e,2)}function hg(t,e){return R(t.getUTCFullYear()%100,e,2)}function dg(t,e){return t=lc(t),R(t.getUTCFullYear()%100,e,2)}function pg(t,e){return R(t.getUTCFullYear()%1e4,e,4)}function gg(t,e){var n=t.getUTCDay();return t=n>=4||n===0?cn(t):cn.ceil(t),R(t.getUTCFullYear()%1e4,e,4)}function mg(){return"+0000"}function fc(){return"%"}function hc(t){return+t}function dc(t){return Math.floor(+t/1e3)}var ln,os,pc,ss,gc;Ag({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function Ag(t){return ln=$u(t),os=ln.format,pc=ln.parse,ss=ln.utcFormat,gc=ln.utcParse,ln}function cr(t){const e={};return n=>e[n]||(e[n]=t(n))}function xg(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=yg(r,i);const s=o<r.length?r.slice(o):"";for(;--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function yg(t,e){let n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}function bg(t){const e=cr(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=lt(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return xg(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=lt(s??",f");const a=Pt(r,i,o),u=Math.max(Math.abs(r),Math.abs(i));let c;if(s.precision==null)switch(s.type){case"s":return isNaN(c=Uu(a,u))||(s.precision=c),n(s,u);case"":case"e":case"g":case"p":case"r":{isNaN(c=Hu(a,u))||(s.precision=c-(s.type==="e"));break}case"f":case"%":{isNaN(c=Gu(a))||(s.precision=c-(s.type==="%")*2);break}}return e(s)}}}wg();function wg(){return bg({format:oe,formatPrefix:Vo})}function mc(t,e,n){n=n||{},Le(n)||Y("Invalid time multi-format specifier: ".concat(n));const r=e(or),i=e(ir),o=e(rr),s=e(nr),a=e(tr),u=e(er),c=e($n),f=e(_n),l=t(n[Ci]||".%L"),h=t(n[or]||":%S"),p=t(n[ir]||"%I:%M"),d=t(n[rr]||"%I %p"),g=t(n[nr]||n[vi]||"%a %d"),m=t(n[tr]||"%b %d"),A=t(n[er]||"%B"),y=t(n[$n]||"%B"),b=t(n[_n]||"%Y");return C=>(r(C)<C?l:i(C)<C?h:o(C)<C?p:s(C)<C?d:u(C)<C?a(C)<C?g:m:f(C)<C?c(C)<C?A:y:b)(C)}function Ac(t){const e=cr(t.format),n=cr(t.utcFormat);return{timeFormat:r=>W(r)?e(r):mc(e,mp,r),utcFormat:r=>W(r)?n(r):mc(n,Ap,r),timeParse:cr(t.parse),utcParse:cr(t.utcParse)}}let as;vg();function vg(){return as=Ac({format:os,parse:pc,utcFormat:ss,utcParse:gc})}function Cg(t){return Ac($u(t))}function Eg(t){return arguments.length?as=Cg(t):as}const Sg=/^(data:|([A-Za-z]+:)?\/\/)/,Dg=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,Bg=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,xc="file://";function Fg(t,e){return n=>({options:n||{},sanitize:Ig,load:Mg,fileAccess:!!e,file:Tg(e),http:Rg(t)})}async function Mg(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function Ig(t,e){e=Lo({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=Dg.test(t.replace(Bg,""));(t==null||typeof t!="string"||!a)&&Y("Sanitize failure, invalid URI: "+ci(t));const u=Sg.test(t);return(s=e.baseURL)&&!u&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(xc))||e.mode==="file"||e.mode!=="http"&&!u&&n,i?t=t.slice(xc.length):t.startsWith("//")&&(e.defaultProtocol==="file"?(t=t.slice(2),o=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!o}),r.href=t,e.target&&(r.target=e.target+""),e.rel&&(r.rel=e.rel+""),e.context==="image"&&e.crossOrigin&&(r.crossOrigin=e.crossOrigin+""),r}function Tg(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):Pg}async function Pg(){Y("No file system access.")}function Rg(t){return t?async function(e,n){const r=Lo({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?ge(o[i])?o[i]():o.text():Y(o.status+""+o.statusText)}:Lg}async function Lg(){Y("No HTTP fetch method available.")}const kg=t=>t!=null&&t===t,Ng=t=>t==="true"||t==="false"||t===!0||t===!1,zg=t=>!Number.isNaN(Date.parse(t)),yc=t=>!Number.isNaN(+t)&&!(t instanceof Date),Og=t=>yc(t)&&Number.isInteger(+t),bc={boolean:Ed,integer:Wn,number:Wn,date:Dd,string:Bd,unknown:ii},Ei=[Ng,Og,yc,zg],Gg=["boolean","integer","number","date"];function Ug(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=Ei.length,i=Ei.map((o,s)=>s+1);for(let o=0,s=0,a,u;o<n;++o)for(u=e?t[o][e]:t[o],a=0;a<r;++a)if(i[a]&&kg(u)&&!Ei[a](u)&&(i[a]=0,++s,s===Ei.length))return"string";return Gg[i.reduce((o,s)=>o===0?s:o,0)-1]}function Hg(t,e){return e.reduce((n,r)=>(n[r]=Ug(t,r),n),{})}function wc(t){const e=function(n,r){const i={delimiter:t};return us(n,r?Lo(r,i):i)};return e.responseType="text",e}function us(t,e){return e.header&&(t=e.header.map(ci).join(e.delimiter)+`
6
+ `+t),Eu(e.delimiter).parse(t+"")}us.responseType="text";function Qg(t){return typeof Buffer=="function"&&ge(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function cs(t,e){const n=e&&e.property?ri(e.property):ii;return Le(t)&&!Qg(t)?jg(n(t),e):n(JSON.parse(t))}cs.responseType="json";function jg(t,e){return!Fe(t)&&vd(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const Vg={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function vc(t,e){let n,r,i,o;return t=cs(t,e),e&&e.feature?(n=Nd,i=e.feature):e&&e.mesh?(n=Od,i=e.mesh,o=Vg[e.filter]):Y("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):Y("Invalid TopoJSON object: "+i),r&&r.features||[r]}vc.responseType="json";const ls={dsv:us,csv:wc(","),tsv:wc(" "),json:cs,topojson:vc};function Cc(t,e){return arguments.length>1?(ls[t]=e,this):It(ls,t)?ls[t]:null}function Ec(t,e,n,r){e=e||{};const i=Cc(e.type||"json");return i||Y("Unknown data format type: "+e.type),t=i(t,e),e.parse&&Yg(t,e.parse,n,r),It(t,"columns")&&delete t.columns,t}function Yg(t,e,n,r){if(!t.length)return;const i=Eg();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),s,a,u,c,f,l;e==="auto"&&(e=Hg(t,o)),o=Object.keys(e);const h=o.map(p=>{const d=e[p];let g,m;if(d&&(d.startsWith("date:")||d.startsWith("utc:")))return g=d.split(/:(.+)?/,2),m=g[1],(m[0]==="'"&&m[m.length-1]==="'"||m[0]==='"'&&m[m.length-1]==='"')&&(m=m.slice(1,-1)),(g[0]==="utc"?r:n)(m);if(!bc[d])throw Error("Illegal format pattern: "+p+":"+d);return bc[d]});for(u=0,f=t.length,l=o.length;u<f;++u)for(s=t[u],c=0;c<l;++c)a=o[c],s[a]=h[c](s[a])}const Si=Fg(typeof fetch<"u"&&fetch,null);/**
7
7
  * @license
8
8
  * Copyright 2017 Google LLC
9
9
  * SPDX-License-Identifier: BSD-3-Clause
10
- */var hs;const Bi=window,hn=Bi.trustedTypes,Sc=hn?hn.createPolicy("lit-html",{createHTML:t=>t}):void 0,gt=`lit$${(Math.random()+"").slice(9)}$`,Dc="?"+gt,Yg=`<${Dc}>`,dn=document,lr=(t="")=>dn.createComment(t),fr=t=>t===null||typeof t!="object"&&typeof t!="function",Bc=Array.isArray,Wg=t=>Bc(t)||typeof(t==null?void 0:t[Symbol.iterator])=="function",hr=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Fc=/-->/g,Mc=/>/g,Gt=RegExp(`>|[
10
+ */var fs;const Di=window,fn=Di.trustedTypes,Sc=fn?fn.createPolicy("lit-html",{createHTML:t=>t}):void 0,pt=`lit$${(Math.random()+"").slice(9)}$`,Dc="?"+pt,Wg=`<${Dc}>`,hn=document,lr=(t="")=>hn.createComment(t),fr=t=>t===null||typeof t!="object"&&typeof t!="function",Bc=Array.isArray,Xg=t=>Bc(t)||typeof(t==null?void 0:t[Symbol.iterator])=="function",hr=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Fc=/-->/g,Mc=/>/g,Ot=RegExp(`>|[
11
11
  \f\r](?:([^\\s"'>=/]+)([
12
12
  \f\r]*=[
13
13
  \f\r]*(?:[^
14
- \f\r"'\`<>=]|("|')|))|$)`,"g"),Ic=/'/g,Tc=/"/g,Pc=/^(?:script|style|textarea|title)$/i,Xg=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),rt=Xg(1),dr=Symbol.for("lit-noChange"),te=Symbol.for("lit-nothing"),Lc=new WeakMap,pn=dn.createTreeWalker(dn,129,null,!1),Zg=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",s=hr;for(let u=0;u<n;u++){const c=t[u];let f,l,h=-1,p=0;for(;p<c.length&&(s.lastIndex=p,l=s.exec(c),l!==null);)p=s.lastIndex,s===hr?l[1]==="!--"?s=Fc:l[1]!==void 0?s=Mc:l[2]!==void 0?(Pc.test(l[2])&&(i=RegExp("</"+l[2],"g")),s=Gt):l[3]!==void 0&&(s=Gt):s===Gt?l[0]===">"?(s=i!=null?i:hr,h=-1):l[1]===void 0?h=-2:(h=s.lastIndex-l[2].length,f=l[1],s=l[3]===void 0?Gt:l[3]==='"'?Tc:Ic):s===Tc||s===Ic?s=Gt:s===Fc||s===Mc?s=hr:(s=Gt,i=void 0);const d=s===Gt&&t[u+1].startsWith("/>")?" ":"";o+=s===hr?c+Yg:h>=0?(r.push(f),c.slice(0,h)+"$lit$"+c.slice(h)+gt+d):c+gt+(h===-2?(r.push(void 0),u):d)}const a=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[Sc!==void 0?Sc.createHTML(a):a,r]};class pr{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,s=0;const a=e.length-1,u=this.parts,[c,f]=Zg(e,n);if(this.el=pr.createElement(c,r),pn.currentNode=this.el.content,n===2){const l=this.el.content,h=l.firstChild;h.remove(),l.append(...h.childNodes)}for(;(i=pn.nextNode())!==null&&u.length<a;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const h of i.getAttributeNames())if(h.endsWith("$lit$")||h.startsWith(gt)){const p=f[s++];if(l.push(h),p!==void 0){const d=i.getAttribute(p.toLowerCase()+"$lit$").split(gt),g=/([.?@])?(.*)/.exec(p);u.push({type:1,index:o,name:g[2],strings:d,ctor:g[1]==="."?qg:g[1]==="?"?_g:g[1]==="@"?$g:Fi})}else u.push({type:6,index:o})}for(const h of l)i.removeAttribute(h)}if(Pc.test(i.tagName)){const l=i.textContent.split(gt),h=l.length-1;if(h>0){i.textContent=hn?hn.emptyScript:"";for(let p=0;p<h;p++)i.append(l[p],lr()),pn.nextNode(),u.push({type:2,index:++o});i.append(l[h],lr())}}}else if(i.nodeType===8)if(i.data===Dc)u.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(gt,l+1))!==-1;)u.push({type:7,index:o}),l+=gt.length-1}o++}}static createElement(e,n){const r=dn.createElement("template");return r.innerHTML=e,r}}function gn(t,e,n=t,r){var i,o,s,a;if(e===dr)return e;let u=r!==void 0?(i=n._$Co)===null||i===void 0?void 0:i[r]:n._$Cl;const c=fr(e)?void 0:e._$litDirective$;return(u==null?void 0:u.constructor)!==c&&((o=u==null?void 0:u._$AO)===null||o===void 0||o.call(u,!1),c===void 0?u=void 0:(u=new c(t),u._$AT(t,n,r)),r!==void 0?((s=(a=n)._$Co)!==null&&s!==void 0?s:a._$Co=[])[r]=u:n._$Cl=u),u!==void 0&&(e=gn(t,u._$AS(t,e.values),u,r)),e}class Kg{constructor(e,n){this.u=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:dn).importNode(r,!0);pn.currentNode=o;let s=pn.nextNode(),a=0,u=0,c=i[0];for(;c!==void 0;){if(a===c.index){let f;c.type===2?f=new gr(s,s.nextSibling,this,e):c.type===1?f=new c.ctor(s,c.name,c.strings,this,e):c.type===6&&(f=new em(s,this,e)),this.u.push(f),c=i[++u]}a!==(c==null?void 0:c.index)&&(s=pn.nextNode(),a++)}return o}p(e){let n=0;for(const r of this.u)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class gr{constructor(e,n,r,i){var o;this.type=2,this._$AH=te,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cm=(o=i==null?void 0:i.isConnected)===null||o===void 0||o}get _$AU(){var e,n;return(n=(e=this._$AM)===null||e===void 0?void 0:e._$AU)!==null&&n!==void 0?n:this._$Cm}get parentNode(){let e=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&e.nodeType===11&&(e=n.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,n=this){e=gn(this,e,n),fr(e)?e===te||e==null||e===""?(this._$AH!==te&&this._$AR(),this._$AH=te):e!==this._$AH&&e!==dr&&this.g(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):Wg(e)?this.k(e):this.g(e)}O(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}g(e){this._$AH!==te&&fr(this._$AH)?this._$AA.nextSibling.data=e:this.T(dn.createTextNode(e)),this._$AH=e}$(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=pr.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.p(r);else{const s=new Kg(o,this),a=s.v(this.options);s.p(r),this.T(a),this._$AH=s}}_$AC(e){let n=Lc.get(e.strings);return n===void 0&&Lc.set(e.strings,n=new pr(e)),n}k(e){Bc(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let r,i=0;for(const o of e)i===n.length?n.push(r=new gr(this.O(lr()),this.O(lr()),this,this.options)):r=n[i],r._$AI(o),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,n){var r;for((r=this._$AP)===null||r===void 0||r.call(this,!1,!0,n);e&&e!==this._$AB;){const i=e.nextSibling;e.remove(),e=i}}setConnected(e){var n;this._$AM===void 0&&(this._$Cm=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class Fi{constructor(e,n,r,i,o){this.type=1,this._$AH=te,this._$AN=void 0,this.element=e,this.name=n,this._$AM=i,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=te}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const o=this.strings;let s=!1;if(o===void 0)e=gn(this,e,n,0),s=!fr(e)||e!==this._$AH&&e!==dr,s&&(this._$AH=e);else{const a=e;let u,c;for(e=o[0],u=0;u<o.length-1;u++)c=gn(this,a[r+u],n,u),c===dr&&(c=this._$AH[u]),s||(s=!fr(c)||c!==this._$AH[u]),c===te?e=te:e!==te&&(e+=(c!=null?c:"")+o[u+1]),this._$AH[u]=c}s&&!i&&this.j(e)}j(e){e===te?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class qg extends Fi{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===te?void 0:e}}const Jg=hn?hn.emptyScript:"";class _g extends Fi{constructor(){super(...arguments),this.type=4}j(e){e&&e!==te?this.element.setAttribute(this.name,Jg):this.element.removeAttribute(this.name)}}class $g extends Fi{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=gn(this,e,n,0))!==null&&r!==void 0?r:te)===dr)return;const i=this._$AH,o=e===te&&i!==te||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,s=e!==te&&(i===te||o);o&&this.element.removeEventListener(this.name,this,i),s&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var n,r;typeof this._$AH=="function"?this._$AH.call((r=(n=this.options)===null||n===void 0?void 0:n.host)!==null&&r!==void 0?r:this.element,e):this._$AH.handleEvent(e)}}class em{constructor(e,n,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=n,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){gn(this,e)}}const Rc=Bi.litHtmlPolyfillSupport;Rc==null||Rc(pr,gr),((hs=Bi.litHtmlVersions)!==null&&hs!==void 0?hs:Bi.litHtmlVersions=[]).push("2.4.0");const kc=(t,e,n)=>{var r,i;const o=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let s=o._$litPart$;if(s===void 0){const a=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;o._$litPart$=s=new gr(e.insertBefore(lr(),a),a,void 0,n!=null?n:{})}return s._$AI(t),s},Nc=1;function ds(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,s=.5,a=0;const c=f=>(f+s-t[0])/n*r+e[0];return c.invert=f=>(f-e[0])/r*n+t[0]-s,c.domain=function(f){if(arguments.length){if(t=Qd(f),n=t[1]-t[0],n<Nc){n=Nc;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return c}else return t},c.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],c):e},c.numberingOffset=function(f){return arguments.length?(a=f,c):a},c.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),c):i},c.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),c):i},c.paddingOuter=function(f){return arguments.length?(o=f,c):o},c.align=function(f){return arguments.length?(s=Math.max(0,Math.min(1,f)),c):s},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=f=>{const l=c.align(),h=c.numberingOffset();return pi(t[0]-l+h,t[1]-l+h,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(p=>p-a)},c.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const p=Lt(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?se(","):se(".3s");return d=>p(d+a)},c.copy=()=>ds().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),c}function tm(){const t=ds().numberingOffset(1);let e;t.genome=function(r){return arguments.length?(e=r,t):e},t.ticks=r=>{if(!e)return[];const i=t.domain(),o=t.numberingOffset(),[s,a]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),u=Math.max(1,Lt(i[0],i[1],r)),c=[];for(let f=s.index;f<=a.index;f++){const l=e.chromosomes[f],h=Math.max(l.continuousStart+u,i[0]-(i[0]-l.continuousStart)%u),p=Math.min(l.continuousEnd-u/4,i[1]+1);for(let d=h;d<=p;d+=u){const g=d-o;g>=i[0]&&g<i[1]&&c.push(g)}}return c},t.tickFormat=(r,i)=>{if(!e)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const o=t.domain(),s=o[1]-o[0],a=t.numberingOffset(),c=Lt(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?se(","):se(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>c(f(l)+a)};const n=t.copy;return t.copy=()=>n().genome(e),t}function nm(t){return t.type=="locus"}function Ye(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function mt(t,e){switch(arguments.length){case 0:break;case 1:{typeof t=="function"?this.interpolator(t):this.range(t);break}default:{this.domain(t),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const ps=Symbol("implicit");function gs(){var t=new Pt,e=[],n=[],r=ps;function i(o){let s=t.get(o);if(s===void 0){if(r!==ps)return r;t.set(o,s=e.push(o)-1)}return n[s%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Pt;for(const s of o)t.has(s)||t.set(s,e.push(s)-1);return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return gs(e,n).unknown(r)},Ye.apply(i,arguments),i}function mn(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function mr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function At(){}var Ut=.7,An=1/Ut,xn="\\s*([+-]?\\d+)\\s*",Ar="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",We="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",rm=/^#([0-9a-f]{3,8})$/,im=new RegExp(`^rgb\\(${xn},${xn},${xn}\\)$`),om=new RegExp(`^rgb\\(${We},${We},${We}\\)$`),sm=new RegExp(`^rgba\\(${xn},${xn},${xn},${Ar}\\)$`),am=new RegExp(`^rgba\\(${We},${We},${We},${Ar}\\)$`),um=new RegExp(`^hsl\\(${Ar},${We},${We}\\)$`),cm=new RegExp(`^hsla\\(${Ar},${We},${We},${Ar}\\)$`),zc={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};mn(At,Ht,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Oc,formatHex:Oc,formatHex8:lm,formatHsl:fm,formatRgb:Gc,toString:Gc});function Oc(){return this.rgb().formatHex()}function lm(){return this.rgb().formatHex8()}function fm(){return Vc(this).formatHsl()}function Gc(){return this.rgb().formatRgb()}function Ht(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=rm.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Uc(e):n===3?new ne(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Mi(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Mi(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=im.exec(t))?new ne(e[1],e[2],e[3],1):(e=om.exec(t))?new ne(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=sm.exec(t))?Mi(e[1],e[2],e[3],e[4]):(e=am.exec(t))?Mi(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=um.exec(t))?jc(e[1],e[2]/100,e[3]/100,1):(e=cm.exec(t))?jc(e[1],e[2]/100,e[3]/100,e[4]):zc.hasOwnProperty(t)?Uc(zc[t]):t==="transparent"?new ne(NaN,NaN,NaN,0):null}function Uc(t){return new ne(t>>16&255,t>>8&255,t&255,1)}function Mi(t,e,n,r){return r<=0&&(t=e=n=NaN),new ne(t,e,n,r)}function ms(t){return t instanceof At||(t=Ht(t)),t?(t=t.rgb(),new ne(t.r,t.g,t.b,t.opacity)):new ne}function Ii(t,e,n,r){return arguments.length===1?ms(t):new ne(t,e,n,r==null?1:r)}function ne(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}mn(ne,Ii,mr(At,{brighter(t){return t=t==null?An:Math.pow(An,t),new ne(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Ut:Math.pow(Ut,t),new ne(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ne(Qt(this.r),Qt(this.g),Qt(this.b),Ti(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Hc,formatHex:Hc,formatHex8:hm,formatRgb:Qc,toString:Qc}));function Hc(){return`#${jt(this.r)}${jt(this.g)}${jt(this.b)}`}function hm(){return`#${jt(this.r)}${jt(this.g)}${jt(this.b)}${jt((isNaN(this.opacity)?1:this.opacity)*255)}`}function Qc(){const t=Ti(this.opacity);return`${t===1?"rgb(":"rgba("}${Qt(this.r)}, ${Qt(this.g)}, ${Qt(this.b)}${t===1?")":`, ${t})`}`}function Ti(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Qt(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function jt(t){return t=Qt(t),(t<16?"0":"")+t.toString(16)}function jc(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new ze(t,e,n,r)}function Vc(t){if(t instanceof ze)return new ze(t.h,t.s,t.l,t.opacity);if(t instanceof At||(t=Ht(t)),!t)return new ze;if(t instanceof ze)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,a=o-i,u=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=u<.5?o+i:2-o-i,s*=60):a=u>0&&u<1?0:s,new ze(s,a,u,t.opacity)}function As(t,e,n,r){return arguments.length===1?Vc(t):new ze(t,e,n,r==null?1:r)}function ze(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}mn(ze,As,mr(At,{brighter(t){return t=t==null?An:Math.pow(An,t),new ze(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Ut:Math.pow(Ut,t),new ze(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new ne(xs(t>=240?t-240:t+120,i,r),xs(t,i,r),xs(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new ze(Yc(this.h),Pi(this.s),Pi(this.l),Ti(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Ti(this.opacity);return`${t===1?"hsl(":"hsla("}${Yc(this.h)}, ${Pi(this.s)*100}%, ${Pi(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Yc(t){return t=(t||0)%360,t<0?t+360:t}function Pi(t){return Math.max(0,Math.min(1,t||0))}function xs(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const Wc=Math.PI/180,Xc=180/Math.PI,Li=18,Zc=.96422,Kc=1,qc=.82521,Jc=4/29,yn=6/29,_c=3*yn*yn,dm=yn*yn*yn;function $c(t){if(t instanceof Xe)return new Xe(t.l,t.a,t.b,t.opacity);if(t instanceof it)return el(t);t instanceof ne||(t=ms(t));var e=Cs(t.r),n=Cs(t.g),r=Cs(t.b),i=bs((.2225045*e+.7168786*n+.0606169*r)/Kc),o,s;return e===n&&n===r?o=s=i:(o=bs((.4360747*e+.3850649*n+.1430804*r)/Zc),s=bs((.0139322*e+.0971045*n+.7141733*r)/qc)),new Xe(116*i-16,500*(o-i),200*(i-s),t.opacity)}function ys(t,e,n,r){return arguments.length===1?$c(t):new Xe(t,e,n,r==null?1:r)}function Xe(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}mn(Xe,ys,mr(At,{brighter(t){return new Xe(this.l+Li*(t==null?1:t),this.a,this.b,this.opacity)},darker(t){return new Xe(this.l-Li*(t==null?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=Zc*ws(e),t=Kc*ws(t),n=qc*ws(n),new ne(vs(3.1338561*e-1.6168667*t-.4906146*n),vs(-.9787684*e+1.9161415*t+.033454*n),vs(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function bs(t){return t>dm?Math.pow(t,1/3):t/_c+Jc}function ws(t){return t>yn?t*t*t:_c*(t-Jc)}function vs(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Cs(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function pm(t){if(t instanceof it)return new it(t.h,t.c,t.l,t.opacity);if(t instanceof Xe||(t=$c(t)),t.a===0&&t.b===0)return new it(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Xc;return new it(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Es(t,e,n,r){return arguments.length===1?pm(t):new it(t,e,n,r==null?1:r)}function it(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function el(t){if(isNaN(t.h))return new Xe(t.l,0,0,t.opacity);var e=t.h*Wc;return new Xe(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}mn(it,Es,mr(At,{brighter(t){return new it(this.h,this.c,this.l+Li*(t==null?1:t),this.opacity)},darker(t){return new it(this.h,this.c,this.l-Li*(t==null?1:t),this.opacity)},rgb(){return el(this).rgb()}}));var tl=-.14861,Ss=1.78277,Ds=-.29227,Ri=-.90649,xr=1.97294,nl=xr*Ri,rl=xr*Ss,il=Ss*Ds-Ri*tl;function gm(t){if(t instanceof Vt)return new Vt(t.h,t.s,t.l,t.opacity);t instanceof ne||(t=ms(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(il*r+nl*e-rl*n)/(il+nl-rl),o=r-i,s=(xr*(n-i)-Ds*o)/Ri,a=Math.sqrt(s*s+o*o)/(xr*i*(1-i)),u=a?Math.atan2(s,o)*Xc-120:NaN;return new Vt(u<0?u+360:u,a,i,t.opacity)}function Bs(t,e,n,r){return arguments.length===1?gm(t):new Vt(t,e,n,r==null?1:r)}function Vt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}mn(Vt,Bs,mr(At,{brighter(t){return t=t==null?An:Math.pow(An,t),new Vt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Ut:Math.pow(Ut,t),new Vt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*Wc,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new ne(255*(e+n*(tl*r+Ss*i)),255*(e+n*(Ds*r+Ri*i)),255*(e+n*(xr*r)),this.opacity)}}));function ol(t,e,n,r,i){var o=t*t,s=o*t;return((1-3*t+3*o-s)*e+(4-6*o+3*s)*n+(1+3*t+3*o-3*s)*r+s*i)/6}function sl(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],s=r>0?t[r-1]:2*i-o,a=r<e-1?t[r+2]:2*o-i;return ol((n-r/e)*e,s,i,o,a)}}function al(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],s=t[(r+1)%e],a=t[(r+2)%e];return ol((n-r/e)*e,i,o,s,a)}}const ki=t=>()=>t;function ul(t,e){return function(n){return t+n*e}}function mm(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Ni(t,e){var n=e-t;return n?ul(t,n>180||n<-180?n-360*Math.round(n/360):n):ki(isNaN(t)?e:t)}function Am(t){return(t=+t)==1?re:function(e,n){return n-e?mm(e,n,t):ki(isNaN(e)?n:e)}}function re(t,e){var n=e-t;return n?ul(t,n):ki(isNaN(t)?e:t)}const Fs=function t(e){var n=Am(e);function r(i,o){var s=n((i=Ii(i)).r,(o=Ii(o)).r),a=n(i.g,o.g),u=n(i.b,o.b),c=re(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=u(f),i.opacity=c(f),i+""}}return r.gamma=t,r}(1);function cl(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),s,a;for(s=0;s<n;++s)a=Ii(e[s]),r[s]=a.r||0,i[s]=a.g||0,o[s]=a.b||0;return r=t(r),i=t(i),o=t(o),a.opacity=1,function(u){return a.r=r(u),a.g=i(u),a.b=o(u),a+""}}}var xm=cl(sl),ym=cl(al);function Ms(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function ll(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function bm(t,e){return(ll(e)?Ms:fl)(t,e)}function fl(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),s;for(s=0;s<r;++s)i[s]=xt(t[s],e[s]);for(;s<n;++s)o[s]=e[s];return function(a){for(s=0;s<r;++s)o[s]=i[s](a);return o}}function hl(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function Oe(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function dl(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=xt(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var Is=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ts=new RegExp(Is.source,"g");function wm(t){return function(){return t}}function vm(t){return function(e){return t(e)+""}}function pl(t,e){var n=Is.lastIndex=Ts.lastIndex=0,r,i,o,s=-1,a=[],u=[];for(t=t+"",e=e+"";(r=Is.exec(t))&&(i=Ts.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,u.push({i:s,x:Oe(r,i)})),n=Ts.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?u[0]?vm(u[0].x):wm(e):(e=u.length,function(c){for(var f=0,l;f<e;++f)a[(l=u[f]).i]=l.x(c);return a.join("")})}function xt(t,e){var n=typeof e,r;return e==null||n==="boolean"?ki(e):(n==="number"?Oe:n==="string"?(r=Ht(e))?(e=r,Fs):pl:e instanceof Ht?Fs:e instanceof Date?hl:ll(e)?Ms:Array.isArray(e)?fl:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?dl:Oe)(t,e)}function Cm(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function Em(t,e){var n=Ni(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function yr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var gl=180/Math.PI,Ps={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ml(t,e,n,r,i,o){var s,a,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,u/=a),t*r<e*n&&(t=-t,e=-e,u=-u,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*gl,skewX:Math.atan(u)*gl,scaleX:s,scaleY:a}}var zi;function Sm(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Ps:ml(e.a,e.b,e.c,e.d,e.e,e.f)}function Dm(t){return t==null||(zi||(zi=document.createElementNS("http://www.w3.org/2000/svg","g")),zi.setAttribute("transform",t),!(t=zi.transform.baseVal.consolidate()))?Ps:(t=t.matrix,ml(t.a,t.b,t.c,t.d,t.e,t.f))}function Al(t,e,n,r){function i(c){return c.length?c.pop()+" ":""}function o(c,f,l,h,p,d){if(c!==l||f!==h){var g=p.push("translate(",null,e,null,n);d.push({i:g-4,x:Oe(c,l)},{i:g-2,x:Oe(f,h)})}else(l||h)&&p.push("translate("+l+e+h+n)}function s(c,f,l,h){c!==f?(c-f>180?f+=360:f-c>180&&(c+=360),h.push({i:l.push(i(l)+"rotate(",null,r)-2,x:Oe(c,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(c,f,l,h){c!==f?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:Oe(c,f)}):f&&l.push(i(l)+"skewX("+f+r)}function u(c,f,l,h,p,d){if(c!==l||f!==h){var g=p.push(i(p)+"scale(",null,",",null,")");d.push({i:g-4,x:Oe(c,l)},{i:g-2,x:Oe(f,h)})}else(l!==1||h!==1)&&p.push(i(p)+"scale("+l+","+h+")")}return function(c,f){var l=[],h=[];return c=t(c),f=t(f),o(c.translateX,c.translateY,f.translateX,f.translateY,l,h),s(c.rotate,f.rotate,l,h),a(c.skewX,f.skewX,l,h),u(c.scaleX,c.scaleY,f.scaleX,f.scaleY,l,h),c=f=null,function(p){for(var d=-1,g=h.length,A;++d<g;)l[(A=h[d]).i]=A.x(p);return l.join("")}}}var Bm=Al(Sm,"px, ","px)","deg)"),Fm=Al(Dm,", ",")",")"),Mm=1e-12;function xl(t){return((t=Math.exp(t))+1/t)/2}function Im(t){return((t=Math.exp(t))-1/t)/2}function Tm(t){return((t=Math.exp(2*t))-1)/(t+1)}const yl=function t(e,n,r){function i(o,s){var a=o[0],u=o[1],c=o[2],f=s[0],l=s[1],h=s[2],p=f-a,d=l-u,g=p*p+d*d,A,m;if(g<Mm)m=Math.log(h/c)/e,A=function(B){return[a+B*p,u+B*d,c*Math.exp(e*B*m)]};else{var b=Math.sqrt(g),y=(h*h-c*c+r*g)/(2*c*n*b),w=(h*h-c*c-r*g)/(2*h*n*b),E=Math.log(Math.sqrt(y*y+1)-y),C=Math.log(Math.sqrt(w*w+1)-w);m=(C-E)/e,A=function(B){var I=B*m,P=xl(E),U=c/(n*b)*(P*Tm(e*I+E)-Im(E));return[a+U*p,u+U*d,c*P/xl(e*I+E)]}}return A.duration=m*1e3*e/Math.SQRT2,A}return i.rho=function(o){var s=Math.max(.001,+o),a=s*s,u=a*a;return t(s,a,u)},i}(Math.SQRT2,2,4);function bl(t){return function(e,n){var r=t((e=As(e)).h,(n=As(n)).h),i=re(e.s,n.s),o=re(e.l,n.l),s=re(e.opacity,n.opacity);return function(a){return e.h=r(a),e.s=i(a),e.l=o(a),e.opacity=s(a),e+""}}}const Pm=bl(Ni);var Lm=bl(re);function Rm(t,e){var n=re((t=ys(t)).l,(e=ys(e)).l),r=re(t.a,e.a),i=re(t.b,e.b),o=re(t.opacity,e.opacity);return function(s){return t.l=n(s),t.a=r(s),t.b=i(s),t.opacity=o(s),t+""}}function wl(t){return function(e,n){var r=t((e=Es(e)).h,(n=Es(n)).h),i=re(e.c,n.c),o=re(e.l,n.l),s=re(e.opacity,n.opacity);return function(a){return e.h=r(a),e.c=i(a),e.l=o(a),e.opacity=s(a),e+""}}}const km=wl(Ni);var Nm=wl(re);function vl(t){return function e(n){n=+n;function r(i,o){var s=t((i=Bs(i)).h,(o=Bs(o)).h),a=re(i.s,o.s),u=re(i.l,o.l),c=re(i.opacity,o.opacity);return function(f){return i.h=s(f),i.s=a(f),i.l=u(Math.pow(f,n)),i.opacity=c(f),i+""}}return r.gamma=e,r}(1)}const zm=vl(Ni);var Om=vl(re);function Ls(t,e){e===void 0&&(e=t,t=xt);for(var n=0,r=e.length-1,i=e[0],o=new Array(r<0?0:r);n<r;)o[n]=t(i,i=e[++n]);return function(s){var a=Math.max(0,Math.min(r-1,Math.floor(s*=r)));return o[a](s-a)}}function Gm(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}const Um=Object.freeze(Object.defineProperty({__proto__:null,interpolate:xt,interpolateArray:bm,interpolateBasis:sl,interpolateBasisClosed:al,interpolateDate:hl,interpolateDiscrete:Cm,interpolateHue:Em,interpolateNumber:Oe,interpolateNumberArray:Ms,interpolateObject:dl,interpolateRound:yr,interpolateString:pl,interpolateTransformCss:Bm,interpolateTransformSvg:Fm,interpolateZoom:yl,interpolateRgb:Fs,interpolateRgbBasis:xm,interpolateRgbBasisClosed:ym,interpolateHsl:Pm,interpolateHslLong:Lm,interpolateLab:Rm,interpolateHcl:km,interpolateHclLong:Nm,interpolateCubehelix:zm,interpolateCubehelixLong:Om,piecewise:Ls,quantize:Gm},Symbol.toStringTag,{value:"Module"}));function Hm(t){return function(){return t}}function Rs(t){return+t}var Cl=[0,1];function xe(t){return t}function ks(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Hm(isNaN(e)?NaN:.5)}function Qm(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function jm(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=ks(i,r),o=n(s,o)):(r=ks(r,i),o=n(o,s)),function(a){return o(r(a))}}function Vm(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),s=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<r;)i[s]=ks(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var u=an(t,a,1,r)-1;return o[u](i[u](a))}}function br(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Oi(){var t=Cl,e=Cl,n=xt,r,i,o,s=xe,a,u,c;function f(){var h=Math.min(t.length,e.length);return s!==xe&&(s=Qm(t[0],t[h-1])),a=h>2?Vm:jm,u=c=null,l}function l(h){return h==null||isNaN(h=+h)?o:(u||(u=a(t.map(r),e,n)))(r(s(h)))}return l.invert=function(h){return s(i((c||(c=a(e,t.map(r),Oe)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,Rs),f()):t.slice()},l.range=function(h){return arguments.length?(e=Array.from(h),f()):e.slice()},l.rangeRound=function(h){return e=Array.from(h),n=yr,f()},l.clamp=function(h){return arguments.length?(s=h?!0:xe,f()):s!==xe},l.interpolate=function(h){return arguments.length?(n=h,f()):n},l.unknown=function(h){return arguments.length?(o=h,l):o},function(h,p){return r=h,i=p,f()}}function El(){return Oi()(xe,xe)}function Sl(t,e,n,r){var i=Lt(t,e,n),o;switch(r=ft(r==null?",f":r),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=Uu(i,s))&&(r.precision=o),Yo(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Hu(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=Gu(i))&&(r.precision=o-(r.type==="%")*2);break}}return se(r)}function Yt(t){var e=t.domain;return t.ticks=function(n){var r=e();return pi(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return Sl(i[0],i[i.length-1],n==null?10:n,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,s=r[i],a=r[o],u,c,f=10;for(a<s&&(c=s,s=a,a=c,c=i,i=o,o=c);f-- >0;){if(c=Tu(s,a,n),c===u)return r[i]=s,r[o]=a,e(r);if(c>0)s=Math.floor(s/c)*c,a=Math.ceil(a/c)*c;else if(c<0)s=Math.ceil(s*c)/c,a=Math.floor(a*c)/c;else break;u=c}return t},t}function Dl(){var t=El();return t.copy=function(){return br(t,Dl())},Ye.apply(t,arguments),Yt(t)}function Bl(t){var e;function n(r){return r==null||isNaN(r=+r)?e:r}return n.invert=n,n.domain=n.range=function(r){return arguments.length?(t=Array.from(r,Rs),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return Bl(t).unknown(e)},t=arguments.length?Array.from(t,Rs):[0,1],Yt(n)}function Fl(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],s;return o<i&&(s=n,n=r,r=s,s=i,i=o,o=s),t[n]=e.floor(i),t[r]=e.ceil(o),t}function Ml(t){return Math.log(t)}function Il(t){return Math.exp(t)}function Ym(t){return-Math.log(-t)}function Wm(t){return-Math.exp(-t)}function Xm(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Zm(t){return t===10?Xm:t===Math.E?Math.exp:e=>Math.pow(t,e)}function Km(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),e=>Math.log(e)/t)}function Tl(t){return(e,n)=>-t(-e,n)}function Ns(t){const e=t(Ml,Il),n=e.domain;let r=10,i,o;function s(){return i=Km(r),o=Zm(r),n()[0]<0?(i=Tl(i),o=Tl(o),t(Ym,Wm)):t(Ml,Il),e}return e.base=function(a){return arguments.length?(r=+a,s()):r},e.domain=function(a){return arguments.length?(n(a),s()):n()},e.ticks=a=>{const u=n();let c=u[0],f=u[u.length-1];const l=f<c;l&&([c,f]=[f,c]);let h=i(c),p=i(f),d,g;const A=a==null?10:+a;let m=[];if(!(r%1)&&p-h<A){if(h=Math.floor(h),p=Math.ceil(p),c>0){for(;h<=p;++h)for(d=1;d<r;++d)if(g=h<0?d/o(-h):d*o(h),!(g<c)){if(g>f)break;m.push(g)}}else for(;h<=p;++h)for(d=r-1;d>=1;--d)if(g=h>0?d/o(-h):d*o(h),!(g<c)){if(g>f)break;m.push(g)}m.length*2<A&&(m=pi(c,f,A))}else m=pi(h,p,Math.min(p-h,A)).map(o);return l?m.reverse():m},e.tickFormat=(a,u)=>{if(a==null&&(a=10),u==null&&(u=r===10?"s":","),typeof u!="function"&&(!(r%1)&&(u=ft(u)).precision==null&&(u.trim=!0),u=se(u)),a===1/0)return u;const c=Math.max(1,r*a/e.ticks().length);return f=>{let l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=c?u(f):""}},e.nice=()=>n(Fl(n(),{floor:a=>o(Math.floor(i(a))),ceil:a=>o(Math.ceil(i(a)))})),e}function zs(){const t=Ns(Oi()).domain([1,10]);return t.copy=()=>br(t,zs()).base(t.base()),Ye.apply(t,arguments),t}function Pl(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function Ll(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Os(t){var e=1,n=t(Pl(e),Ll(e));return n.constant=function(r){return arguments.length?t(Pl(e=+r),Ll(e)):e},Yt(n)}function Rl(){var t=Os(Oi());return t.copy=function(){return br(t,Rl()).constant(t.constant())},Ye.apply(t,arguments)}function kl(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function qm(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Jm(t){return t<0?-t*t:t*t}function Gs(t){var e=t(xe,xe),n=1;function r(){return n===1?t(xe,xe):n===.5?t(qm,Jm):t(kl(n),kl(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Yt(e)}function Us(){var t=Gs(Oi());return t.copy=function(){return br(t,Us()).exponent(t.exponent())},Ye.apply(t,arguments),t}function _m(){return Us.apply(null,arguments).exponent(.5)}function Nl(){var t=[],e=[],n=[],r;function i(){var s=0,a=Math.max(1,e.length);for(n=new Array(a-1);++s<a;)n[s-1]=Pu(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[an(n,s)]}return o.invertExtent=function(s){var a=e.indexOf(s);return a<0?[NaN,NaN]:[a>0?n[a-1]:t[0],a<n.length?n[a]:t[t.length-1]]},o.domain=function(s){if(!arguments.length)return t.slice();t=[];for(let a of s)a!=null&&!isNaN(a=+a)&&t.push(a);return t.sort(Zn),i()},o.range=function(s){return arguments.length?(e=Array.from(s),i()):e.slice()},o.unknown=function(s){return arguments.length?(r=s,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return Nl().domain(t).range(e).unknown(r)},Ye.apply(o,arguments)}function zl(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function s(u){return u!=null&&u<=u?i[an(r,u,0,n)]:o}function a(){var u=-1;for(r=new Array(n);++u<n;)r[u]=((u+1)*e-(u-n)*t)/(n+1);return s}return s.domain=function(u){return arguments.length?([t,e]=u,t=+t,e=+e,a()):[t,e]},s.range=function(u){return arguments.length?(n=(i=Array.from(u)).length-1,a()):i.slice()},s.invertExtent=function(u){var c=i.indexOf(u);return c<0?[NaN,NaN]:c<1?[t,r[0]]:c>=n?[r[n-1],e]:[r[c-1],r[c]]},s.unknown=function(u){return arguments.length&&(o=u),s},s.thresholds=function(){return r.slice()},s.copy=function(){return zl().domain([t,e]).range(i).unknown(o)},Ye.apply(Yt(s),arguments)}function Ol(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[an(t,o,0,r)]:n}return i.domain=function(o){return arguments.length?(t=Array.from(o),r=Math.min(t.length,e.length-1),i):t.slice()},i.range=function(o){return arguments.length?(e=Array.from(o),r=Math.min(t.length,e.length-1),i):e.slice()},i.invertExtent=function(o){var s=e.indexOf(o);return[t[s-1],t[s]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return Ol().domain(t).range(e).unknown(n)},Ye.apply(i,arguments)}function $m(t){return new Date(t)}function eA(t){return t instanceof Date?+t:+new Date(+t)}function Hs(t,e,n,r,i,o,s,a,u,c){var f=El(),l=f.invert,h=f.domain,p=c(".%L"),d=c(":%S"),g=c("%I:%M"),A=c("%I %p"),m=c("%a %d"),b=c("%b %d"),y=c("%B"),w=c("%Y");function E(C){return(u(C)<C?p:a(C)<C?d:s(C)<C?g:o(C)<C?A:r(C)<C?i(C)<C?m:b:n(C)<C?y:w)(C)}return f.invert=function(C){return new Date(l(C))},f.domain=function(C){return arguments.length?h(Array.from(C,eA)):h().map($m)},f.ticks=function(C){var B=h();return t(B[0],B[B.length-1],C==null?10:C)},f.tickFormat=function(C,B){return B==null?E:c(B)},f.nice=function(C){var B=h();return(!C||typeof C.range!="function")&&(C=e(B[0],B[B.length-1],C==null?10:C)),C?h(Fl(B,C)):f},f.copy=function(){return br(f,Hs(t,e,n,r,i,o,s,a,u,c))},f}function tA(){return Ye.apply(Hs(fp,hp,dt,bi,qn,kt,_o,Jo,ht,ss).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function nA(){return Ye.apply(Hs(cp,lp,pt,vi,Jn,zt,ts,es,ht,as).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Gi(){var t=0,e=1,n,r,i,o,s=xe,a=!1,u;function c(l){return l==null||isNaN(l=+l)?u:s(i===0?.5:(l=(o(l)-n)*i,a?Math.max(0,Math.min(1,l)):l))}c.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),c):[t,e]},c.clamp=function(l){return arguments.length?(a=!!l,c):a},c.interpolator=function(l){return arguments.length?(s=l,c):s};function f(l){return function(h){var p,d;return arguments.length?([p,d]=h,s=l(p,d),c):[s(0),s(1)]}}return c.range=f(xt),c.rangeRound=f(yr),c.unknown=function(l){return arguments.length?(u=l,c):u},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),c}}function yt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Qs(){var t=Yt(Gi()(xe));return t.copy=function(){return yt(t,Qs())},mt.apply(t,arguments)}function Gl(){var t=Ns(Gi()).domain([1,10]);return t.copy=function(){return yt(t,Gl()).base(t.base())},mt.apply(t,arguments)}function Ul(){var t=Os(Gi());return t.copy=function(){return yt(t,Ul()).constant(t.constant())},mt.apply(t,arguments)}function js(){var t=Gs(Gi());return t.copy=function(){return yt(t,js()).exponent(t.exponent())},mt.apply(t,arguments)}function rA(){return js.apply(null,arguments).exponent(.5)}function Ui(){var t=0,e=.5,n=1,r=1,i,o,s,a,u,c=xe,f,l=!1,h;function p(g){return isNaN(g=+g)?h:(g=.5+((g=+f(g))-o)*(r*g<r*o?a:u),c(l?Math.max(0,Math.min(1,g)):g))}p.domain=function(g){return arguments.length?([t,e,n]=g,i=f(t=+t),o=f(e=+e),s=f(n=+n),a=i===o?0:.5/(o-i),u=o===s?0:.5/(s-o),r=o<i?-1:1,p):[t,e,n]},p.clamp=function(g){return arguments.length?(l=!!g,p):l},p.interpolator=function(g){return arguments.length?(c=g,p):c};function d(g){return function(A){var m,b,y;return arguments.length?([m,b,y]=A,c=Ls(g,[m,b,y]),p):[c(0),c(.5),c(1)]}}return p.range=d(xt),p.rangeRound=d(yr),p.unknown=function(g){return arguments.length?(h=g,p):h},function(g){return f=g,i=g(t),o=g(e),s=g(n),a=i===o?0:.5/(o-i),u=o===s?0:.5/(s-o),r=o<i?-1:1,p}}function Hl(){var t=Yt(Ui()(xe));return t.copy=function(){return yt(t,Hl())},mt.apply(t,arguments)}function Ql(){var t=Ns(Ui()).domain([.1,1,10]);return t.copy=function(){return yt(t,Ql()).base(t.base())},mt.apply(t,arguments)}function jl(){var t=Os(Ui());return t.copy=function(){return yt(t,jl()).constant(t.constant())},mt.apply(t,arguments)}function Vs(){var t=Gs(Ui());return t.copy=function(){return yt(t,Vs()).exponent(t.exponent())},mt.apply(t,arguments)}function iA(){return Vs.apply(null,arguments).exponent(.5)}function Ys(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const oA="identity",bn="linear",bt="log",wr="pow",vr="sqrt",Hi="symlog",Vl="time",Yl="utc",Ze="sequential",wn="diverging",Ws="quantile",Wl="quantize",Xl="threshold",Xs="ordinal",Zs="point",Zl="band",Ks="bin-ordinal",_="continuous",Cr="discrete",Er="discretizing",Te="interpolating",Kl="temporal";function sA(t){return function(e){let n=e[0],r=e[1],i;return r<n&&(i=n,n=r,r=i),[t.invert(n),t.invert(r)]}}function aA(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,s,a,u,c;for(i<r&&(a=r,r=i,i=a),u=0,c=n.length;u<c;++u)n[u]>=r&&n[u]<=i&&(o<0&&(o=u),s=u);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[s]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function qs(){const t=gs().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,s=!1,a=0,u=0,c=.5;delete t.unknown;function f(){const l=e().length,h=r[1]<r[0],p=r[1-h],d=Ys(l,a,u);let g=r[h-0];i=(p-g)/(d||1),s&&(i=Math.floor(i)),g+=(p-g-i*(l-a))*c,o=i*(1-a),s&&(g=Math.round(g),o=Math.round(o));const A=Kn(l).map(m=>g+i*m);return n(h?A.reverse():A)}return t.domain=function(l){return arguments.length?(e(l),f()):e()},t.range=function(l){return arguments.length?(r=[+l[0],+l[1]],f()):r.slice()},t.rangeRound=function(l){return r=[+l[0],+l[1]],s=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(s=!!l,f()):s},t.padding=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),a=u,f()):a},t.paddingInner=function(l){return arguments.length?(a=Math.max(0,Math.min(1,l)),f()):a},t.paddingOuter=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.align=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const h=r[1]<r[0],p=h?n().reverse():n(),d=p.length-1;let g=+l[0],A=+l[1],m,b,y;if(!(g!==g||A!==A)&&(A<g&&(y=g,g=A,A=y),!(A<p[0]||g>r[1-h])))return m=Math.max(0,Go(p,g)-1),b=g===A?m:Go(p,A)-1,g-p[m]>o+1e-10&&++m,h&&(y=m,m=d-b,b=d-y),m>b?void 0:e().slice(m,b+1)},t.invert=function(l){const h=t.invertRange([l,l]);return h&&h[0]},t.copy=function(){return qs().domain(e()).range(r).round(s).paddingInner(a).paddingOuter(u).align(c)},f()}function ql(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return ql(e())},t}function uA(){return ql(qs().paddingInner(1))}var cA=Array.prototype.map;function lA(t){return cA.call(t,Wn)}const fA=Array.prototype.slice;function Jl(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(an(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=lA(r),n):t.slice()},n.range=function(r){return arguments.length?(e=fA.call(r),n):e.slice()},n.tickFormat=function(r,i){return Sl(t[0],Ne(t),r==null?10:r,i)},n.copy=function(){return Jl().domain(n.domain()).range(n.range())},n}const Qi={};function hA(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?sA(o):o.invertExtent?aA(o):void 0),o.type=t,o};return r.metadata=fi(Ro(n)),r}function O(t,e,n){return arguments.length>1?(Qi[t]=hA(t,e,n),this):dA(t)?Qi[t]:void 0}O(oA,Bl),O(bn,Dl,_),O(bt,zs,[_,bt]),O(wr,Us,_),O(vr,_m,_),O(Hi,Rl,_),O(Vl,tA,[_,Kl]),O(Yl,nA,[_,Kl]),O(Ze,Qs,[_,Te]),O("".concat(Ze,"-").concat(bn),Qs,[_,Te]),O("".concat(Ze,"-").concat(bt),Gl,[_,Te,bt]),O("".concat(Ze,"-").concat(wr),js,[_,Te]),O("".concat(Ze,"-").concat(vr),rA,[_,Te]),O("".concat(Ze,"-").concat(Hi),Ul,[_,Te]),O("".concat(wn,"-").concat(bn),Hl,[_,Te]),O("".concat(wn,"-").concat(bt),Ql,[_,Te,bt]),O("".concat(wn,"-").concat(wr),Vs,[_,Te]),O("".concat(wn,"-").concat(vr),iA,[_,Te]),O("".concat(wn,"-").concat(Hi),jl,[_,Te]),O(Ws,Nl,[Er,Ws]),O(Wl,zl,Er),O(Xl,Ol,Er),O(Ks,Jl,[Cr,Er]),O(Xs,gs,Cr),O(Zl,qs,Cr),O(Zs,uA,Cr);function dA(t){return Tt(Qi,t)}function Sr(t,e){const n=Qi[t];return n&&n.metadata[e]}function Pe(t){return Sr(t,_)}function Wt(t){return Sr(t,Cr)}function vn(t){return Sr(t,Er)}function _l(t){return Sr(t,bt)}function ji(t){return Sr(t,Te)}function pA(t,e){const n=e[0],r=Ne(e)-n;return function(i){return t(n+i*r)}}function Vi(t,e,n){return Ls($l(e||"rgb",n),t)}function gA(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function $l(t,e){const n=Um[mA(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function mA(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const AA={blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",cividis:"00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",turbo:"23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},xA={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"};function ef(t){const e=t.length/6|0,n=new Array(e);for(let r=0;r<e;)n[r]="#"+t.slice(r*6,++r*6);return n}function tf(t,e){for(const n in t)Js(n,e(t[n]))}const nf={};tf(xA,ef),tf(AA,t=>Vi(ef(t)));function Js(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(nf[t]=e,this):nf[t]}const bE="";function yA(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}function rf(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function bA(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function Ke(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function Cn(t){return t[t.length-1]}class wA{constructor(e){this.container=e,this.element=document.createElement("div"),this.element.className="tooltip",this._visible=!0,this.container.appendChild(this.element),this._previousTooltipDatum=void 0,this.enabledStack=[!0],this._penaltyUntil=0,this._lastCoords=void 0,this._previousMove=0,this.clear()}set visible(e){e!=this._visible&&(this.element.style.display=e?null:"none",this._visible=e)}get visible(){return this._visible}get enabled(){var e;return(e=Cn(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=yA(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&vA(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const[n,r]=this.mouseCoords;let i=n+20;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-20-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+20,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(kc("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}kc(e,this.element),this.visible=!0,this.updatePlacement()}clear(){this._previousTooltipDatum=void 0,this.setContent(void 0)}updateWithDatum(e,n){e!==this._previousTooltipDatum&&(this._previousTooltipDatum=e,n||(n=r=>Promise.resolve(rt`${JSON.stringify(r)}`)),n(e).then(r=>this.setContent(r)).catch(r=>{if(r!=="debounced")throw r}))}_isPenalty(){return this._penaltyUntil&&this._penaltyUntil>performance.now()}}function vA(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const CA="RawCode",EA="Literal",SA="Property",DA="Identifier",BA="ArrayExpression",FA="BinaryExpression",MA="CallExpression",IA="ConditionalExpression",TA="LogicalExpression",PA="MemberExpression",LA="ObjectExpression",RA="UnaryExpression";function Ge(t){this.type=t}Ge.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=kA(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function kA(t){switch(t.type){case BA:return t.elements;case FA:case TA:return[t.left,t.right];case MA:return[t.callee].concat(t.arguments);case IA:return[t.test,t.consequent,t.alternate];case PA:return[t.object,t.property];case LA:return t.properties;case SA:return[t.key,t.value];case RA:return[t.argument];case DA:case EA:case CA:default:return[]}}var qe,S,x,ce,G,Yi=1,Dr=2,Xt=3,wt=4,Wi=5,Zt=6,ye=7,Br=8,NA=9;qe={},qe[Yi]="Boolean",qe[Dr]="<end>",qe[Xt]="Identifier",qe[wt]="Keyword",qe[Wi]="Null",qe[Zt]="Numeric",qe[ye]="Punctuator",qe[Br]="String",qe[NA]="RegularExpression";var zA="ArrayExpression",OA="BinaryExpression",GA="CallExpression",UA="ConditionalExpression",of="Identifier",HA="Literal",QA="LogicalExpression",jA="MemberExpression",VA="ObjectExpression",YA="Property",WA="UnaryExpression",ie="Unexpected token %0",XA="Unexpected number",ZA="Unexpected string",KA="Unexpected identifier",qA="Unexpected reserved word",JA="Unexpected end of input",_s="Invalid regular expression",$s="Invalid regular expression: missing /",sf="Octal literals are not allowed in strict mode.",_A="Duplicate data property in object literal not allowed in strict mode",ae="ILLEGAL",Fr="Disabled.",$A=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),e1=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function Xi(t,e){if(!t)throw new Error("ASSERT: "+e)}function ot(t){return t>=48&&t<=57}function ea(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Mr(t){return"01234567".indexOf(t)>=0}function t1(t){return t===32||t===9||t===11||t===12||t===160||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function Ir(t){return t===10||t===13||t===8232||t===8233}function Tr(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&$A.test(String.fromCharCode(t))}function Zi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&e1.test(String.fromCharCode(t))}const n1={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function af(){for(;x<ce;){const t=S.charCodeAt(x);if(t1(t)||Ir(t))++x;else break}}function ta(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)x<ce&&ea(S[x])?(r=S[x++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):N({},ie,ae);return String.fromCharCode(i)}function r1(){var t,e,n,r;for(t=S[x],e=0,t==="}"&&N({},ie,ae);x<ce&&(t=S[x++],!!ea(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&N({},ie,ae),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function uf(){var t,e;for(t=S.charCodeAt(x++),e=String.fromCharCode(t),t===92&&(S.charCodeAt(x)!==117&&N({},ie,ae),++x,t=ta("u"),(!t||t==="\\"||!Tr(t.charCodeAt(0)))&&N({},ie,ae),e=t);x<ce&&(t=S.charCodeAt(x),!!Zi(t));)++x,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),S.charCodeAt(x)!==117&&N({},ie,ae),++x,t=ta("u"),(!t||t==="\\"||!Zi(t.charCodeAt(0)))&&N({},ie,ae),e+=t);return e}function i1(){var t,e;for(t=x++;x<ce;){if(e=S.charCodeAt(x),e===92)return x=t,uf();if(Zi(e))++x;else break}return S.slice(t,x)}function o1(){var t,e,n;return t=x,e=S.charCodeAt(x)===92?uf():i1(),e.length===1?n=Xt:n1.hasOwnProperty(e)?n=wt:e==="null"?n=Wi:e==="true"||e==="false"?n=Yi:n=Xt,{type:n,value:e,start:t,end:x}}function na(){var t=x,e=S.charCodeAt(x),n,r=S[x],i,o,s;switch(e){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++x,{type:ye,value:String.fromCharCode(e),start:t,end:x};default:if(n=S.charCodeAt(x+1),n===61)switch(e){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return x+=2,{type:ye,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:x};case 33:case 61:return x+=2,S.charCodeAt(x)===61&&++x,{type:ye,value:S.slice(t,x),start:t,end:x}}}if(s=S.substr(x,4),s===">>>=")return x+=4,{type:ye,value:s,start:t,end:x};if(o=s.substr(0,3),o===">>>"||o==="<<="||o===">>=")return x+=3,{type:ye,value:o,start:t,end:x};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return x+=2,{type:ye,value:i,start:t,end:x};if(i==="//"&&N({},ie,ae),"<>=!+-*%&|^/".indexOf(r)>=0)return++x,{type:ye,value:r,start:t,end:x};N({},ie,ae)}function s1(t){let e="";for(;x<ce&&ea(S[x]);)e+=S[x++];return e.length===0&&N({},ie,ae),Tr(S.charCodeAt(x))&&N({},ie,ae),{type:Zt,value:parseInt("0x"+e,16),start:t,end:x}}function a1(t){let e="0"+S[x++];for(;x<ce&&Mr(S[x]);)e+=S[x++];return(Tr(S.charCodeAt(x))||ot(S.charCodeAt(x)))&&N({},ie,ae),{type:Zt,value:parseInt(e,8),octal:!0,start:t,end:x}}function cf(){var t,e,n;if(n=S[x],Xi(ot(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=x,t="",n!=="."){if(t=S[x++],n=S[x],t==="0"){if(n==="x"||n==="X")return++x,s1(e);if(Mr(n))return a1(e);n&&ot(n.charCodeAt(0))&&N({},ie,ae)}for(;ot(S.charCodeAt(x));)t+=S[x++];n=S[x]}if(n==="."){for(t+=S[x++];ot(S.charCodeAt(x));)t+=S[x++];n=S[x]}if(n==="e"||n==="E")if(t+=S[x++],n=S[x],(n==="+"||n==="-")&&(t+=S[x++]),ot(S.charCodeAt(x)))for(;ot(S.charCodeAt(x));)t+=S[x++];else N({},ie,ae);return Tr(S.charCodeAt(x))&&N({},ie,ae),{type:Zt,value:parseFloat(t),start:e,end:x}}function u1(){var t="",e,n,r,i,o=!1;for(e=S[x],Xi(e==="'"||e==='"',"String literal must starts with a quote"),n=x,++x;x<ce;)if(r=S[x++],r===e){e="";break}else if(r==="\\")if(r=S[x++],!r||!Ir(r.charCodeAt(0)))switch(r){case"u":case"x":S[x]==="{"?(++x,t+=r1()):t+=ta(r);break;case"n":t+=`
15
- `;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:Mr(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),x<ce&&Mr(S[x])&&(o=!0,i=i*8+"01234567".indexOf(S[x++]),"0123".indexOf(r)>=0&&x<ce&&Mr(S[x])&&(i=i*8+"01234567".indexOf(S[x++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&S[x]===`
16
- `&&++x;else{if(Ir(r.charCodeAt(0)))break;t+=r}return e!==""&&N({},ie,ae),{type:Br,value:t,octal:o,start:n,end:x}}function c1(t,e){let n=t;e.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";N({},_s)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{N({},_s)}try{return new RegExp(t,e)}catch{return null}}function l1(){var t,e,n,r,i;for(t=S[x],Xi(t==="/","Regular expression literal must start with a slash"),e=S[x++],n=!1,r=!1;x<ce;)if(t=S[x++],e+=t,t==="\\")t=S[x++],Ir(t.charCodeAt(0))&&N({},$s),e+=t;else if(Ir(t.charCodeAt(0)))N({},$s);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||N({},$s),i=e.substr(1,e.length-2),{value:i,literal:e}}function f1(){var t,e,n;for(e="",n="";x<ce&&(t=S[x],!!Zi(t.charCodeAt(0)));)++x,t==="\\"&&x<ce?N({},ie,ae):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&N({},_s,n),{value:n,literal:e}}function h1(){var t,e,n,r;return G=null,af(),t=x,e=l1(),n=f1(),r=c1(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:x}}function d1(t){return t.type===Xt||t.type===wt||t.type===Yi||t.type===Wi}function lf(){if(af(),x>=ce)return{type:Dr,start:x,end:x};const t=S.charCodeAt(x);return Tr(t)?o1():t===40||t===41||t===59?na():t===39||t===34?u1():t===46?ot(S.charCodeAt(x+1))?cf():na():ot(t)?cf():na()}function be(){const t=G;return x=t.end,G=lf(),x=t.end,t}function ff(){const t=x;G=lf(),x=t}function p1(t){const e=new Ge(zA);return e.elements=t,e}function hf(t,e,n){const r=new Ge(t==="||"||t==="&&"?QA:OA);return r.operator=t,r.left=e,r.right=n,r}function g1(t,e){const n=new Ge(GA);return n.callee=t,n.arguments=e,n}function m1(t,e,n){const r=new Ge(UA);return r.test=t,r.consequent=e,r.alternate=n,r}function ra(t){const e=new Ge(of);return e.name=t,e}function Pr(t){const e=new Ge(HA);return e.value=t.value,e.raw=S.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function df(t,e,n){const r=new Ge(jA);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function A1(t){const e=new Ge(VA);return e.properties=t,e}function pf(t,e,n){const r=new Ge(YA);return r.key=e,r.value=n,r.kind=t,r}function x1(t,e){const n=new Ge(WA);return n.operator=t,n.argument=e,n.prefix=!0,n}function N(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,s)=>(Xi(s<r.length,"Message reference must be in range"),r[s]));throw n=new Error(i),n.index=x,n.description=i,n}function Ki(t){t.type===Dr&&N(t,JA),t.type===Zt&&N(t,XA),t.type===Br&&N(t,ZA),t.type===Xt&&N(t,KA),t.type===wt&&N(t,qA),N(t,ie,t.value)}function le(t){const e=be();(e.type!==ye||e.value!==t)&&Ki(e)}function j(t){return G.type===ye&&G.value===t}function ia(t){return G.type===wt&&G.value===t}function y1(){const t=[];for(x=G.start,le("[");!j("]");)j(",")?(be(),t.push(null)):(t.push(Kt()),j("]")||le(","));return be(),p1(t)}function gf(){x=G.start;const t=be();return t.type===Br||t.type===Zt?(t.octal&&N(t,sf),Pr(t)):ra(t.value)}function b1(){var t,e,n,r;if(x=G.start,t=G,t.type===Xt)return n=gf(),le(":"),r=Kt(),pf("init",n,r);if(t.type===Dr||t.type===ye)Ki(t);else return e=gf(),le(":"),r=Kt(),pf("init",e,r)}function w1(){var t=[],e,n,r,i={},o=String;for(x=G.start,le("{");!j("}");)e=b1(),e.key.type===of?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?N({},_A):i[r]=!0,t.push(e),j("}")||le(",");return le("}"),A1(t)}function v1(){le("(");const t=oa();return le(")"),t}const C1={if:1};function E1(){var t,e,n;if(j("("))return v1();if(j("["))return y1();if(j("{"))return w1();if(t=G.type,x=G.start,t===Xt||C1[G.value])n=ra(be().value);else if(t===Br||t===Zt)G.octal&&N(G,sf),n=Pr(be());else{if(t===wt)throw new Error(Fr);t===Yi?(e=be(),e.value=e.value==="true",n=Pr(e)):t===Wi?(e=be(),e.value=null,n=Pr(e)):j("/")||j("/=")?(n=Pr(h1()),ff()):Ki(be())}return n}function S1(){const t=[];if(le("("),!j(")"))for(;x<ce&&(t.push(Kt()),!j(")"));)le(",");return le(")"),t}function D1(){x=G.start;const t=be();return d1(t)||Ki(t),ra(t.value)}function B1(){return le("."),D1()}function F1(){le("[");const t=oa();return le("]"),t}function M1(){var t,e,n;for(t=E1();;)if(j("."))n=B1(),t=df(".",t,n);else if(j("("))e=S1(),t=g1(t,e);else if(j("["))n=F1(),t=df("[",t,n);else break;return t}function mf(){const t=M1();if(G.type===ye&&(j("++")||j("--")))throw new Error(Fr);return t}function qi(){var t,e;if(G.type!==ye&&G.type!==wt)e=mf();else{if(j("++")||j("--"))throw new Error(Fr);if(j("+")||j("-")||j("~")||j("!"))t=be(),e=qi(),e=x1(t.value,e);else{if(ia("delete")||ia("void")||ia("typeof"))throw new Error(Fr);e=mf()}}return e}function Af(t){let e=0;if(t.type!==ye&&t.type!==wt)return 0;switch(t.value){case"||":e=1;break;case"&&":e=2;break;case"|":e=3;break;case"^":e=4;break;case"&":e=5;break;case"==":case"!=":case"===":case"!==":e=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11;break}return e}function I1(){var t,e,n,r,i,o,s,a,u,c;if(t=G,u=qi(),r=G,i=Af(r),i===0)return u;for(r.prec=i,be(),e=[t,G],s=qi(),o=[u,r,s];(i=Af(G))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)s=o.pop(),a=o.pop().value,u=o.pop(),e.pop(),n=hf(a,u,s),o.push(n);r=be(),r.prec=i,o.push(r),e.push(G),n=qi(),o.push(n)}for(c=o.length-1,n=o[c],e.pop();c>1;)e.pop(),n=hf(o[c-1].value,o[c-2],n),c-=2;return n}function Kt(){var t,e,n;return t=I1(),j("?")&&(be(),e=Kt(),le(":"),n=Kt(),t=m1(t,e,n)),t}function oa(){const t=Kt();if(j(","))throw new Error(Fr);return t}function T1(t){S=t,x=0,ce=S.length,G=null,ff();const e=oa();if(G.type!==Dr)throw new Error("Unexpect token after expression.");return e}var P1={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function L1(t){function e(s,a,u,c){let f=t(a[0]);return u&&(f=u+"("+f+")",u.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+s+(c<0?"":c===0?"()":"("+a.slice(1).map(t).join(",")+")")}function n(s,a,u){return c=>e(s,c,a,u)}const r="new Date",i="String",o="RegExp";return{isNaN:"Number.isNaN",isFinite:"Number.isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(s){s.length<3&&X("Missing arguments to clamp function."),s.length>3&&X("Too many arguments to clamp function.");const a=s.map(t);return"Math.max("+a[1]+", Math.min("+a[2]+","+a[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:r,date:n("getDate",r,0),day:n("getDay",r,0),year:n("getFullYear",r,0),month:n("getMonth",r,0),hours:n("getHours",r,0),minutes:n("getMinutes",r,0),seconds:n("getSeconds",r,0),milliseconds:n("getMilliseconds",r,0),time:n("getTime",r,0),timezoneoffset:n("getTimezoneOffset",r,0),utcdate:n("getUTCDate",r,0),utcday:n("getUTCDay",r,0),utcyear:n("getUTCFullYear",r,0),utcmonth:n("getUTCMonth",r,0),utchours:n("getUTCHours",r,0),utcminutes:n("getUTCMinutes",r,0),utcseconds:n("getUTCSeconds",r,0),utcmilliseconds:n("getUTCMilliseconds",r,0),length:n("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:n("toUpperCase",i,0),lower:n("toLowerCase",i,0),substring:n("substring",i),split:n("split",i),trim:n("trim",i,0),regexp:o,test:n("test",o),if:function(s){s.length<3&&X("Missing arguments to if function."),s.length>3&&X("Too many arguments to if function.");const a=s.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function R1(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function k1(t){t=t||{};const e=t.allowed?fi(t.allowed):{},n=t.forbidden?fi(t.forbidden):{},r=t.constants||P1,i=(t.functions||L1)(l),o=t.globalvar,s=t.fieldvar,a=ge(o)?o:d=>`${o}["${d}"]`;let u={},c={},f=0;function l(d){if(Z(d))return d;const g=h[d.type];return g==null&&X("Unsupported type: "+d.type),g(d)}const h={Literal:d=>d.raw,Identifier:d=>{const g=d.name;return f>0?g:Tt(n,g)?X("Illegal identifier: "+g):Tt(r,g)?r[g]:Tt(e,g)?g:(u[g]=1,a(g))},MemberExpression:d=>{const g=!d.computed,A=l(d.object);g&&(f+=1);const m=l(d.property);return A===s&&(c[R1(m)]=1),g&&(f-=1),A+(g?"."+m:"["+m+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&X("Illegal callee type: "+d.callee.type);const g=d.callee.name,A=d.arguments,m=Tt(i,g)&&i[g];return m||X("Unrecognized function: "+g),ge(m)?m(A):m+"("+A.map(l).join(",")+")"},ArrayExpression:d=>"["+d.elements.map(l).join(",")+"]",BinaryExpression:d=>"("+l(d.left)+" "+d.operator+" "+l(d.right)+")",UnaryExpression:d=>"("+d.operator+l(d.argument)+")",ConditionalExpression:d=>"("+l(d.test)+"?"+l(d.consequent)+":"+l(d.alternate)+")",LogicalExpression:d=>"("+l(d.left)+d.operator+l(d.right)+")",ObjectExpression:d=>"{"+d.properties.map(l).join(",")+"}",Property:d=>{f+=1;const g=l(d.key);return f-=1,g+":"+l(d.value)}};function p(d){const g={code:l(d),globals:Object.keys(u),fields:Object.keys(c)};return u={},c={},g}return p.functions=i,p.constants=r,p}function sa(t,e={}){const n=k1({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=T1(t),i=n(r),o=Function("datum","global",`"use strict"; return (${i.code});`),s=a=>o(a,e);return s.fields=i.fields,s}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function N1(){let t=0;const e=new Map,n=r=>{let i=e.get(r);return i===void 0&&(i=t++,e.set(r,i)),i};return n.addAll=r=>{for(const i of r)n(i)},n.invert=r=>{for(const i of e.entries())if(i[1]==r)return i[0]},n.domain=()=>[...e.keys()],n}function z1(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(Le(i)&&i.resolutionChannel||r);n[r]=O1(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function O1(t,e,n,r){let i;if(Ue(t)){const o=t.value;i=s=>o,i.constant=!0,i.constantValue=!0,i.accessor=void 0}else if(n)if(r=="text")i=o=>{},i.accessor=n,i.constant=n.constant;else{if(!e)throw new Error(`Missing scale! "${r}": ${JSON.stringify(t)}`);if(i=o=>e(n(o)),Wt(e.type)){const o=N1();o.addAll(e.domain()),i.indexer=o}i.constant=n.constant,i.accessor=n,i.scale=e}else throw new Error(`Missing value or accessor (field, expr, datum) on channel "${r}": ${JSON.stringify(t)}`);return i.invert=e?o=>e.invert(o):o=>{throw new Error("No scale available, cannot invert: "+JSON.stringify(t))},i.channelDef=t,i.applyMetadata=o=>{for(const s in i)s in i&&(o[s]=i[s]);return o},i}function Ue(t){return t&&"value"in t}function Lr(t){return t&&"field"in t}function Rr(t){return t&&"datum"in t}function Le(t){return Lr(t)||Rr(t)||ua(t)||xf(t)}function aa(t,e){const n=t.mark.encoding[e];if(Le(n))return n;throw new Error("Not a channel def with scale!")}function xf(t){return t&&"chrom"in t}function ua(t){return t&&"expr"in t}const kr=["x","y"],G1=["x2","y2"],U1=[...kr,...G1];function yf(t){return kr.includes(t)}function Nr(t){return U1.includes(t)}const ca={x:"x2",y:"y2"},bf=Object.fromEntries(Object.entries(ca).map(t=>[t[1],t[0]]));function zr(t){return t in bf}function H1(t){const e=ca[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function En(t){var e;return(e=bf[t])!=null?e:t}function qt(t){return["color","fill","stroke"].includes(En(t))}function Ji(t){return["shape","squeeze"].includes(t)}function wf(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function vf(t){if(!Ji(t))throw new Error("Not a discrete channel: "+t);const e=new Map(wf(t).map((n,r)=>[n,r]));return n=>{const r=e.get(n);if(r!==void 0)return r;throw new Error(`Invalid value for "${t}" channel: ${n}`)}}function H(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return T(n,[t],e)}else return ii(t)}class Q1{constructor(){this.accessorCreators=[],this.register(e=>{if(Lr(e))try{const n=H(e.field);return n.constant=!1,n.fields=It(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>ua(e)?j1(e.expr):void 0),this.register(e=>{if(Rr(e)){const r=xd(e.datum);return r.constant=!0,r.fields=[],r}})}register(e){this.accessorCreators.push(e)}createAccessor(e){for(const n of this.accessorCreators){const r=n(e);if(r)return r}}}function j1(t){const e=sa(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
14
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),Ic=/'/g,Tc=/"/g,Pc=/^(?:script|style|textarea|title)$/i,Zg=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),nt=Zg(1),dr=Symbol.for("lit-noChange"),te=Symbol.for("lit-nothing"),Rc=new WeakMap,dn=hn.createTreeWalker(hn,129,null,!1),Kg=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",s=hr;for(let u=0;u<n;u++){const c=t[u];let f,l,h=-1,p=0;for(;p<c.length&&(s.lastIndex=p,l=s.exec(c),l!==null);)p=s.lastIndex,s===hr?l[1]==="!--"?s=Fc:l[1]!==void 0?s=Mc:l[2]!==void 0?(Pc.test(l[2])&&(i=RegExp("</"+l[2],"g")),s=Ot):l[3]!==void 0&&(s=Ot):s===Ot?l[0]===">"?(s=i??hr,h=-1):l[1]===void 0?h=-2:(h=s.lastIndex-l[2].length,f=l[1],s=l[3]===void 0?Ot:l[3]==='"'?Tc:Ic):s===Tc||s===Ic?s=Ot:s===Fc||s===Mc?s=hr:(s=Ot,i=void 0);const d=s===Ot&&t[u+1].startsWith("/>")?" ":"";o+=s===hr?c+Wg:h>=0?(r.push(f),c.slice(0,h)+"$lit$"+c.slice(h)+pt+d):c+pt+(h===-2?(r.push(void 0),u):d)}const a=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[Sc!==void 0?Sc.createHTML(a):a,r]};let hs=class td{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,s=0;const a=e.length-1,u=this.parts,[c,f]=Kg(e,n);if(this.el=td.createElement(c,r),dn.currentNode=this.el.content,n===2){const l=this.el.content,h=l.firstChild;h.remove(),l.append(...h.childNodes)}for(;(i=dn.nextNode())!==null&&u.length<a;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const h of i.getAttributeNames())if(h.endsWith("$lit$")||h.startsWith(pt)){const p=f[s++];if(l.push(h),p!==void 0){const d=i.getAttribute(p.toLowerCase()+"$lit$").split(pt),g=/([.?@])?(.*)/.exec(p);u.push({type:1,index:o,name:g[2],strings:d,ctor:g[1]==="."?Jg:g[1]==="?"?$g:g[1]==="@"?em:Bi})}else u.push({type:6,index:o})}for(const h of l)i.removeAttribute(h)}if(Pc.test(i.tagName)){const l=i.textContent.split(pt),h=l.length-1;if(h>0){i.textContent=fn?fn.emptyScript:"";for(let p=0;p<h;p++)i.append(l[p],lr()),dn.nextNode(),u.push({type:2,index:++o});i.append(l[h],lr())}}}else if(i.nodeType===8)if(i.data===Dc)u.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(pt,l+1))!==-1;)u.push({type:7,index:o}),l+=pt.length-1}o++}}static createElement(e,n){const r=hn.createElement("template");return r.innerHTML=e,r}};function pn(t,e,n=t,r){var i,o,s,a;if(e===dr)return e;let u=r!==void 0?(i=n._$Co)===null||i===void 0?void 0:i[r]:n._$Cl;const c=fr(e)?void 0:e._$litDirective$;return(u==null?void 0:u.constructor)!==c&&((o=u==null?void 0:u._$AO)===null||o===void 0||o.call(u,!1),c===void 0?u=void 0:(u=new c(t),u._$AT(t,n,r)),r!==void 0?((s=(a=n)._$Co)!==null&&s!==void 0?s:a._$Co=[])[r]=u:n._$Cl=u),u!==void 0&&(e=pn(t,u._$AS(t,e.values),u,r)),e}class qg{constructor(e,n){this.u=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:hn).importNode(r,!0);dn.currentNode=o;let s=dn.nextNode(),a=0,u=0,c=i[0];for(;c!==void 0;){if(a===c.index){let f;c.type===2?f=new pr(s,s.nextSibling,this,e):c.type===1?f=new c.ctor(s,c.name,c.strings,this,e):c.type===6&&(f=new tm(s,this,e)),this.u.push(f),c=i[++u]}a!==(c==null?void 0:c.index)&&(s=dn.nextNode(),a++)}return o}p(e){let n=0;for(const r of this.u)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class pr{constructor(e,n,r,i){var o;this.type=2,this._$AH=te,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cm=(o=i==null?void 0:i.isConnected)===null||o===void 0||o}get _$AU(){var e,n;return(n=(e=this._$AM)===null||e===void 0?void 0:e._$AU)!==null&&n!==void 0?n:this._$Cm}get parentNode(){let e=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&e.nodeType===11&&(e=n.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,n=this){e=pn(this,e,n),fr(e)?e===te||e==null||e===""?(this._$AH!==te&&this._$AR(),this._$AH=te):e!==this._$AH&&e!==dr&&this.g(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):Xg(e)?this.k(e):this.g(e)}O(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}g(e){this._$AH!==te&&fr(this._$AH)?this._$AA.nextSibling.data=e:this.T(hn.createTextNode(e)),this._$AH=e}$(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=hs.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.p(r);else{const s=new qg(o,this),a=s.v(this.options);s.p(r),this.T(a),this._$AH=s}}_$AC(e){let n=Rc.get(e.strings);return n===void 0&&Rc.set(e.strings,n=new hs(e)),n}k(e){Bc(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let r,i=0;for(const o of e)i===n.length?n.push(r=new pr(this.O(lr()),this.O(lr()),this,this.options)):r=n[i],r._$AI(o),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,n){var r;for((r=this._$AP)===null||r===void 0||r.call(this,!1,!0,n);e&&e!==this._$AB;){const i=e.nextSibling;e.remove(),e=i}}setConnected(e){var n;this._$AM===void 0&&(this._$Cm=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class Bi{constructor(e,n,r,i,o){this.type=1,this._$AH=te,this._$AN=void 0,this.element=e,this.name=n,this._$AM=i,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=te}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const o=this.strings;let s=!1;if(o===void 0)e=pn(this,e,n,0),s=!fr(e)||e!==this._$AH&&e!==dr,s&&(this._$AH=e);else{const a=e;let u,c;for(e=o[0],u=0;u<o.length-1;u++)c=pn(this,a[r+u],n,u),c===dr&&(c=this._$AH[u]),s||(s=!fr(c)||c!==this._$AH[u]),c===te?e=te:e!==te&&(e+=(c??"")+o[u+1]),this._$AH[u]=c}s&&!i&&this.j(e)}j(e){e===te?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class Jg extends Bi{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===te?void 0:e}}const _g=fn?fn.emptyScript:"";class $g extends Bi{constructor(){super(...arguments),this.type=4}j(e){e&&e!==te?this.element.setAttribute(this.name,_g):this.element.removeAttribute(this.name)}}class em extends Bi{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=pn(this,e,n,0))!==null&&r!==void 0?r:te)===dr)return;const i=this._$AH,o=e===te&&i!==te||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,s=e!==te&&(i===te||o);o&&this.element.removeEventListener(this.name,this,i),s&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var n,r;typeof this._$AH=="function"?this._$AH.call((r=(n=this.options)===null||n===void 0?void 0:n.host)!==null&&r!==void 0?r:this.element,e):this._$AH.handleEvent(e)}}class tm{constructor(e,n,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=n,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){pn(this,e)}}const Lc=Di.litHtmlPolyfillSupport;Lc==null||Lc(hs,pr),((fs=Di.litHtmlVersions)!==null&&fs!==void 0?fs:Di.litHtmlVersions=[]).push("2.4.0");const kc=(t,e,n)=>{var r,i;const o=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let s=o._$litPart$;if(s===void 0){const a=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;o._$litPart$=s=new pr(e.insertBefore(lr(),a),a,void 0,n??{})}return s._$AI(t),s},Nc=1;function ds(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,s=.5,a=0;const c=f=>(f+s-t[0])/n*r+e[0];return c.invert=f=>(f-e[0])/r*n+t[0]-s,c.domain=function(f){if(arguments.length){if(t=jd(f),n=t[1]-t[0],n<Nc){n=Nc;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return c}else return t},c.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],c):e},c.numberingOffset=function(f){return arguments.length?(a=f,c):a},c.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),c):i},c.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),c):i},c.paddingOuter=function(f){return arguments.length?(o=f,c):o},c.align=function(f){return arguments.length?(s=Math.max(0,Math.min(1,f)),c):s},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=f=>{const l=c.align(),h=c.numberingOffset();return di(t[0]-l+h,t[1]-l+h,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(p=>p-a)},c.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const p=Pt(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?oe(","):oe(".3s");return d=>p(d+a)},c.copy=()=>ds().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),c}function nm(){const t=ds().numberingOffset(1);let e;t.genome=function(r){return arguments.length?(e=r,t):e},t.ticks=r=>{if(!e)return[];const i=t.domain(),o=t.numberingOffset(),[s,a]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),u=Math.max(1,Pt(i[0],i[1],r)),c=[];for(let f=s.index;f<=a.index;f++){const l=e.chromosomes[f],h=Math.max(l.continuousStart+u,i[0]-(i[0]-l.continuousStart)%u),p=Math.min(l.continuousEnd-u/4,i[1]+1);for(let d=h;d<=p;d+=u){const g=d-o;g>=i[0]&&g<i[1]&&c.push(g)}}return c},t.tickFormat=(r,i)=>{if(!e)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const o=t.domain(),s=o[1]-o[0],a=t.numberingOffset(),c=Pt(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?oe(","):oe(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>c(f(l)+a)};const n=t.copy;return t.copy=()=>n().genome(e),t}function rm(t){return t.type=="locus"}function Ye(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function gt(t,e){switch(arguments.length){case 0:break;case 1:{typeof t=="function"?this.interpolator(t):this.range(t);break}default:{this.domain(t),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const ps=Symbol("implicit");function gs(){var t=new Tt,e=[],n=[],r=ps;function i(o){let s=t.get(o);if(s===void 0){if(r!==ps)return r;t.set(o,s=e.push(o)-1)}return n[s%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Tt;for(const s of o)t.has(s)||t.set(s,e.push(s)-1);return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return gs(e,n).unknown(r)},Ye.apply(i,arguments),i}function gn(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function gr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function mt(){}var Gt=.7,mn=1/Gt,An="\\s*([+-]?\\d+)\\s*",mr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",We="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",im=/^#([0-9a-f]{3,8})$/,om=new RegExp(`^rgb\\(${An},${An},${An}\\)$`),sm=new RegExp(`^rgb\\(${We},${We},${We}\\)$`),am=new RegExp(`^rgba\\(${An},${An},${An},${mr}\\)$`),um=new RegExp(`^rgba\\(${We},${We},${We},${mr}\\)$`),cm=new RegExp(`^hsl\\(${mr},${We},${We}\\)$`),lm=new RegExp(`^hsla\\(${mr},${We},${We},${mr}\\)$`),zc={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};gn(mt,Ut,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Oc,formatHex:Oc,formatHex8:fm,formatHsl:hm,formatRgb:Gc,toString:Gc});function Oc(){return this.rgb().formatHex()}function fm(){return this.rgb().formatHex8()}function hm(){return Vc(this).formatHsl()}function Gc(){return this.rgb().formatRgb()}function Ut(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=im.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Uc(e):n===3?new ne(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Fi(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Fi(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=om.exec(t))?new ne(e[1],e[2],e[3],1):(e=sm.exec(t))?new ne(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=am.exec(t))?Fi(e[1],e[2],e[3],e[4]):(e=um.exec(t))?Fi(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=cm.exec(t))?jc(e[1],e[2]/100,e[3]/100,1):(e=lm.exec(t))?jc(e[1],e[2]/100,e[3]/100,e[4]):zc.hasOwnProperty(t)?Uc(zc[t]):t==="transparent"?new ne(NaN,NaN,NaN,0):null}function Uc(t){return new ne(t>>16&255,t>>8&255,t&255,1)}function Fi(t,e,n,r){return r<=0&&(t=e=n=NaN),new ne(t,e,n,r)}function ms(t){return t instanceof mt||(t=Ut(t)),t?(t=t.rgb(),new ne(t.r,t.g,t.b,t.opacity)):new ne}function Mi(t,e,n,r){return arguments.length===1?ms(t):new ne(t,e,n,r??1)}function ne(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}gn(ne,Mi,gr(mt,{brighter(t){return t=t==null?mn:Math.pow(mn,t),new ne(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Gt:Math.pow(Gt,t),new ne(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ne(Ht(this.r),Ht(this.g),Ht(this.b),Ii(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Hc,formatHex:Hc,formatHex8:dm,formatRgb:Qc,toString:Qc}));function Hc(){return`#${Qt(this.r)}${Qt(this.g)}${Qt(this.b)}`}function dm(){return`#${Qt(this.r)}${Qt(this.g)}${Qt(this.b)}${Qt((isNaN(this.opacity)?1:this.opacity)*255)}`}function Qc(){const t=Ii(this.opacity);return`${t===1?"rgb(":"rgba("}${Ht(this.r)}, ${Ht(this.g)}, ${Ht(this.b)}${t===1?")":`, ${t})`}`}function Ii(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Ht(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Qt(t){return t=Ht(t),(t<16?"0":"")+t.toString(16)}function jc(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Ne(t,e,n,r)}function Vc(t){if(t instanceof Ne)return new Ne(t.h,t.s,t.l,t.opacity);if(t instanceof mt||(t=Ut(t)),!t)return new Ne;if(t instanceof Ne)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,a=o-i,u=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=u<.5?o+i:2-o-i,s*=60):a=u>0&&u<1?0:s,new Ne(s,a,u,t.opacity)}function As(t,e,n,r){return arguments.length===1?Vc(t):new Ne(t,e,n,r??1)}function Ne(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}gn(Ne,As,gr(mt,{brighter(t){return t=t==null?mn:Math.pow(mn,t),new Ne(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Gt:Math.pow(Gt,t),new Ne(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new ne(xs(t>=240?t-240:t+120,i,r),xs(t,i,r),xs(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Ne(Yc(this.h),Ti(this.s),Ti(this.l),Ii(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Ii(this.opacity);return`${t===1?"hsl(":"hsla("}${Yc(this.h)}, ${Ti(this.s)*100}%, ${Ti(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Yc(t){return t=(t||0)%360,t<0?t+360:t}function Ti(t){return Math.max(0,Math.min(1,t||0))}function xs(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const Wc=Math.PI/180,Xc=180/Math.PI,Pi=18,Zc=.96422,Kc=1,qc=.82521,Jc=4/29,xn=6/29,_c=3*xn*xn,pm=xn*xn*xn;function $c(t){if(t instanceof Xe)return new Xe(t.l,t.a,t.b,t.opacity);if(t instanceof rt)return el(t);t instanceof ne||(t=ms(t));var e=Cs(t.r),n=Cs(t.g),r=Cs(t.b),i=bs((.2225045*e+.7168786*n+.0606169*r)/Kc),o,s;return e===n&&n===r?o=s=i:(o=bs((.4360747*e+.3850649*n+.1430804*r)/Zc),s=bs((.0139322*e+.0971045*n+.7141733*r)/qc)),new Xe(116*i-16,500*(o-i),200*(i-s),t.opacity)}function ys(t,e,n,r){return arguments.length===1?$c(t):new Xe(t,e,n,r??1)}function Xe(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}gn(Xe,ys,gr(mt,{brighter(t){return new Xe(this.l+Pi*(t??1),this.a,this.b,this.opacity)},darker(t){return new Xe(this.l-Pi*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=Zc*ws(e),t=Kc*ws(t),n=qc*ws(n),new ne(vs(3.1338561*e-1.6168667*t-.4906146*n),vs(-.9787684*e+1.9161415*t+.033454*n),vs(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function bs(t){return t>pm?Math.pow(t,1/3):t/_c+Jc}function ws(t){return t>xn?t*t*t:_c*(t-Jc)}function vs(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Cs(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function gm(t){if(t instanceof rt)return new rt(t.h,t.c,t.l,t.opacity);if(t instanceof Xe||(t=$c(t)),t.a===0&&t.b===0)return new rt(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Xc;return new rt(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Es(t,e,n,r){return arguments.length===1?gm(t):new rt(t,e,n,r??1)}function rt(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function el(t){if(isNaN(t.h))return new Xe(t.l,0,0,t.opacity);var e=t.h*Wc;return new Xe(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}gn(rt,Es,gr(mt,{brighter(t){return new rt(this.h,this.c,this.l+Pi*(t??1),this.opacity)},darker(t){return new rt(this.h,this.c,this.l-Pi*(t??1),this.opacity)},rgb(){return el(this).rgb()}}));var tl=-.14861,Ss=1.78277,Ds=-.29227,Ri=-.90649,Ar=1.97294,nl=Ar*Ri,rl=Ar*Ss,il=Ss*Ds-Ri*tl;function mm(t){if(t instanceof jt)return new jt(t.h,t.s,t.l,t.opacity);t instanceof ne||(t=ms(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(il*r+nl*e-rl*n)/(il+nl-rl),o=r-i,s=(Ar*(n-i)-Ds*o)/Ri,a=Math.sqrt(s*s+o*o)/(Ar*i*(1-i)),u=a?Math.atan2(s,o)*Xc-120:NaN;return new jt(u<0?u+360:u,a,i,t.opacity)}function Bs(t,e,n,r){return arguments.length===1?mm(t):new jt(t,e,n,r??1)}function jt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}gn(jt,Bs,gr(mt,{brighter(t){return t=t==null?mn:Math.pow(mn,t),new jt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Gt:Math.pow(Gt,t),new jt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*Wc,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new ne(255*(e+n*(tl*r+Ss*i)),255*(e+n*(Ds*r+Ri*i)),255*(e+n*(Ar*r)),this.opacity)}}));function ol(t,e,n,r,i){var o=t*t,s=o*t;return((1-3*t+3*o-s)*e+(4-6*o+3*s)*n+(1+3*t+3*o-3*s)*r+s*i)/6}function sl(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],s=r>0?t[r-1]:2*i-o,a=r<e-1?t[r+2]:2*o-i;return ol((n-r/e)*e,s,i,o,a)}}function al(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],s=t[(r+1)%e],a=t[(r+2)%e];return ol((n-r/e)*e,i,o,s,a)}}const Li=t=>()=>t;function ul(t,e){return function(n){return t+n*e}}function Am(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function ki(t,e){var n=e-t;return n?ul(t,n>180||n<-180?n-360*Math.round(n/360):n):Li(isNaN(t)?e:t)}function xm(t){return(t=+t)==1?re:function(e,n){return n-e?Am(e,n,t):Li(isNaN(e)?n:e)}}function re(t,e){var n=e-t;return n?ul(t,n):Li(isNaN(t)?e:t)}const Fs=function t(e){var n=xm(e);function r(i,o){var s=n((i=Mi(i)).r,(o=Mi(o)).r),a=n(i.g,o.g),u=n(i.b,o.b),c=re(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=u(f),i.opacity=c(f),i+""}}return r.gamma=t,r}(1);function cl(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),s,a;for(s=0;s<n;++s)a=Mi(e[s]),r[s]=a.r||0,i[s]=a.g||0,o[s]=a.b||0;return r=t(r),i=t(i),o=t(o),a.opacity=1,function(u){return a.r=r(u),a.g=i(u),a.b=o(u),a+""}}}var ym=cl(sl),bm=cl(al);function Ms(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function ll(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function wm(t,e){return(ll(e)?Ms:fl)(t,e)}function fl(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),s;for(s=0;s<r;++s)i[s]=At(t[s],e[s]);for(;s<n;++s)o[s]=e[s];return function(a){for(s=0;s<r;++s)o[s]=i[s](a);return o}}function hl(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function ze(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function dl(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=At(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var Is=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ts=new RegExp(Is.source,"g");function vm(t){return function(){return t}}function Cm(t){return function(e){return t(e)+""}}function pl(t,e){var n=Is.lastIndex=Ts.lastIndex=0,r,i,o,s=-1,a=[],u=[];for(t=t+"",e=e+"";(r=Is.exec(t))&&(i=Ts.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,u.push({i:s,x:ze(r,i)})),n=Ts.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?u[0]?Cm(u[0].x):vm(e):(e=u.length,function(c){for(var f=0,l;f<e;++f)a[(l=u[f]).i]=l.x(c);return a.join("")})}function At(t,e){var n=typeof e,r;return e==null||n==="boolean"?Li(e):(n==="number"?ze:n==="string"?(r=Ut(e))?(e=r,Fs):pl:e instanceof Ut?Fs:e instanceof Date?hl:ll(e)?Ms:Array.isArray(e)?fl:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?dl:ze)(t,e)}function Em(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function Sm(t,e){var n=ki(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function xr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var gl=180/Math.PI,Ps={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ml(t,e,n,r,i,o){var s,a,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,u/=a),t*r<e*n&&(t=-t,e=-e,u=-u,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*gl,skewX:Math.atan(u)*gl,scaleX:s,scaleY:a}}var Ni;function Dm(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Ps:ml(e.a,e.b,e.c,e.d,e.e,e.f)}function Bm(t){return t==null||(Ni||(Ni=document.createElementNS("http://www.w3.org/2000/svg","g")),Ni.setAttribute("transform",t),!(t=Ni.transform.baseVal.consolidate()))?Ps:(t=t.matrix,ml(t.a,t.b,t.c,t.d,t.e,t.f))}function Al(t,e,n,r){function i(c){return c.length?c.pop()+" ":""}function o(c,f,l,h,p,d){if(c!==l||f!==h){var g=p.push("translate(",null,e,null,n);d.push({i:g-4,x:ze(c,l)},{i:g-2,x:ze(f,h)})}else(l||h)&&p.push("translate("+l+e+h+n)}function s(c,f,l,h){c!==f?(c-f>180?f+=360:f-c>180&&(c+=360),h.push({i:l.push(i(l)+"rotate(",null,r)-2,x:ze(c,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(c,f,l,h){c!==f?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:ze(c,f)}):f&&l.push(i(l)+"skewX("+f+r)}function u(c,f,l,h,p,d){if(c!==l||f!==h){var g=p.push(i(p)+"scale(",null,",",null,")");d.push({i:g-4,x:ze(c,l)},{i:g-2,x:ze(f,h)})}else(l!==1||h!==1)&&p.push(i(p)+"scale("+l+","+h+")")}return function(c,f){var l=[],h=[];return c=t(c),f=t(f),o(c.translateX,c.translateY,f.translateX,f.translateY,l,h),s(c.rotate,f.rotate,l,h),a(c.skewX,f.skewX,l,h),u(c.scaleX,c.scaleY,f.scaleX,f.scaleY,l,h),c=f=null,function(p){for(var d=-1,g=h.length,m;++d<g;)l[(m=h[d]).i]=m.x(p);return l.join("")}}}var Fm=Al(Dm,"px, ","px)","deg)"),Mm=Al(Bm,", ",")",")"),Im=1e-12;function xl(t){return((t=Math.exp(t))+1/t)/2}function Tm(t){return((t=Math.exp(t))-1/t)/2}function Pm(t){return((t=Math.exp(2*t))-1)/(t+1)}const yl=function t(e,n,r){function i(o,s){var a=o[0],u=o[1],c=o[2],f=s[0],l=s[1],h=s[2],p=f-a,d=l-u,g=p*p+d*d,m,A;if(g<Im)A=Math.log(h/c)/e,m=function(w){return[a+w*p,u+w*d,c*Math.exp(e*w*A)]};else{var y=Math.sqrt(g),b=(h*h-c*c+r*g)/(2*c*n*y),C=(h*h-c*c-r*g)/(2*h*n*y),B=Math.log(Math.sqrt(b*b+1)-b),E=Math.log(Math.sqrt(C*C+1)-C);A=(E-B)/e,m=function(w){var X=w*A,H=xl(B),ae=c/(n*y)*(H*Pm(e*X+B)-Tm(B));return[a+ae*p,u+ae*d,c*H/xl(e*X+B)]}}return m.duration=A*1e3*e/Math.SQRT2,m}return i.rho=function(o){var s=Math.max(.001,+o),a=s*s,u=a*a;return t(s,a,u)},i}(Math.SQRT2,2,4);function bl(t){return function(e,n){var r=t((e=As(e)).h,(n=As(n)).h),i=re(e.s,n.s),o=re(e.l,n.l),s=re(e.opacity,n.opacity);return function(a){return e.h=r(a),e.s=i(a),e.l=o(a),e.opacity=s(a),e+""}}}const Rm=bl(ki);var Lm=bl(re);function km(t,e){var n=re((t=ys(t)).l,(e=ys(e)).l),r=re(t.a,e.a),i=re(t.b,e.b),o=re(t.opacity,e.opacity);return function(s){return t.l=n(s),t.a=r(s),t.b=i(s),t.opacity=o(s),t+""}}function wl(t){return function(e,n){var r=t((e=Es(e)).h,(n=Es(n)).h),i=re(e.c,n.c),o=re(e.l,n.l),s=re(e.opacity,n.opacity);return function(a){return e.h=r(a),e.c=i(a),e.l=o(a),e.opacity=s(a),e+""}}}const Nm=wl(ki);var zm=wl(re);function vl(t){return function e(n){n=+n;function r(i,o){var s=t((i=Bs(i)).h,(o=Bs(o)).h),a=re(i.s,o.s),u=re(i.l,o.l),c=re(i.opacity,o.opacity);return function(f){return i.h=s(f),i.s=a(f),i.l=u(Math.pow(f,n)),i.opacity=c(f),i+""}}return r.gamma=e,r}(1)}const Om=vl(ki);var Gm=vl(re);function Rs(t,e){e===void 0&&(e=t,t=At);for(var n=0,r=e.length-1,i=e[0],o=new Array(r<0?0:r);n<r;)o[n]=t(i,i=e[++n]);return function(s){var a=Math.max(0,Math.min(r-1,Math.floor(s*=r)));return o[a](s-a)}}function Um(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}const Hm=Object.freeze(Object.defineProperty({__proto__:null,interpolate:At,interpolateArray:wm,interpolateBasis:sl,interpolateBasisClosed:al,interpolateCubehelix:Om,interpolateCubehelixLong:Gm,interpolateDate:hl,interpolateDiscrete:Em,interpolateHcl:Nm,interpolateHclLong:zm,interpolateHsl:Rm,interpolateHslLong:Lm,interpolateHue:Sm,interpolateLab:km,interpolateNumber:ze,interpolateNumberArray:Ms,interpolateObject:dl,interpolateRgb:Fs,interpolateRgbBasis:ym,interpolateRgbBasisClosed:bm,interpolateRound:xr,interpolateString:pl,interpolateTransformCss:Fm,interpolateTransformSvg:Mm,interpolateZoom:yl,piecewise:Rs,quantize:Um},Symbol.toStringTag,{value:"Module"}));function Qm(t){return function(){return t}}function Ls(t){return+t}var Cl=[0,1];function xe(t){return t}function ks(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Qm(isNaN(e)?NaN:.5)}function jm(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Vm(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=ks(i,r),o=n(s,o)):(r=ks(r,i),o=n(o,s)),function(a){return o(r(a))}}function Ym(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),s=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<r;)i[s]=ks(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var u=sn(t,a,1,r)-1;return o[u](i[u](a))}}function yr(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function zi(){var t=Cl,e=Cl,n=At,r,i,o,s=xe,a,u,c;function f(){var h=Math.min(t.length,e.length);return s!==xe&&(s=jm(t[0],t[h-1])),a=h>2?Ym:Vm,u=c=null,l}function l(h){return h==null||isNaN(h=+h)?o:(u||(u=a(t.map(r),e,n)))(r(s(h)))}return l.invert=function(h){return s(i((c||(c=a(e,t.map(r),ze)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,Ls),f()):t.slice()},l.range=function(h){return arguments.length?(e=Array.from(h),f()):e.slice()},l.rangeRound=function(h){return e=Array.from(h),n=xr,f()},l.clamp=function(h){return arguments.length?(s=h?!0:xe,f()):s!==xe},l.interpolate=function(h){return arguments.length?(n=h,f()):n},l.unknown=function(h){return arguments.length?(o=h,l):o},function(h,p){return r=h,i=p,f()}}function El(){return zi()(xe,xe)}function Sl(t,e,n,r){var i=Pt(t,e,n),o;switch(r=lt(r??",f"),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=Uu(i,s))&&(r.precision=o),Vo(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Hu(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=Gu(i))&&(r.precision=o-(r.type==="%")*2);break}}return oe(r)}function Vt(t){var e=t.domain;return t.ticks=function(n){var r=e();return di(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var i=e();return Sl(i[0],i[i.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,s=r[i],a=r[o],u,c,f=10;for(a<s&&(c=s,s=a,a=c,c=i,i=o,o=c);f-- >0;){if(c=Tu(s,a,n),c===u)return r[i]=s,r[o]=a,e(r);if(c>0)s=Math.floor(s/c)*c,a=Math.ceil(a/c)*c;else if(c<0)s=Math.ceil(s*c)/c,a=Math.floor(a*c)/c;else break;u=c}return t},t}function Dl(){var t=El();return t.copy=function(){return yr(t,Dl())},Ye.apply(t,arguments),Vt(t)}function Bl(t){var e;function n(r){return r==null||isNaN(r=+r)?e:r}return n.invert=n,n.domain=n.range=function(r){return arguments.length?(t=Array.from(r,Ls),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return Bl(t).unknown(e)},t=arguments.length?Array.from(t,Ls):[0,1],Vt(n)}function Fl(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],s;return o<i&&(s=n,n=r,r=s,s=i,i=o,o=s),t[n]=e.floor(i),t[r]=e.ceil(o),t}function Ml(t){return Math.log(t)}function Il(t){return Math.exp(t)}function Wm(t){return-Math.log(-t)}function Xm(t){return-Math.exp(-t)}function Zm(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Km(t){return t===10?Zm:t===Math.E?Math.exp:e=>Math.pow(t,e)}function qm(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),e=>Math.log(e)/t)}function Tl(t){return(e,n)=>-t(-e,n)}function Ns(t){const e=t(Ml,Il),n=e.domain;let r=10,i,o;function s(){return i=qm(r),o=Km(r),n()[0]<0?(i=Tl(i),o=Tl(o),t(Wm,Xm)):t(Ml,Il),e}return e.base=function(a){return arguments.length?(r=+a,s()):r},e.domain=function(a){return arguments.length?(n(a),s()):n()},e.ticks=a=>{const u=n();let c=u[0],f=u[u.length-1];const l=f<c;l&&([c,f]=[f,c]);let h=i(c),p=i(f),d,g;const m=a==null?10:+a;let A=[];if(!(r%1)&&p-h<m){if(h=Math.floor(h),p=Math.ceil(p),c>0){for(;h<=p;++h)for(d=1;d<r;++d)if(g=h<0?d/o(-h):d*o(h),!(g<c)){if(g>f)break;A.push(g)}}else for(;h<=p;++h)for(d=r-1;d>=1;--d)if(g=h>0?d/o(-h):d*o(h),!(g<c)){if(g>f)break;A.push(g)}A.length*2<m&&(A=di(c,f,m))}else A=di(h,p,Math.min(p-h,m)).map(o);return l?A.reverse():A},e.tickFormat=(a,u)=>{if(a==null&&(a=10),u==null&&(u=r===10?"s":","),typeof u!="function"&&(!(r%1)&&(u=lt(u)).precision==null&&(u.trim=!0),u=oe(u)),a===1/0)return u;const c=Math.max(1,r*a/e.ticks().length);return f=>{let l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=c?u(f):""}},e.nice=()=>n(Fl(n(),{floor:a=>o(Math.floor(i(a))),ceil:a=>o(Math.ceil(i(a)))})),e}function zs(){const t=Ns(zi()).domain([1,10]);return t.copy=()=>yr(t,zs()).base(t.base()),Ye.apply(t,arguments),t}function Pl(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function Rl(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Os(t){var e=1,n=t(Pl(e),Rl(e));return n.constant=function(r){return arguments.length?t(Pl(e=+r),Rl(e)):e},Vt(n)}function Ll(){var t=Os(zi());return t.copy=function(){return yr(t,Ll()).constant(t.constant())},Ye.apply(t,arguments)}function kl(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Jm(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function _m(t){return t<0?-t*t:t*t}function Gs(t){var e=t(xe,xe),n=1;function r(){return n===1?t(xe,xe):n===.5?t(Jm,_m):t(kl(n),kl(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Vt(e)}function Us(){var t=Gs(zi());return t.copy=function(){return yr(t,Us()).exponent(t.exponent())},Ye.apply(t,arguments),t}function $m(){return Us.apply(null,arguments).exponent(.5)}function Nl(){var t=[],e=[],n=[],r;function i(){var s=0,a=Math.max(1,e.length);for(n=new Array(a-1);++s<a;)n[s-1]=Pu(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[sn(n,s)]}return o.invertExtent=function(s){var a=e.indexOf(s);return a<0?[NaN,NaN]:[a>0?n[a-1]:t[0],a<n.length?n[a]:t[t.length-1]]},o.domain=function(s){if(!arguments.length)return t.slice();t=[];for(let a of s)a!=null&&!isNaN(a=+a)&&t.push(a);return t.sort(Zn),i()},o.range=function(s){return arguments.length?(e=Array.from(s),i()):e.slice()},o.unknown=function(s){return arguments.length?(r=s,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return Nl().domain(t).range(e).unknown(r)},Ye.apply(o,arguments)}function zl(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function s(u){return u!=null&&u<=u?i[sn(r,u,0,n)]:o}function a(){var u=-1;for(r=new Array(n);++u<n;)r[u]=((u+1)*e-(u-n)*t)/(n+1);return s}return s.domain=function(u){return arguments.length?([t,e]=u,t=+t,e=+e,a()):[t,e]},s.range=function(u){return arguments.length?(n=(i=Array.from(u)).length-1,a()):i.slice()},s.invertExtent=function(u){var c=i.indexOf(u);return c<0?[NaN,NaN]:c<1?[t,r[0]]:c>=n?[r[n-1],e]:[r[c-1],r[c]]},s.unknown=function(u){return arguments.length&&(o=u),s},s.thresholds=function(){return r.slice()},s.copy=function(){return zl().domain([t,e]).range(i).unknown(o)},Ye.apply(Vt(s),arguments)}function Ol(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[sn(t,o,0,r)]:n}return i.domain=function(o){return arguments.length?(t=Array.from(o),r=Math.min(t.length,e.length-1),i):t.slice()},i.range=function(o){return arguments.length?(e=Array.from(o),r=Math.min(t.length,e.length-1),i):e.slice()},i.invertExtent=function(o){var s=e.indexOf(o);return[t[s-1],t[s]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return Ol().domain(t).range(e).unknown(n)},Ye.apply(i,arguments)}function eA(t){return new Date(t)}function tA(t){return t instanceof Date?+t:+new Date(+t)}function Hs(t,e,n,r,i,o,s,a,u,c){var f=El(),l=f.invert,h=f.domain,p=c(".%L"),d=c(":%S"),g=c("%I:%M"),m=c("%I %p"),A=c("%a %d"),y=c("%b %d"),b=c("%B"),C=c("%Y");function B(E){return(u(E)<E?p:a(E)<E?d:s(E)<E?g:o(E)<E?m:r(E)<E?i(E)<E?A:y:n(E)<E?b:C)(E)}return f.invert=function(E){return new Date(l(E))},f.domain=function(E){return arguments.length?h(Array.from(E,tA)):h().map(eA)},f.ticks=function(E){var w=h();return t(w[0],w[w.length-1],E??10)},f.tickFormat=function(E,w){return w==null?B:c(w)},f.nice=function(E){var w=h();return(!E||typeof E.range!="function")&&(E=e(w[0],w[w.length-1],E??10)),E?h(Fl(w,E)):f},f.copy=function(){return yr(f,Hs(t,e,n,r,i,o,s,a,u,c))},f}function nA(){return Ye.apply(Hs(hp,dp,ht,yi,qn,Lt,Jo,qo,ft,os).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function rA(){return Ye.apply(Hs(lp,fp,dt,wi,Jn,Nt,es,$o,ft,ss).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Oi(){var t=0,e=1,n,r,i,o,s=xe,a=!1,u;function c(l){return l==null||isNaN(l=+l)?u:s(i===0?.5:(l=(o(l)-n)*i,a?Math.max(0,Math.min(1,l)):l))}c.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),c):[t,e]},c.clamp=function(l){return arguments.length?(a=!!l,c):a},c.interpolator=function(l){return arguments.length?(s=l,c):s};function f(l){return function(h){var p,d;return arguments.length?([p,d]=h,s=l(p,d),c):[s(0),s(1)]}}return c.range=f(At),c.rangeRound=f(xr),c.unknown=function(l){return arguments.length?(u=l,c):u},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),c}}function xt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Qs(){var t=Vt(Oi()(xe));return t.copy=function(){return xt(t,Qs())},gt.apply(t,arguments)}function Gl(){var t=Ns(Oi()).domain([1,10]);return t.copy=function(){return xt(t,Gl()).base(t.base())},gt.apply(t,arguments)}function Ul(){var t=Os(Oi());return t.copy=function(){return xt(t,Ul()).constant(t.constant())},gt.apply(t,arguments)}function js(){var t=Gs(Oi());return t.copy=function(){return xt(t,js()).exponent(t.exponent())},gt.apply(t,arguments)}function iA(){return js.apply(null,arguments).exponent(.5)}function Gi(){var t=0,e=.5,n=1,r=1,i,o,s,a,u,c=xe,f,l=!1,h;function p(g){return isNaN(g=+g)?h:(g=.5+((g=+f(g))-o)*(r*g<r*o?a:u),c(l?Math.max(0,Math.min(1,g)):g))}p.domain=function(g){return arguments.length?([t,e,n]=g,i=f(t=+t),o=f(e=+e),s=f(n=+n),a=i===o?0:.5/(o-i),u=o===s?0:.5/(s-o),r=o<i?-1:1,p):[t,e,n]},p.clamp=function(g){return arguments.length?(l=!!g,p):l},p.interpolator=function(g){return arguments.length?(c=g,p):c};function d(g){return function(m){var A,y,b;return arguments.length?([A,y,b]=m,c=Rs(g,[A,y,b]),p):[c(0),c(.5),c(1)]}}return p.range=d(At),p.rangeRound=d(xr),p.unknown=function(g){return arguments.length?(h=g,p):h},function(g){return f=g,i=g(t),o=g(e),s=g(n),a=i===o?0:.5/(o-i),u=o===s?0:.5/(s-o),r=o<i?-1:1,p}}function Hl(){var t=Vt(Gi()(xe));return t.copy=function(){return xt(t,Hl())},gt.apply(t,arguments)}function Ql(){var t=Ns(Gi()).domain([.1,1,10]);return t.copy=function(){return xt(t,Ql()).base(t.base())},gt.apply(t,arguments)}function jl(){var t=Os(Gi());return t.copy=function(){return xt(t,jl()).constant(t.constant())},gt.apply(t,arguments)}function Vs(){var t=Gs(Gi());return t.copy=function(){return xt(t,Vs()).exponent(t.exponent())},gt.apply(t,arguments)}function oA(){return Vs.apply(null,arguments).exponent(.5)}function Ys(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const sA="identity",yn="linear",yt="log",br="pow",wr="sqrt",Ui="symlog",Vl="time",Yl="utc",Ze="sequential",bn="diverging",Ws="quantile",Wl="quantize",Xl="threshold",Xs="ordinal",Zs="point",Zl="band",Ks="bin-ordinal",J="continuous",vr="discrete",Cr="discretizing",Ie="interpolating",Kl="temporal";function aA(t){return function(e){let n=e[0],r=e[1],i;return r<n&&(i=n,n=r,r=i),[t.invert(n),t.invert(r)]}}function uA(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,s,a,u,c;for(i<r&&(a=r,r=i,i=a),u=0,c=n.length;u<c;++u)n[u]>=r&&n[u]<=i&&(o<0&&(o=u),s=u);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[s]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function qs(){const t=gs().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,s=!1,a=0,u=0,c=.5;delete t.unknown;function f(){const l=e().length,h=r[1]<r[0],p=r[1-h],d=Ys(l,a,u);let g=r[h-0];i=(p-g)/(d||1),s&&(i=Math.floor(i)),g+=(p-g-i*(l-a))*c,o=i*(1-a),s&&(g=Math.round(g),o=Math.round(o));const m=Kn(l).map(A=>g+i*A);return n(h?m.reverse():m)}return t.domain=function(l){return arguments.length?(e(l),f()):e()},t.range=function(l){return arguments.length?(r=[+l[0],+l[1]],f()):r.slice()},t.rangeRound=function(l){return r=[+l[0],+l[1]],s=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(s=!!l,f()):s},t.padding=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),a=u,f()):a},t.paddingInner=function(l){return arguments.length?(a=Math.max(0,Math.min(1,l)),f()):a},t.paddingOuter=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.align=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const h=r[1]<r[0],p=h?n().reverse():n(),d=p.length-1;let g=+l[0],m=+l[1],A,y,b;if(!(g!==g||m!==m)&&(m<g&&(b=g,g=m,m=b),!(m<p[0]||g>r[1-h])))return A=Math.max(0,Oo(p,g)-1),y=g===m?A:Oo(p,m)-1,g-p[A]>o+1e-10&&++A,h&&(b=A,A=d-y,y=d-b),A>y?void 0:e().slice(A,y+1)},t.invert=function(l){const h=t.invertRange([l,l]);return h&&h[0]},t.copy=function(){return qs().domain(e()).range(r).round(s).paddingInner(a).paddingOuter(u).align(c)},f()}function ql(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return ql(e())},t}function cA(){return ql(qs().paddingInner(1))}var lA=Array.prototype.map;function fA(t){return lA.call(t,Wn)}const hA=Array.prototype.slice;function Jl(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(sn(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=fA(r),n):t.slice()},n.range=function(r){return arguments.length?(e=hA.call(r),n):e.slice()},n.tickFormat=function(r,i){return Sl(t[0],ke(t),r??10,i)},n.copy=function(){return Jl().domain(n.domain()).range(n.range())},n}const Hi={};function dA(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?aA(o):o.invertExtent?uA(o):void 0),o.type=t,o};return r.metadata=li(Ro(n)),r}function N(t,e,n){return arguments.length>1?(Hi[t]=dA(t,e,n),this):pA(t)?Hi[t]:void 0}N(sA,Bl),N(yn,Dl,J),N(yt,zs,[J,yt]),N(br,Us,J),N(wr,$m,J),N(Ui,Ll,J),N(Vl,nA,[J,Kl]),N(Yl,rA,[J,Kl]),N(Ze,Qs,[J,Ie]),N("".concat(Ze,"-").concat(yn),Qs,[J,Ie]),N("".concat(Ze,"-").concat(yt),Gl,[J,Ie,yt]),N("".concat(Ze,"-").concat(br),js,[J,Ie]),N("".concat(Ze,"-").concat(wr),iA,[J,Ie]),N("".concat(Ze,"-").concat(Ui),Ul,[J,Ie]),N("".concat(bn,"-").concat(yn),Hl,[J,Ie]),N("".concat(bn,"-").concat(yt),Ql,[J,Ie,yt]),N("".concat(bn,"-").concat(br),Vs,[J,Ie]),N("".concat(bn,"-").concat(wr),oA,[J,Ie]),N("".concat(bn,"-").concat(Ui),jl,[J,Ie]),N(Ws,Nl,[Cr,Ws]),N(Wl,zl,Cr),N(Xl,Ol,Cr),N(Ks,Jl,[vr,Cr]),N(Xs,gs,vr),N(Zl,qs,vr),N(Zs,cA,vr);function pA(t){return It(Hi,t)}function Er(t,e){const n=Hi[t];return n&&n.metadata[e]}function Te(t){return Er(t,J)}function Yt(t){return Er(t,vr)}function wn(t){return Er(t,Cr)}function _l(t){return Er(t,yt)}function Qi(t){return Er(t,Ie)}function gA(t,e){const n=e[0],r=ke(e)-n;return function(i){return t(n+i*r)}}function ji(t,e,n){return Rs($l(e||"rgb",n),t)}function mA(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function $l(t,e){const n=Hm[AA(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function AA(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const xA={blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",cividis:"00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",turbo:"23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},yA={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"};function ef(t){const e=t.length/6|0,n=new Array(e);for(let r=0;r<e;)n[r]="#"+t.slice(r*6,++r*6);return n}function tf(t,e){for(const n in t)Js(n,e(t[n]))}const nf={};tf(yA,ef),tf(xA,t=>ji(ef(t)));function Js(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(nf[t]=e,this):nf[t]}const wE="";function bA(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}function rf(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function wA(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function Ke(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function vn(t){return t[t.length-1]}class vA{constructor(e){this.container=e,this.element=document.createElement("div"),this.element.className="tooltip",this._visible=!0,this.container.appendChild(this.element),this._previousTooltipDatum=void 0,this.enabledStack=[!0],this._penaltyUntil=0,this._lastCoords=void 0,this._previousMove=0,this.clear()}set visible(e){e!=this._visible&&(this.element.style.display=e?null:"none",this._visible=e)}get visible(){return this._visible}get enabled(){return vn(this.enabledStack)??!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=bA(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&CA(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const[n,r]=this.mouseCoords;let i=n+20;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-20-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+20,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(kc("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}kc(e,this.element),this.visible=!0,this.updatePlacement()}clear(){this._previousTooltipDatum=void 0,this.setContent(void 0)}updateWithDatum(e,n){e!==this._previousTooltipDatum&&(this._previousTooltipDatum=e,n||(n=r=>Promise.resolve(nt`${JSON.stringify(r)}`)),n(e).then(r=>this.setContent(r)).catch(r=>{if(r!=="debounced")throw r}))}_isPenalty(){return this._penaltyUntil&&this._penaltyUntil>performance.now()}}function CA(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const EA="RawCode",SA="Literal",DA="Property",BA="Identifier",FA="ArrayExpression",MA="BinaryExpression",IA="CallExpression",TA="ConditionalExpression",PA="LogicalExpression",RA="MemberExpression",LA="ObjectExpression",kA="UnaryExpression";function Oe(t){this.type=t}Oe.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=NA(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function NA(t){switch(t.type){case FA:return t.elements;case MA:case PA:return[t.left,t.right];case IA:return[t.callee].concat(t.arguments);case TA:return[t.test,t.consequent,t.alternate];case RA:return[t.object,t.property];case LA:return t.properties;case DA:return[t.key,t.value];case kA:return[t.argument];case BA:case SA:case EA:default:return[]}}var qe,S,x,ce,z,Vi=1,Sr=2,Wt=3,bt=4,Yi=5,Xt=6,ye=7,Dr=8,zA=9;qe={},qe[Vi]="Boolean",qe[Sr]="<end>",qe[Wt]="Identifier",qe[bt]="Keyword",qe[Yi]="Null",qe[Xt]="Numeric",qe[ye]="Punctuator",qe[Dr]="String",qe[zA]="RegularExpression";var OA="ArrayExpression",GA="BinaryExpression",UA="CallExpression",HA="ConditionalExpression",of="Identifier",QA="Literal",jA="LogicalExpression",VA="MemberExpression",YA="ObjectExpression",WA="Property",XA="UnaryExpression",ie="Unexpected token %0",ZA="Unexpected number",KA="Unexpected string",qA="Unexpected identifier",JA="Unexpected reserved word",_A="Unexpected end of input",_s="Invalid regular expression",$s="Invalid regular expression: missing /",sf="Octal literals are not allowed in strict mode.",$A="Duplicate data property in object literal not allowed in strict mode",se="ILLEGAL",Br="Disabled.",e1=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),t1=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function Wi(t,e){if(!t)throw new Error("ASSERT: "+e)}function it(t){return t>=48&&t<=57}function ea(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Fr(t){return"01234567".indexOf(t)>=0}function n1(t){return t===32||t===9||t===11||t===12||t===160||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function Mr(t){return t===10||t===13||t===8232||t===8233}function Ir(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&e1.test(String.fromCharCode(t))}function Xi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&t1.test(String.fromCharCode(t))}const r1={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function af(){for(;x<ce;){const t=S.charCodeAt(x);if(n1(t)||Mr(t))++x;else break}}function ta(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)x<ce&&ea(S[x])?(r=S[x++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):L({},ie,se);return String.fromCharCode(i)}function i1(){var t,e,n,r;for(t=S[x],e=0,t==="}"&&L({},ie,se);x<ce&&(t=S[x++],!!ea(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&L({},ie,se),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function uf(){var t,e;for(t=S.charCodeAt(x++),e=String.fromCharCode(t),t===92&&(S.charCodeAt(x)!==117&&L({},ie,se),++x,t=ta("u"),(!t||t==="\\"||!Ir(t.charCodeAt(0)))&&L({},ie,se),e=t);x<ce&&(t=S.charCodeAt(x),!!Xi(t));)++x,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),S.charCodeAt(x)!==117&&L({},ie,se),++x,t=ta("u"),(!t||t==="\\"||!Xi(t.charCodeAt(0)))&&L({},ie,se),e+=t);return e}function o1(){var t,e;for(t=x++;x<ce;){if(e=S.charCodeAt(x),e===92)return x=t,uf();if(Xi(e))++x;else break}return S.slice(t,x)}function s1(){var t,e,n;return t=x,e=S.charCodeAt(x)===92?uf():o1(),e.length===1?n=Wt:r1.hasOwnProperty(e)?n=bt:e==="null"?n=Yi:e==="true"||e==="false"?n=Vi:n=Wt,{type:n,value:e,start:t,end:x}}function na(){var t=x,e=S.charCodeAt(x),n,r=S[x],i,o,s;switch(e){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++x,{type:ye,value:String.fromCharCode(e),start:t,end:x};default:if(n=S.charCodeAt(x+1),n===61)switch(e){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return x+=2,{type:ye,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:x};case 33:case 61:return x+=2,S.charCodeAt(x)===61&&++x,{type:ye,value:S.slice(t,x),start:t,end:x}}}if(s=S.substr(x,4),s===">>>=")return x+=4,{type:ye,value:s,start:t,end:x};if(o=s.substr(0,3),o===">>>"||o==="<<="||o===">>=")return x+=3,{type:ye,value:o,start:t,end:x};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return x+=2,{type:ye,value:i,start:t,end:x};if(i==="//"&&L({},ie,se),"<>=!+-*%&|^/".indexOf(r)>=0)return++x,{type:ye,value:r,start:t,end:x};L({},ie,se)}function a1(t){let e="";for(;x<ce&&ea(S[x]);)e+=S[x++];return e.length===0&&L({},ie,se),Ir(S.charCodeAt(x))&&L({},ie,se),{type:Xt,value:parseInt("0x"+e,16),start:t,end:x}}function u1(t){let e="0"+S[x++];for(;x<ce&&Fr(S[x]);)e+=S[x++];return(Ir(S.charCodeAt(x))||it(S.charCodeAt(x)))&&L({},ie,se),{type:Xt,value:parseInt(e,8),octal:!0,start:t,end:x}}function cf(){var t,e,n;if(n=S[x],Wi(it(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=x,t="",n!=="."){if(t=S[x++],n=S[x],t==="0"){if(n==="x"||n==="X")return++x,a1(e);if(Fr(n))return u1(e);n&&it(n.charCodeAt(0))&&L({},ie,se)}for(;it(S.charCodeAt(x));)t+=S[x++];n=S[x]}if(n==="."){for(t+=S[x++];it(S.charCodeAt(x));)t+=S[x++];n=S[x]}if(n==="e"||n==="E")if(t+=S[x++],n=S[x],(n==="+"||n==="-")&&(t+=S[x++]),it(S.charCodeAt(x)))for(;it(S.charCodeAt(x));)t+=S[x++];else L({},ie,se);return Ir(S.charCodeAt(x))&&L({},ie,se),{type:Xt,value:parseFloat(t),start:e,end:x}}function c1(){var t="",e,n,r,i,o=!1;for(e=S[x],Wi(e==="'"||e==='"',"String literal must starts with a quote"),n=x,++x;x<ce;)if(r=S[x++],r===e){e="";break}else if(r==="\\")if(r=S[x++],!r||!Mr(r.charCodeAt(0)))switch(r){case"u":case"x":S[x]==="{"?(++x,t+=i1()):t+=ta(r);break;case"n":t+=`
15
+ `;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:Fr(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),x<ce&&Fr(S[x])&&(o=!0,i=i*8+"01234567".indexOf(S[x++]),"0123".indexOf(r)>=0&&x<ce&&Fr(S[x])&&(i=i*8+"01234567".indexOf(S[x++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&S[x]===`
16
+ `&&++x;else{if(Mr(r.charCodeAt(0)))break;t+=r}return e!==""&&L({},ie,se),{type:Dr,value:t,octal:o,start:n,end:x}}function l1(t,e){let n=t;e.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";L({},_s)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{L({},_s)}try{return new RegExp(t,e)}catch{return null}}function f1(){var t,e,n,r,i;for(t=S[x],Wi(t==="/","Regular expression literal must start with a slash"),e=S[x++],n=!1,r=!1;x<ce;)if(t=S[x++],e+=t,t==="\\")t=S[x++],Mr(t.charCodeAt(0))&&L({},$s),e+=t;else if(Mr(t.charCodeAt(0)))L({},$s);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||L({},$s),i=e.substr(1,e.length-2),{value:i,literal:e}}function h1(){var t,e,n;for(e="",n="";x<ce&&(t=S[x],!!Xi(t.charCodeAt(0)));)++x,t==="\\"&&x<ce?L({},ie,se):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&L({},_s,n),{value:n,literal:e}}function d1(){var t,e,n,r;return z=null,af(),t=x,e=f1(),n=h1(),r=l1(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:x}}function p1(t){return t.type===Wt||t.type===bt||t.type===Vi||t.type===Yi}function lf(){if(af(),x>=ce)return{type:Sr,start:x,end:x};const t=S.charCodeAt(x);return Ir(t)?s1():t===40||t===41||t===59?na():t===39||t===34?c1():t===46?it(S.charCodeAt(x+1))?cf():na():it(t)?cf():na()}function be(){const t=z;return x=t.end,z=lf(),x=t.end,t}function ff(){const t=x;z=lf(),x=t}function g1(t){const e=new Oe(OA);return e.elements=t,e}function hf(t,e,n){const r=new Oe(t==="||"||t==="&&"?jA:GA);return r.operator=t,r.left=e,r.right=n,r}function m1(t,e){const n=new Oe(UA);return n.callee=t,n.arguments=e,n}function A1(t,e,n){const r=new Oe(HA);return r.test=t,r.consequent=e,r.alternate=n,r}function ra(t){const e=new Oe(of);return e.name=t,e}function Tr(t){const e=new Oe(QA);return e.value=t.value,e.raw=S.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function df(t,e,n){const r=new Oe(VA);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function x1(t){const e=new Oe(YA);return e.properties=t,e}function pf(t,e,n){const r=new Oe(WA);return r.key=e,r.value=n,r.kind=t,r}function y1(t,e){const n=new Oe(XA);return n.operator=t,n.argument=e,n.prefix=!0,n}function L(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,s)=>(Wi(s<r.length,"Message reference must be in range"),r[s]));throw n=new Error(i),n.index=x,n.description=i,n}function Zi(t){t.type===Sr&&L(t,_A),t.type===Xt&&L(t,ZA),t.type===Dr&&L(t,KA),t.type===Wt&&L(t,qA),t.type===bt&&L(t,JA),L(t,ie,t.value)}function le(t){const e=be();(e.type!==ye||e.value!==t)&&Zi(e)}function U(t){return z.type===ye&&z.value===t}function ia(t){return z.type===bt&&z.value===t}function b1(){const t=[];for(x=z.start,le("[");!U("]");)U(",")?(be(),t.push(null)):(t.push(Zt()),U("]")||le(","));return be(),g1(t)}function gf(){x=z.start;const t=be();return t.type===Dr||t.type===Xt?(t.octal&&L(t,sf),Tr(t)):ra(t.value)}function w1(){var t,e,n,r;if(x=z.start,t=z,t.type===Wt)return n=gf(),le(":"),r=Zt(),pf("init",n,r);if(t.type===Sr||t.type===ye)Zi(t);else return e=gf(),le(":"),r=Zt(),pf("init",e,r)}function v1(){var t=[],e,n,r,i={},o=String;for(x=z.start,le("{");!U("}");)e=w1(),e.key.type===of?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?L({},$A):i[r]=!0,t.push(e),U("}")||le(",");return le("}"),x1(t)}function C1(){le("(");const t=oa();return le(")"),t}const E1={if:1};function S1(){var t,e,n;if(U("("))return C1();if(U("["))return b1();if(U("{"))return v1();if(t=z.type,x=z.start,t===Wt||E1[z.value])n=ra(be().value);else if(t===Dr||t===Xt)z.octal&&L(z,sf),n=Tr(be());else{if(t===bt)throw new Error(Br);t===Vi?(e=be(),e.value=e.value==="true",n=Tr(e)):t===Yi?(e=be(),e.value=null,n=Tr(e)):U("/")||U("/=")?(n=Tr(d1()),ff()):Zi(be())}return n}function D1(){const t=[];if(le("("),!U(")"))for(;x<ce&&(t.push(Zt()),!U(")"));)le(",");return le(")"),t}function B1(){x=z.start;const t=be();return p1(t)||Zi(t),ra(t.value)}function F1(){return le("."),B1()}function M1(){le("[");const t=oa();return le("]"),t}function I1(){var t,e,n;for(t=S1();;)if(U("."))n=F1(),t=df(".",t,n);else if(U("("))e=D1(),t=m1(t,e);else if(U("["))n=M1(),t=df("[",t,n);else break;return t}function mf(){const t=I1();if(z.type===ye&&(U("++")||U("--")))throw new Error(Br);return t}function Ki(){var t,e;if(z.type!==ye&&z.type!==bt)e=mf();else{if(U("++")||U("--"))throw new Error(Br);if(U("+")||U("-")||U("~")||U("!"))t=be(),e=Ki(),e=y1(t.value,e);else{if(ia("delete")||ia("void")||ia("typeof"))throw new Error(Br);e=mf()}}return e}function Af(t){let e=0;if(t.type!==ye&&t.type!==bt)return 0;switch(t.value){case"||":e=1;break;case"&&":e=2;break;case"|":e=3;break;case"^":e=4;break;case"&":e=5;break;case"==":case"!=":case"===":case"!==":e=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11;break}return e}function T1(){var t,e,n,r,i,o,s,a,u,c;if(t=z,u=Ki(),r=z,i=Af(r),i===0)return u;for(r.prec=i,be(),e=[t,z],s=Ki(),o=[u,r,s];(i=Af(z))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)s=o.pop(),a=o.pop().value,u=o.pop(),e.pop(),n=hf(a,u,s),o.push(n);r=be(),r.prec=i,o.push(r),e.push(z),n=Ki(),o.push(n)}for(c=o.length-1,n=o[c],e.pop();c>1;)e.pop(),n=hf(o[c-1].value,o[c-2],n),c-=2;return n}function Zt(){var t,e,n;return t=T1(),U("?")&&(be(),e=Zt(),le(":"),n=Zt(),t=A1(t,e,n)),t}function oa(){const t=Zt();if(U(","))throw new Error(Br);return t}function P1(t){S=t,x=0,ce=S.length,z=null,ff();const e=oa();if(z.type!==Sr)throw new Error("Unexpect token after expression.");return e}var R1={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function L1(t){function e(s,a,u,c){let f=t(a[0]);return u&&(f=u+"("+f+")",u.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+s+(c<0?"":c===0?"()":"("+a.slice(1).map(t).join(",")+")")}function n(s,a,u){return c=>e(s,c,a,u)}const r="new Date",i="String",o="RegExp";return{isNaN:"Number.isNaN",isFinite:"Number.isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(s){s.length<3&&Y("Missing arguments to clamp function."),s.length>3&&Y("Too many arguments to clamp function.");const a=s.map(t);return"Math.max("+a[1]+", Math.min("+a[2]+","+a[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:r,date:n("getDate",r,0),day:n("getDay",r,0),year:n("getFullYear",r,0),month:n("getMonth",r,0),hours:n("getHours",r,0),minutes:n("getMinutes",r,0),seconds:n("getSeconds",r,0),milliseconds:n("getMilliseconds",r,0),time:n("getTime",r,0),timezoneoffset:n("getTimezoneOffset",r,0),utcdate:n("getUTCDate",r,0),utcday:n("getUTCDay",r,0),utcyear:n("getUTCFullYear",r,0),utcmonth:n("getUTCMonth",r,0),utchours:n("getUTCHours",r,0),utcminutes:n("getUTCMinutes",r,0),utcseconds:n("getUTCSeconds",r,0),utcmilliseconds:n("getUTCMilliseconds",r,0),length:n("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:n("toUpperCase",i,0),lower:n("toLowerCase",i,0),substring:n("substring",i),split:n("split",i),trim:n("trim",i,0),regexp:o,test:n("test",o),if:function(s){s.length<3&&Y("Missing arguments to if function."),s.length>3&&Y("Too many arguments to if function.");const a=s.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function k1(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function N1(t){t=t||{};const e=t.allowed?li(t.allowed):{},n=t.forbidden?li(t.forbidden):{},r=t.constants||R1,i=(t.functions||L1)(l),o=t.globalvar,s=t.fieldvar,a=ge(o)?o:d=>`${o}["${d}"]`;let u={},c={},f=0;function l(d){if(W(d))return d;const g=h[d.type];return g==null&&Y("Unsupported type: "+d.type),g(d)}const h={Literal:d=>d.raw,Identifier:d=>{const g=d.name;return f>0?g:It(n,g)?Y("Illegal identifier: "+g):It(r,g)?r[g]:It(e,g)?g:(u[g]=1,a(g))},MemberExpression:d=>{const g=!d.computed,m=l(d.object);g&&(f+=1);const A=l(d.property);return m===s&&(c[k1(A)]=1),g&&(f-=1),m+(g?"."+A:"["+A+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&Y("Illegal callee type: "+d.callee.type);const g=d.callee.name,m=d.arguments,A=It(i,g)&&i[g];return A||Y("Unrecognized function: "+g),ge(A)?A(m):A+"("+m.map(l).join(",")+")"},ArrayExpression:d=>"["+d.elements.map(l).join(",")+"]",BinaryExpression:d=>"("+l(d.left)+" "+d.operator+" "+l(d.right)+")",UnaryExpression:d=>"("+d.operator+l(d.argument)+")",ConditionalExpression:d=>"("+l(d.test)+"?"+l(d.consequent)+":"+l(d.alternate)+")",LogicalExpression:d=>"("+l(d.left)+d.operator+l(d.right)+")",ObjectExpression:d=>"{"+d.properties.map(l).join(",")+"}",Property:d=>{f+=1;const g=l(d.key);return f-=1,g+":"+l(d.value)}};function p(d){const g={code:l(d),globals:Object.keys(u),fields:Object.keys(c)};return u={},c={},g}return p.functions=i,p.constants=r,p}function sa(t,e={}){const n=N1({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=P1(t),i=n(r),o=Function("datum","global",`"use strict"; return (${i.code});`),s=a=>o(a,e);return s.fields=i.fields,s}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function z1(){let t=0;const e=new Map,n=r=>{let i=e.get(r);return i===void 0&&(i=t++,e.set(r,i)),i};return n.addAll=r=>{for(const i of r)n(i)},n.invert=r=>{for(const i of e.entries())if(i[1]==r)return i[0]},n.domain=()=>[...e.keys()],n}function O1(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(Pe(i)&&i.resolutionChannel||r);n[r]=G1(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function G1(t,e,n,r){let i;if(Ge(t)){const o=t.value;i=s=>o,i.constant=!0,i.constantValue=!0,i.accessor=void 0}else if(n)if(r=="text")i=o=>{},i.accessor=n,i.constant=n.constant;else{if(!e)throw new Error(`Missing scale! "${r}": ${JSON.stringify(t)}`);if(i=o=>e(n(o)),Yt(e.type)){const o=z1();o.addAll(e.domain()),i.indexer=o}i.constant=n.constant,i.accessor=n,i.scale=e}else throw new Error(`Missing value or accessor (field, expr, datum) on channel "${r}": ${JSON.stringify(t)}`);return i.invert=e?o=>e.invert(o):o=>{throw new Error("No scale available, cannot invert: "+JSON.stringify(t))},i.channelDef=t,i.applyMetadata=o=>{for(const s in i)s in i&&(o[s]=i[s]);return o},i}function Ge(t){return t&&"value"in t}function Pr(t){return t&&"field"in t}function Rr(t){return t&&"datum"in t}function Pe(t){return Pr(t)||Rr(t)||ua(t)||xf(t)}function aa(t,e){const n=t.mark.encoding[e];if(Pe(n))return n;throw new Error("Not a channel def with scale!")}function xf(t){return t&&"chrom"in t}function ua(t){return t&&"expr"in t}const Lr=["x","y"],U1=["x2","y2"],H1=[...Lr,...U1];function yf(t){return Lr.includes(t)}function kr(t){return H1.includes(t)}const ca={x:"x2",y:"y2"},bf=Object.fromEntries(Object.entries(ca).map(t=>[t[1],t[0]]));function Nr(t){return t in bf}function Q1(t){const e=ca[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function Cn(t){return bf[t]??t}function Kt(t){return["color","fill","stroke"].includes(Cn(t))}function qi(t){return["shape","squeeze"].includes(t)}function wf(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function vf(t){if(!qi(t))throw new Error("Not a discrete channel: "+t);const e=new Map(wf(t).map((n,r)=>[n,r]));return n=>{const r=e.get(n);if(r!==void 0)return r;throw new Error(`Invalid value for "${t}" channel: ${n}`)}}function O(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return I(n,[t],e)}else return ri(t)}class j1{constructor(){this.accessorCreators=[],this.register(e=>{if(Pr(e))try{const n=O(e.field);return n.constant=!1,n.fields=Mt(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>ua(e)?V1(e.expr):void 0),this.register(e=>{if(Rr(e)){const r=yd(e.datum);return r.constant=!0,r.fields=[],r}})}register(e){this.accessorCreators.push(e)}createAccessor(e){for(const n of this.accessorCreators){const r=n(e);if(r)return r}}}function V1(t){const e=sa(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
17
17
  Available via the MIT license.
18
- see: http://github.com/greggman/twgl.js for details */const la=5120,Or=5121,fa=5122,ha=5123,da=5124,pa=5125,ga=5126,V1=32819,Y1=32820,W1=33635,X1=5131,Z1=33640,K1=35899,q1=35902,J1=36269,_1=34042,Cf={};{const t=Cf;t[la]=Int8Array,t[Or]=Uint8Array,t[fa]=Int16Array,t[ha]=Uint16Array,t[da]=Int32Array,t[pa]=Uint32Array,t[ga]=Float32Array,t[V1]=Uint16Array,t[Y1]=Uint16Array,t[W1]=Uint16Array,t[X1]=Uint16Array,t[Z1]=Uint32Array,t[K1]=Uint32Array,t[q1]=Uint32Array,t[J1]=Uint32Array,t[_1]=Uint32Array}function ma(t){if(t instanceof Int8Array)return la;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return Or;if(t instanceof Int16Array)return fa;if(t instanceof Uint16Array)return ha;if(t instanceof Int32Array)return da;if(t instanceof Uint32Array)return pa;if(t instanceof Float32Array)return ga;throw new Error("unsupported typed array type")}function $1(t){if(t===Int8Array)return la;if(t===Uint8Array||t===Uint8ClampedArray)return Or;if(t===Int16Array)return fa;if(t===Uint16Array)return ha;if(t===Int32Array)return da;if(t===Uint32Array)return pa;if(t===Float32Array)return ga;throw new Error("unsupported typed array type")}function ex(t){const e=Cf[t];if(!e)throw new Error("unknown gl type");return e}const _i=typeof SharedArrayBuffer<"u"?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function tx(...t){console.error(...t)}function Ef(...t){console.warn(...t)}function nx(t,e){return typeof WebGLBuffer<"u"&&e instanceof WebGLBuffer}function Sf(t,e){return typeof WebGLRenderbuffer<"u"&&e instanceof WebGLRenderbuffer}function $i(t,e){return typeof WebGLTexture<"u"&&e instanceof WebGLTexture}function rx(t,e){return typeof WebGLSampler<"u"&&e instanceof WebGLSampler}const Df=35044,Je=34962,ix=34963,ox=34660,sx=5120,ax=5121,ux=5122,cx=5123,lx=5124,fx=5125,hx=5126,Bf={attribPrefix:""};function Ff(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||Df)}function Mf(t,e,n,r){if(nx(t,e))return e;n=n||Je;const i=t.createBuffer();return Ff(t,n,i,e,r),i}function If(t){return t==="indices"}function dx(t){return t instanceof Int8Array||t instanceof Uint8Array}function px(t){return t===Int8Array||t===Uint8Array}function gx(t){return t.length?t:t.data}const mx=/coord|texture/i,Ax=/color|colour/i;function Tf(t,e){let n;if(mx.test(t)?n=2:Ax.test(t)?n=4:n=3,e%n>0)throw new Error(`Can not guess numComponents for attribute '${t}'. Tried ${n} but ${e} values is not evenly divisible by ${n}. You should specify it.`);return n}function xx(t,e){return t.numComponents||t.size||Tf(e,gx(t).length)}function Aa(t,e){if(_i(t))return t;if(_i(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(If(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function yx(t,e){const n={};return Object.keys(e).forEach(function(r){if(!If(r)){const i=e[r],o=i.attrib||i.name||i.attribName||Bf.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!_i(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let s,a,u,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)s=i.buffer,c=i.numComponents||i.size,a=i.type,u=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const f=i.data||i,l=i.type||Float32Array,h=f*l.BYTES_PER_ELEMENT;a=$1(l),u=i.normalize!==void 0?i.normalize:px(l),c=i.numComponents||i.size||Tf(r,f),s=t.createBuffer(),t.bindBuffer(Je,s),t.bufferData(Je,h,i.drawType||Df)}else{const f=Aa(i,r);s=Mf(t,f,void 0,i.drawType),a=ma(f),u=i.normalize!==void 0?i.normalize:dx(f),c=xx(i,r)}n[o]={buffer:s,numComponents:c,type:a,normalize:u,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(Je,null),n}function bx(t,e,n,r){n=Aa(n),r!==void 0?(t.bindBuffer(Je,e.buffer),t.bufferSubData(Je,r,n)):Ff(t,Je,e.buffer,n,e.drawType)}function wx(t,e){return e===sx||e===ax?1:e===ux||e===cx?2:e===lx||e===fx||e===hx?4:0}const xa=["position","positions","a_position"];function vx(t,e){let n,r;for(r=0;r<xa.length&&(n=xa[r],!(n in e||(n=Bf.attribPrefix+n,n in e)));++r);r===xa.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(Je,i.buffer);const o=t.getBufferParameter(Je,ox);t.bindBuffer(Je,null);const s=wx(t,i.type),a=o/s,u=i.numComponents||i.size,c=a/u;if(c%1!==0)throw new Error(`numComponents ${u} not correct for length ${length}`);return c}function Cx(t,e,n){const r=yx(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const s=Aa(o,"indices");i.indices=Mf(t,s,ix),i.numElements=s.length,i.elementType=ma(s)}else i.numElements||(i.numElements=vx(t,i.attribs));return i}function Sn(t){return!!t.texStorage2D}const ya=function(){const t={},e={};function n(r){const i=r.constructor.name;if(!t[i]){for(const o in r)if(typeof r[o]=="number"){const s=e[r[o]];e[r[o]]=s?`${s} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),vt={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Dn=_i,Pf=function(){let t;return function(){return t=t||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),Lf=6406,_e=6407,Y=6408,Rf=6409,kf=6410,Gr=6402,Nf=34041,eo=33071,Ex=9728,Sx=9729,st=3553,at=34067,Ct=32879,Et=35866,to=34069,Dx=34070,Bx=34071,Fx=34072,Mx=34073,Ix=34074,ba=10241,wa=10240,no=10242,ro=10243,zf=32882,Tx=33082,Px=33083,Lx=33084,Rx=33085,va=3317,Of=3314,Gf=32878,Uf=3316,Hf=3315,Qf=32877,kx=37443,Nx=37441,zx=37440,Ox=33321,Gx=36756,Ux=33325,Hx=33326,Qx=33330,jx=33329,Vx=33338,Yx=33337,Wx=33340,Xx=33339,Zx=33323,Kx=36757,qx=33327,Jx=33328,_x=33336,$x=33335,ey=33332,ty=33331,ny=33334,ry=33333,iy=32849,oy=35905,sy=36194,ay=36758,uy=35898,cy=35901,ly=34843,fy=34837,hy=36221,dy=36239,py=36215,gy=36233,my=36209,Ay=36227,xy=32856,yy=35907,by=36759,wy=32855,vy=32854,Cy=32857,Ey=34842,Sy=34836,Dy=36220,By=36238,Fy=36975,My=36214,Iy=36232,Ty=36226,Py=36208,Ly=33189,Ry=33190,ky=36012,Ny=36013,zy=35056,St=5120,W=5121,io=5122,Bn=5123,oo=5124,Jt=5125,fe=5126,jf=32819,Vf=32820,Yf=33635,He=5131,Ur=36193,Ca=33640,Oy=35899,Gy=35902,Uy=36269,Hy=34042,so=33319,Fn=33320,ao=6403,Mn=36244,In=36248,_t=36249;let Ea;function uo(t){if(!Ea){const e={};e[Lf]={textureFormat:Lf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[W,He,Ur,fe]},e[Rf]={textureFormat:Rf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[W,He,Ur,fe]},e[kf]={textureFormat:kf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[W,He,Ur,fe]},e[_e]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[W,He,Ur,fe,Yf]},e[Y]={textureFormat:Y,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[W,He,Ur,fe,jf,Vf]},e[Gr]={textureFormat:Gr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Jt,Bn]},e[Ox]={textureFormat:ao,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[W]},e[Gx]={textureFormat:ao,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[St]},e[Ux]={textureFormat:ao,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[fe,He]},e[Hx]={textureFormat:ao,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[Qx]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[W]},e[jx]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[St]},e[ey]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Bn]},e[ty]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[io]},e[ny]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Jt]},e[ry]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[oo]},e[Zx]={textureFormat:so,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[W]},e[Kx]={textureFormat:so,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[St]},e[qx]={textureFormat:so,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[fe,He]},e[Jx]={textureFormat:so,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[fe]},e[_x]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[W]},e[$x]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[St]},e[Vx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Bn]},e[Yx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[io]},e[Wx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Jt]},e[Xx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[oo]},e[iy]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[W]},e[oy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[W]},e[sy]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[W,Yf]},e[ay]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[St]},e[uy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,He,Oy]},e[cy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,He,Gy]},e[ly]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[fe,He]},e[fy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[fe]},e[hy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[W]},e[dy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[St]},e[py]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Bn]},e[gy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[io]},e[my]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Jt]},e[Ay]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[oo]},e[xy]={textureFormat:Y,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[W]},e[yy]={textureFormat:Y,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[W]},e[by]={textureFormat:Y,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[St]},e[wy]={textureFormat:Y,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[W,Vf,Ca]},e[vy]={textureFormat:Y,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[W,jf]},e[Cy]={textureFormat:Y,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Ca]},e[Ey]={textureFormat:Y,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[fe,He]},e[Sy]={textureFormat:Y,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[fe]},e[Dy]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[W]},e[By]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[St]},e[Fy]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ca]},e[My]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Bn]},e[Iy]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[io]},e[Ty]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[oo]},e[Py]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Jt]},e[Ly]={textureFormat:Gr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Bn,Jt]},e[Ry]={textureFormat:Gr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Jt]},e[ky]={textureFormat:Gr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[zy]={textureFormat:Nf,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Hy]},e[Ny]={textureFormat:Nf,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Uy]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,o){const s=r.type[o];r.bytesPerElementMap[s]=i})}),Ea=e}return Ea[t]}function Qy(t,e){const n=uo(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function Tn(t){const e=uo(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function Wf(t){return(t&t-1)===0}function jy(t,e,n,r){if(!Sn(t))return Wf(e)&&Wf(n);const i=uo(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function Vy(t){const e=uo(t);if(!e)throw"unknown internal format";return e.textureFilterable}function Xf(t,e,n){return Dn(e)?ma(e):n||W}function co(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===at?6:1));o%1===0?(n=o,r=o):(n=i,r=1)}else if(r){if(!n&&(n=i/r,n%1))throw"can't guess dimensions"}else if(r=i/n,r%1)throw"can't guess dimensions";return{width:n,height:r}}function Pn(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(kx,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(Nx,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(zx,e.flipY)}function Zf(t){t.pixelStorei(va,4),Sn(t)&&(t.pixelStorei(Of,0),t.pixelStorei(Gf,0),t.pixelStorei(Uf,0),t.pixelStorei(Hf,0),t.pixelStorei(Qf,0))}function Yy(t,e,n,r){r.minMag&&(n.call(t,e,ba,r.minMag),n.call(t,e,wa,r.minMag)),r.min&&n.call(t,e,ba,r.min),r.mag&&n.call(t,e,wa,r.mag),r.wrap&&(n.call(t,e,no,r.wrap),n.call(t,e,ro,r.wrap),(e===Ct||rx(t,e))&&n.call(t,e,zf,r.wrap)),r.wrapR&&n.call(t,e,zf,r.wrapR),r.wrapS&&n.call(t,e,no,r.wrapS),r.wrapT&&n.call(t,e,ro,r.wrapT),r.minLod&&n.call(t,e,Tx,r.minLod),r.maxLod&&n.call(t,e,Px,r.maxLod),r.baseLevel&&n.call(t,e,Lx,r.baseLevel),r.maxLevel&&n.call(t,e,Rx,r.maxLevel)}function Kf(t,e,n){const r=n.target||st;t.bindTexture(r,e),Yy(t,r,t.texParameteri,n)}function Wy(t){return t=t||vt.textureColor,Dn(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Sa(t,e,n,r,i,o){n=n||vt.textureOptions,o=o||Y;const s=n.target||st;if(r=r||n.width,i=i||n.height,t.bindTexture(s,e),jy(t,r,i,o))t.generateMipmap(s);else{const a=Vy(o)?Sx:Ex;t.texParameteri(s,ba,a),t.texParameteri(s,wa,a),t.texParameteri(s,no,eo),t.texParameteri(s,ro,eo)}}function Hr(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Da(t,e){return e=e||{},e.cubeFaceOrder||[to,Dx,Bx,Fx,Mx,Ix]}function Ba(t,e){const r=Da(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function qf(t,e,n,r){r=r||vt.textureOptions;const i=r.target||st,o=r.level||0;let s=n.width,a=n.height;const u=r.internalFormat||r.format||Y,c=Tn(u),f=r.format||c.format,l=r.type||c.type;if(Pn(t,r),t.bindTexture(i,e),i===at){const h=n.width,p=n.height;let d,g;if(h/6===p)d=p,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(p/6===h)d=h,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3===p/2)d=h/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2===p/3)d=h/2,g=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can't figure out cube map from element: "+(n.src?n.src:n.nodeName);const A=Pf();A?(A.canvas.width=d,A.canvas.height=d,s=d,a=d,Ba(t,r).forEach(function(m){const b=g[m.ndx*2+0]*d,y=g[m.ndx*2+1]*d;A.drawImage(n,b,y,d,d,0,0,d,d),t.texImage2D(m.face,o,u,f,l,A.canvas)}),A.canvas.width=1,A.canvas.height=1):typeof createImageBitmap<"u"&&(s=d,a=d,Ba(t,r).forEach(function(m){const b=g[m.ndx*2+0]*d,y=g[m.ndx*2+1]*d;t.texImage2D(m.face,o,u,d,d,0,f,l,null),createImageBitmap(n,b,y,d,d,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(w){Pn(t,r),t.bindTexture(i,e),t.texImage2D(m.face,o,u,f,l,w),Hr(r)&&Sa(t,e,r,s,a,u)})}))}else if(i===Ct||i===Et){const h=Math.min(n.width,n.height),p=Math.max(n.width,n.height),d=p/h;if(d%1!==0)throw"can not compute 3D dimensions of element";const g=n.width===p?1:0,A=n.height===p?1:0;t.pixelStorei(va,1),t.pixelStorei(Of,n.width),t.pixelStorei(Gf,0),t.pixelStorei(Qf,0),t.texImage3D(i,o,u,h,h,h,0,f,l,null);for(let m=0;m<d;++m){const b=m*h*g,y=m*h*A;t.pixelStorei(Uf,b),t.pixelStorei(Hf,y),t.texSubImage3D(i,o,0,0,m,h,h,1,f,l,n)}Zf(t)}else t.texImage2D(i,o,u,f,l,n);Hr(r)&&Sa(t,e,r,s,a,u),Kf(t,e,r)}function Qr(){}function Xy(t){if(typeof document<"u"){const e=document.createElement("a");return e.href=t,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(t,location.href).origin===e}}function Zy(t,e){return e===void 0&&!Xy(t)?"anonymous":e}function Ky(t,e,n){n=n||Qr;let r;if(e=e!==void 0?e:vt.crossOrigin,e=Zy(t,e),typeof Image<"u"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",s),r=null},o=function(){const u="couldn't load image: "+t;tx(u),n(u,r),i()},s=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",s),r.src=t,r}else if(typeof ImageBitmap<"u"){let i,o;const s=function(){n(i,o)},a={};e&&(a.mode="cors"),fetch(t,a).then(function(u){if(!u.ok)throw u;return u.blob()}).then(function(u){return createImageBitmap(u,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(u){o=u,setTimeout(s)}).catch(function(u){i=u,setTimeout(s)}),r=null}return r}function Jf(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof ImageData<"u"&&t instanceof ImageData||typeof HTMLElement<"u"&&t instanceof HTMLElement}function Fa(t,e,n){return Jf(t)?(setTimeout(function(){n(null,t)}),t):Ky(t,e,n)}function Ma(t,e,n){n=n||vt.textureOptions;const r=n.target||st;if(t.bindTexture(r,e),n.color===!1)return;const i=Wy(n.color);if(r===at)for(let o=0;o<6;++o)t.texImage2D(to+o,0,Y,1,1,0,Y,W,i);else r===Ct||r===Et?t.texImage3D(r,0,Y,1,1,1,0,Y,W,i):t.texImage2D(r,0,Y,1,1,0,Y,W,i)}function qy(t,e,n,r){return r=r||Qr,n=n||vt.textureOptions,Ma(t,e,n),n=Object.assign({},n),Fa(n.src,n.crossOrigin,function(o,s){o?r(o,e,s):(qf(t,e,s,n),r(null,e,s))})}function Jy(t,e,n,r){r=r||Qr;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,s=n.internalFormat||n.format||Y,a=Tn(s),u=n.format||a.format,c=n.type||W,f=n.target||st;if(f!==at)throw"target must be TEXTURE_CUBE_MAP";Ma(t,e,n),n=Object.assign({},n);let l=6;const h=[],p=Da(t,n);let d;function g(A){return function(m,b){--l,m?h.push(m):b.width!==b.height?h.push("cubemap face img is not a square: "+b.src):(Pn(t,n),t.bindTexture(f,e),l===5?Da().forEach(function(y){t.texImage2D(y,o,s,u,c,b)}):t.texImage2D(A,o,s,u,c,b),Hr(n)&&t.generateMipmap(f)),l===0&&r(h.length?h:void 0,e,d)}}d=i.map(function(A,m){return Fa(A,n.crossOrigin,g(p[m]))})}function _y(t,e,n,r){r=r||Qr;const i=n.src,o=n.internalFormat||n.format||Y,s=Tn(o),a=n.format||s.format,u=n.type||W,c=n.target||Et;if(c!==Ct&&c!==Et)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Ma(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let h;const p=n.level||0;let d=n.width,g=n.height;const A=i.length;let m=!0;function b(y){return function(w,E){if(--f,w)l.push(w);else{if(Pn(t,n),t.bindTexture(c,e),m){m=!1,d=n.width||E.width,g=n.height||E.height,t.texImage3D(c,p,o,d,g,A,0,a,u,null);for(let C=0;C<A;++C)t.texSubImage3D(c,p,0,0,C,d,g,1,a,u,E)}else{let C=E,B;(E.width!==d||E.height!==g)&&(B=Pf(),C=B.canvas,B.canvas.width=d,B.canvas.height=g,B.drawImage(E,0,0,d,g)),t.texSubImage3D(c,p,0,0,y,d,g,1,a,u,C),B&&C===B.canvas&&(B.canvas.width=0,B.canvas.height=0)}Hr(n)&&t.generateMipmap(c)}f===0&&r(l.length?l:void 0,e,h)}}h=i.map(function(y,w){return Fa(y,n.crossOrigin,b(w))})}function _f(t,e,n,r){r=r||vt.textureOptions;const i=r.target||st;t.bindTexture(i,e);let o=r.width,s=r.height,a=r.depth;const u=r.level||0,c=r.internalFormat||r.format||Y,f=Tn(c),l=r.format||f.format,h=r.type||Xf(t,n,f.type);if(Dn(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const A=ex(h);n=new A(n)}const p=Qy(c,h),d=n.byteLength/p;if(d%1)throw"length wrong size for format: "+ya(t,l);let g;if(i===Ct||i===Et)if(!o&&!s&&!a){const A=Math.cbrt(d);if(A%1!==0)throw"can't guess cube size of array of numElements: "+d;o=A,s=A,a=A}else o&&(!s||!a)?(g=co(t,i,s,a,d/o),s=g.width,a=g.height):s&&(!o||!a)?(g=co(t,i,o,a,d/s),o=g.width,a=g.height):(g=co(t,i,o,s,d/a),o=g.width,s=g.height);else g=co(t,i,o,s,d),o=g.width,s=g.height;if(Zf(t),t.pixelStorei(va,r.unpackAlignment||1),Pn(t,r),i===at){const A=p/n.BYTES_PER_ELEMENT,m=d/6*A;Ba(t,r).forEach(b=>{const y=m*b.ndx,w=n.subarray(y,y+m);t.texImage2D(b.face,u,c,o,s,0,l,h,w)})}else i===Ct||i===Et?t.texImage3D(i,u,c,o,s,a,0,l,h,n):t.texImage2D(i,u,c,o,s,0,l,h,n);return{width:o,height:s,depth:a,type:h}}function $y(t,e,n){const r=n.target||st;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||Y,s=Tn(o),a=n.format||s.format,u=n.type||s.type;if(Pn(t,n),r===at)for(let c=0;c<6;++c)t.texImage2D(to+c,i,o,n.width,n.height,0,a,u,null);else r===Ct||r===Et?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,a,u,null):t.texImage2D(r,i,o,n.width,n.height,0,a,u,null)}function jr(t,e,n){n=n||Qr,e=e||vt.textureOptions;const r=t.createTexture(),i=e.target||st;let o=e.width||1,s=e.height||1;const a=e.internalFormat||Y;t.bindTexture(i,r),i===at&&(t.texParameteri(i,no,eo),t.texParameteri(i,ro,eo));let u=e.src;if(u)if(typeof u=="function"&&(u=u(t,e)),typeof u=="string")qy(t,r,e,n);else if(Dn(u)||Array.isArray(u)&&(typeof u[0]=="number"||Array.isArray(u[0])||Dn(u[0]))){const c=_f(t,r,u,e);o=c.width,s=c.height}else Array.isArray(u)&&(typeof u[0]=="string"||Jf(u[0]))?i===at?Jy(t,r,e,n):_y(t,r,e,n):(qf(t,r,u,e),o=u.width,s=u.height);else $y(t,r,e);return Hr(e)&&Sa(t,r,e,o,s,a),Kf(t,r,e),r}function e2(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const s=n.target||st;t.bindTexture(s,e);const a=n.level||0,u=n.internalFormat||n.format||Y,c=Tn(u),f=n.format||c.format;let l;const h=n.src;if(h&&(Dn(h)||Array.isArray(h)&&typeof h[0]=="number")?l=n.type||Xf(t,h,c.type):l=n.type||c.type,s===at)for(let p=0;p<6;++p)t.texImage2D(to+p,a,u,r,i,0,f,l,null);else s===Ct||s===Et?t.texImage3D(s,a,u,r,i,o,0,f,l,null):t.texImage2D(s,a,u,r,i,0,f,l,null)}const t2=Ef,lo=33984,n2=35048,fo=34962,r2=34963,Ia=35345,$f=35718,i2=35721,o2=35971,s2=35382,a2=35396,u2=35398,c2=35392,l2=35395,ho=5126,e0=35664,t0=35665,n0=35666,Ta=5124,r0=35667,i0=35668,o0=35669,s0=35670,a0=35671,u0=35672,c0=35673,l0=35674,f0=35675,h0=35676,f2=35678,h2=35680,d2=35679,p2=35682,g2=35685,m2=35686,A2=35687,x2=35688,y2=35689,b2=35690,w2=36289,v2=36292,C2=36293,Pa=5125,d0=36294,p0=36295,g0=36296,E2=36298,S2=36299,D2=36300,B2=36303,F2=36306,M2=36307,I2=36308,T2=36311,po=3553,go=34067,La=32879,mo=35866,F={};function m0(t,e){return F[e].bindPoint}function P2(t,e){return function(n){t.uniform1f(e,n)}}function L2(t,e){return function(n){t.uniform1fv(e,n)}}function R2(t,e){return function(n){t.uniform2fv(e,n)}}function k2(t,e){return function(n){t.uniform3fv(e,n)}}function N2(t,e){return function(n){t.uniform4fv(e,n)}}function A0(t,e){return function(n){t.uniform1i(e,n)}}function x0(t,e){return function(n){t.uniform1iv(e,n)}}function y0(t,e){return function(n){t.uniform2iv(e,n)}}function b0(t,e){return function(n){t.uniform3iv(e,n)}}function w0(t,e){return function(n){t.uniform4iv(e,n)}}function z2(t,e){return function(n){t.uniform1ui(e,n)}}function O2(t,e){return function(n){t.uniform1uiv(e,n)}}function G2(t,e){return function(n){t.uniform2uiv(e,n)}}function U2(t,e){return function(n){t.uniform3uiv(e,n)}}function H2(t,e){return function(n){t.uniform4uiv(e,n)}}function Q2(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function j2(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function V2(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function Y2(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function W2(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function X2(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function Z2(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function K2(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function q2(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function de(t,e,n,r){const i=m0(t,e);return Sn(t)?function(o){let s,a;$i(t,o)?(s=o,a=null):(s=o.texture,a=o.sampler),t.uniform1i(r,n),t.activeTexture(lo+n),t.bindTexture(i,s),t.bindSampler(n,a)}:function(o){t.uniform1i(r,n),t.activeTexture(lo+n),t.bindTexture(i,o)}}function pe(t,e,n,r,i){const o=m0(t,e),s=new Int32Array(i);for(let a=0;a<i;++a)s[a]=n+a;return Sn(t)?function(a){t.uniform1iv(r,s),a.forEach(function(u,c){t.activeTexture(lo+s[c]);let f,l;$i(t,u)?(f=u,l=null):(f=u.texture,l=u.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(a){t.uniform1iv(r,s),a.forEach(function(u,c){t.activeTexture(lo+s[c]),t.bindTexture(o,u)})}}F[ho]={Type:Float32Array,size:4,setter:P2,arraySetter:L2},F[e0]={Type:Float32Array,size:8,setter:R2,cols:2},F[t0]={Type:Float32Array,size:12,setter:k2,cols:3},F[n0]={Type:Float32Array,size:16,setter:N2,cols:4},F[Ta]={Type:Int32Array,size:4,setter:A0,arraySetter:x0},F[r0]={Type:Int32Array,size:8,setter:y0,cols:2},F[i0]={Type:Int32Array,size:12,setter:b0,cols:3},F[o0]={Type:Int32Array,size:16,setter:w0,cols:4},F[Pa]={Type:Uint32Array,size:4,setter:z2,arraySetter:O2},F[d0]={Type:Uint32Array,size:8,setter:G2,cols:2},F[p0]={Type:Uint32Array,size:12,setter:U2,cols:3},F[g0]={Type:Uint32Array,size:16,setter:H2,cols:4},F[s0]={Type:Uint32Array,size:4,setter:A0,arraySetter:x0},F[a0]={Type:Uint32Array,size:8,setter:y0,cols:2},F[u0]={Type:Uint32Array,size:12,setter:b0,cols:3},F[c0]={Type:Uint32Array,size:16,setter:w0,cols:4},F[l0]={Type:Float32Array,size:32,setter:Q2,rows:2,cols:2},F[f0]={Type:Float32Array,size:48,setter:j2,rows:3,cols:3},F[h0]={Type:Float32Array,size:64,setter:V2,rows:4,cols:4},F[g2]={Type:Float32Array,size:32,setter:Y2,rows:2,cols:3},F[m2]={Type:Float32Array,size:32,setter:X2,rows:2,cols:4},F[A2]={Type:Float32Array,size:48,setter:W2,rows:3,cols:2},F[x2]={Type:Float32Array,size:48,setter:K2,rows:3,cols:4},F[y2]={Type:Float32Array,size:64,setter:Z2,rows:4,cols:2},F[b2]={Type:Float32Array,size:64,setter:q2,rows:4,cols:3},F[f2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[h2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[d2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:La},F[p2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[w2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:mo},F[v2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:mo},F[C2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[E2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[S2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:La},F[D2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[B2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:mo},F[F2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[M2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:La},F[I2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[T2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:mo};function Ao(t,e){return function(n){if(n.value)switch(t.disableVertexAttribArray(e),n.value.length){case 4:t.vertexAttrib4fv(e,n.value);break;case 3:t.vertexAttrib3fv(e,n.value);break;case 2:t.vertexAttrib2fv(e,n.value);break;case 1:t.vertexAttrib1fv(e,n.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else t.bindBuffer(fo,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||ho,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Dt(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4iv(e,n.value);else throw new Error("The length of an integer constant value must be 4!");else t.bindBuffer(fo,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Ta,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function xo(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4uiv(e,n.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else t.bindBuffer(fo,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Pa,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Ra(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(fo,o.buffer);const s=o.size||o.numComponents||r,a=s/i,u=o.type||ho,f=F[u].size*s,l=o.normalize||!1,h=o.offset||0,p=f/i;for(let d=0;d<i;++d)t.enableVertexAttribArray(e+d),t.vertexAttribPointer(e+d,a,u,l,f,h+p*d),o.divisor!==void 0&&t.vertexAttribDivisor(e+d,o.divisor)}}const q={};q[ho]={size:4,setter:Ao},q[e0]={size:8,setter:Ao},q[t0]={size:12,setter:Ao},q[n0]={size:16,setter:Ao},q[Ta]={size:4,setter:Dt},q[r0]={size:8,setter:Dt},q[i0]={size:12,setter:Dt},q[o0]={size:16,setter:Dt},q[Pa]={size:4,setter:xo},q[d0]={size:8,setter:xo},q[p0]={size:12,setter:xo},q[g0]={size:16,setter:xo},q[s0]={size:4,setter:Dt},q[a0]={size:8,setter:Dt},q[u0]={size:12,setter:Dt},q[c0]={size:16,setter:Dt},q[l0]={size:4,setter:Ra,count:2},q[f0]={size:9,setter:Ra,count:3},q[h0]={size:16,setter:Ra,count:4};function v0(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const J2=/(\.|\[|]|\w+)/g,_2=t=>t>="0"&&t<="9";function C0(t,e,n,r){const i=t.split(J2).filter(a=>a!=="");let o=0,s="";for(;;){const a=i[o++];s+=a;const u=_2(a[0]),c=u?parseInt(a):a;if(u&&(s+=i[o++]),o===i.length){n[c]=e;break}else{const l=i[o++],h=l==="[",p=n[c]||(h?[]:{});n[c]=p,n=p,r[s]=r[s]||function(d){return function(g){F0(d,g)}}(p),s+=l}}}function $2(t,e){let n=0;function r(a,u,c){const f=u.name.endsWith("[0]"),l=u.type,h=F[l];if(!h)throw new Error(`unknown type: 0x${l.toString(16)}`);let p;if(h.bindPoint){const d=n;n+=u.size,f?p=h.arraySetter(t,l,d,c,u.size):p=h.setter(t,l,d,c,u.size)}else h.arraySetter&&f?p=h.arraySetter(t,c):p=h.setter(t,c);return p.location=c,p}const i={},o={},s=t.getProgramParameter(e,$f);for(let a=0;a<s;++a){const u=t.getActiveUniform(e,a);if(v0(u))continue;let c=u.name;c.endsWith("[0]")&&(c=c.substr(0,c.length-3));const f=t.getUniformLocation(e,u.name);if(f){const l=r(e,u,f);i[c]=l,C0(c,l,o,i)}}return i}function eb(t,e){const n={},r=t.getProgramParameter(e,o2);for(let i=0;i<r;++i){const o=t.getTransformFeedbackVarying(e,i);n[o.name]={index:i,type:o.type,size:o.size}}return n}function tb(t,e){const n=t.getProgramParameter(e,$f),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});const u=t.getActiveUniform(e,a);r[a].name=u.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const u=a[0],c=a[1];t.getActiveUniforms(e,i,t[u]).forEach(function(f,l){r[l][c]=f})});const o={},s=t.getProgramParameter(e,s2);for(let a=0;a<s;++a){const u=t.getActiveUniformBlockName(e,a),c={index:t.getUniformBlockIndex(e,u),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,a2),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,u2),size:t.getActiveUniformBlockParameter(e,a,c2),uniformIndices:t.getActiveUniformBlockParameter(e,a,l2)};c.used=c.usedByVertexShader||c.usedByFragmentShader,o[u]=c}return{blockSpecs:o,uniformData:r}}const E0=/\[\d+\]\.$/,nb=(t,e)=>((t+(e-1))/e|0)*e;function rb(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(s){let a=0,u=0;for(let c=0;c<o;++c){for(let f=0;f<r;++f)t[a++]=s[u++];a+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function ib(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,s=i[r];if(!s)return t2("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(s.size),u=t.createBuffer(),c=s.index;t.bindBuffer(Ia,u),t.uniformBlockBinding(e,s.index,c);let f=r+".";E0.test(f)&&(f=f.replace(E0,"."));const l={},h={},p={};return s.uniformIndices.forEach(function(d){const g=o[d];let A=g.name;A.startsWith(f)&&(A=A.substr(f.length));const m=A.endsWith("[0]");m&&(A=A.substr(0,A.length-3));const b=F[g.type],y=b.Type,w=m?nb(b.size,16)*g.size:b.size*g.size,E=new y(a,g.offset,w/y.BYTES_PER_ELEMENT);l[A]=E;const C=rb(E,m,b.rows,b.cols);h[A]=C,C0(A,C,p,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:u,uniforms:l,setters:h}}function S0(t,e,n){return ib(t,e.program,e.uniformBlockSpec,n)}function ob(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(Ia,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function D0(t,e,n){ob(t,e,n)&&t.bufferData(Ia,n.array,n2)}function B0(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const o=e[r];i(o)}}}function F0(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):F0(t[n],e[n])}}function Ee(t,...e){const n=t.uniformSetters||t,r=e.length;for(let i=0;i<r;++i){const o=e[i];if(Array.isArray(o)){const s=o.length;for(let a=0;a<s;++a)Ee(n,o[a])}else for(const s in o){const a=n[s];a&&a(o[s])}}}function sb(t,e){const n={},r=t.getProgramParameter(e,i2);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(v0(o))continue;const s=t.getAttribLocation(e,o.name),a=q[o.type],u=a.setter(t,s,a);u.location=s,n[o.name]=u}return n}function ab(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Ln(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(ab(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(r2,n.indices))}function ub(t,e){const n=$2(t,e),r=sb(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Sn(t)&&(i.uniformBlockSpec=tb(t,e),i.transformFeedbackInfo=eb(t,e)),i}const cb=4,M0=5123;function Vr(t,e,n,r,i,o){n=n===void 0?cb:n;const s=e.indices,a=e.elementType,u=r===void 0?e.numElements:r;i=i===void 0?0:i,a||s?o!==void 0?t.drawElementsInstanced(n,u,a===void 0?M0:e.elementType,i,o):t.drawElements(n,u,a===void 0?M0:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,u,o):t.drawArrays(n,i,u)}const lb=36160,$t=36161,fb=3553,hb=5121,db=6402,pb=6408,gb=33190,mb=36012,Ab=35056,xb=36013,yb=32854,bb=32855,wb=36194,I0=33189,T0=6401,P0=36168,ka=34041,vb=36064,yo=36096,L0=36128,Na=33306,za=33071,Oa=9729,R0=[{format:pb,type:hb,min:Oa,wrap:za},{format:ka}],Qe={};Qe[ka]=Na,Qe[T0]=L0,Qe[P0]=L0,Qe[db]=yo,Qe[I0]=yo,Qe[gb]=yo,Qe[mb]=yo,Qe[Ab]=Na,Qe[xb]=Na;function Cb(t,e){return Qe[t]||Qe[e]}const Bt={};Bt[yb]=!0,Bt[bb]=!0,Bt[wb]=!0,Bt[ka]=!0,Bt[I0]=!0,Bt[T0]=!0,Bt[P0]=!0;function Eb(t){return Bt[t]}function Sb(t,e,n,r){const i=lb,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||R0;let s=0;const a={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(u){let c=u.attachment;const f=u.samples,l=u.format;let h=u.attachmentPoint||Cb(l,u.internalFormat);if(h||(h=vb+s++),!c)if(f!==void 0||Eb(l))c=t.createRenderbuffer(),t.bindRenderbuffer($t,c),f>1?t.renderbufferStorageMultisample($t,f,l,n,r):t.renderbufferStorage($t,l,n,r);else{const p=Object.assign({},u);p.width=n,p.height=r,p.auto===void 0&&(p.auto=!1,p.min=p.min||p.minMag||Oa,p.mag=p.mag||p.minMag||Oa,p.wrapS=p.wrapS||p.wrap||za,p.wrapT=p.wrapT||p.wrap||za),c=jr(t,p)}if(Sf(t,c))t.framebufferRenderbuffer(i,h,$t,c);else if($i(t,c))u.layer!==void 0?t.framebufferTextureLayer(i,h,c,u.level||0,u.layer):t.framebufferTexture2D(i,h,u.target||fb,c,u.level||0);else throw new Error("unknown attachment type");a.attachments.push(c)}),a}function Db(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||R0,n.forEach(function(o,s){const a=e.attachments[s],u=o.format,c=o.samples;if(c!==void 0||Sf(t,a))t.bindRenderbuffer($t,a),c>1?t.renderbufferStorageMultisample($t,c,u,r,i):t.renderbufferStorage($t,u,r,i);else if($i(t,a))e2(t,a,o,r,i);else throw new Error("unknown attachment type")})}function Bb(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Ln(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const Fb=/^(.*?)_/;function Mb(t,e){ya(t,0);const n=t.getExtension(e);if(n){const r={},i=Fb.exec(e)[1],o="_"+i;for(const s in n){const a=n[s],u=typeof a=="function",c=u?i:o;let f=s;s.endsWith(c)&&(f=s.substring(0,s.length-c.length)),t[f]!==void 0?!u&&t[f]!==a&&Ef(f,t[f],a,s):u?t[f]=function(l){return function(){return l.apply(n,arguments)}}(a):(t[f]=a,r[f]=a)}r.constructor={name:n.constructor.name},ya(r,0)}return n}const k0=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_color_buffer_float","EXT_color_buffer_half_float","EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2","EXT_frag_depth","EXT_sRGB","EXT_shader_texture_lod","EXT_texture_filter_anisotropic","OES_element_index_uint","OES_standard_derivatives","OES_texture_float","OES_texture_float_linear","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_compressed_texture_atc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_depth_texture","WEBGL_draw_buffers"];function N0(t){for(let e=0;e<k0.length;++e)Mb(t,k0[e])}function Ib(t,e){const n=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<n.length;++i)if(r=t.getContext(n[i],e),r){N0(r);break}return r}function Tb(t,e){return Ib(t,e)}const Pb=`/***The vertex position wrt the rectangle specified by(x,x2,y,y2).*[0,0]=[x,y],[1,1]=[x2,y2].*The x or y component may contain fractional values if the rectangle*have been tessellated.*/in vec2 frac;uniform vec2 uMinSize;uniform float uMinOpacity;uniform vec4 uCornerRadii;out lowp vec4 vFillColor;out lowp vec4 vStrokeColor;out float vHalfStrokeWidth;out vec4 vCornerRadii;
18
+ see: http://github.com/greggman/twgl.js for details */const la=5120,zr=5121,fa=5122,ha=5123,da=5124,pa=5125,ga=5126,Y1=32819,W1=32820,X1=33635,Z1=5131,K1=33640,q1=35899,J1=35902,_1=36269,$1=34042,Cf={};{const t=Cf;t[la]=Int8Array,t[zr]=Uint8Array,t[fa]=Int16Array,t[ha]=Uint16Array,t[da]=Int32Array,t[pa]=Uint32Array,t[ga]=Float32Array,t[Y1]=Uint16Array,t[W1]=Uint16Array,t[X1]=Uint16Array,t[Z1]=Uint16Array,t[K1]=Uint32Array,t[q1]=Uint32Array,t[J1]=Uint32Array,t[_1]=Uint32Array,t[$1]=Uint32Array}function ma(t){if(t instanceof Int8Array)return la;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return zr;if(t instanceof Int16Array)return fa;if(t instanceof Uint16Array)return ha;if(t instanceof Int32Array)return da;if(t instanceof Uint32Array)return pa;if(t instanceof Float32Array)return ga;throw new Error("unsupported typed array type")}function ex(t){if(t===Int8Array)return la;if(t===Uint8Array||t===Uint8ClampedArray)return zr;if(t===Int16Array)return fa;if(t===Uint16Array)return ha;if(t===Int32Array)return da;if(t===Uint32Array)return pa;if(t===Float32Array)return ga;throw new Error("unsupported typed array type")}function tx(t){const e=Cf[t];if(!e)throw new Error("unknown gl type");return e}const Ji=typeof SharedArrayBuffer<"u"?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function nx(...t){console.error(...t)}function Ef(...t){console.warn(...t)}function rx(t,e){return typeof WebGLBuffer<"u"&&e instanceof WebGLBuffer}function Sf(t,e){return typeof WebGLRenderbuffer<"u"&&e instanceof WebGLRenderbuffer}function _i(t,e){return typeof WebGLTexture<"u"&&e instanceof WebGLTexture}function ix(t,e){return typeof WebGLSampler<"u"&&e instanceof WebGLSampler}const Df=35044,Je=34962,ox=34963,sx=34660,ax=5120,ux=5121,cx=5122,lx=5123,fx=5124,hx=5125,dx=5126,Bf={attribPrefix:""};function Ff(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||Df)}function Mf(t,e,n,r){if(rx(t,e))return e;n=n||Je;const i=t.createBuffer();return Ff(t,n,i,e,r),i}function If(t){return t==="indices"}function px(t){return t instanceof Int8Array||t instanceof Uint8Array}function gx(t){return t===Int8Array||t===Uint8Array}function mx(t){return t.length?t:t.data}const Ax=/coord|texture/i,xx=/color|colour/i;function Tf(t,e){let n;if(Ax.test(t)?n=2:xx.test(t)?n=4:n=3,e%n>0)throw new Error(`Can not guess numComponents for attribute '${t}'. Tried ${n} but ${e} values is not evenly divisible by ${n}. You should specify it.`);return n}function yx(t,e){return t.numComponents||t.size||Tf(e,mx(t).length)}function Aa(t,e){if(Ji(t))return t;if(Ji(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(If(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function bx(t,e){const n={};return Object.keys(e).forEach(function(r){if(!If(r)){const i=e[r],o=i.attrib||i.name||i.attribName||Bf.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Ji(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let s,a,u,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)s=i.buffer,c=i.numComponents||i.size,a=i.type,u=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const f=i.data||i,l=i.type||Float32Array,h=f*l.BYTES_PER_ELEMENT;a=ex(l),u=i.normalize!==void 0?i.normalize:gx(l),c=i.numComponents||i.size||Tf(r,f),s=t.createBuffer(),t.bindBuffer(Je,s),t.bufferData(Je,h,i.drawType||Df)}else{const f=Aa(i,r);s=Mf(t,f,void 0,i.drawType),a=ma(f),u=i.normalize!==void 0?i.normalize:px(f),c=yx(i,r)}n[o]={buffer:s,numComponents:c,type:a,normalize:u,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(Je,null),n}function wx(t,e,n,r){n=Aa(n),r!==void 0?(t.bindBuffer(Je,e.buffer),t.bufferSubData(Je,r,n)):Ff(t,Je,e.buffer,n,e.drawType)}function vx(t,e){return e===ax||e===ux?1:e===cx||e===lx?2:e===fx||e===hx||e===dx?4:0}const xa=["position","positions","a_position"];function Cx(t,e){let n,r;for(r=0;r<xa.length&&(n=xa[r],!(n in e||(n=Bf.attribPrefix+n,n in e)));++r);r===xa.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(Je,i.buffer);const o=t.getBufferParameter(Je,sx);t.bindBuffer(Je,null);const s=vx(t,i.type),a=o/s,u=i.numComponents||i.size,c=a/u;if(c%1!==0)throw new Error(`numComponents ${u} not correct for length ${length}`);return c}function Ex(t,e,n){const r=bx(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const s=Aa(o,"indices");i.indices=Mf(t,s,ox),i.numElements=s.length,i.elementType=ma(s)}else i.numElements||(i.numElements=Cx(t,i.attribs));return i}function En(t){return!!t.texStorage2D}const ya=function(){const t={},e={};function n(r){const i=r.constructor.name;if(!t[i]){for(const o in r)if(typeof r[o]=="number"){const s=e[r[o]];e[r[o]]=s?`${s} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),wt={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Sn=Ji,Pf=function(){let t;return function(){return t=t||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),Rf=6406,_e=6407,j=6408,Lf=6409,kf=6410,Or=6402,Nf=34041,$i=33071,Sx=9728,Dx=9729,ot=3553,st=34067,vt=32879,Ct=35866,eo=34069,Bx=34070,Fx=34071,Mx=34072,Ix=34073,Tx=34074,ba=10241,wa=10240,to=10242,no=10243,zf=32882,Px=33082,Rx=33083,Lx=33084,kx=33085,va=3317,Of=3314,Gf=32878,Uf=3316,Hf=3315,Qf=32877,Nx=37443,zx=37441,Ox=37440,Gx=33321,Ux=36756,Hx=33325,Qx=33326,jx=33330,Vx=33329,Yx=33338,Wx=33337,Xx=33340,Zx=33339,Kx=33323,qx=36757,Jx=33327,_x=33328,$x=33336,ey=33335,ty=33332,ny=33331,ry=33334,iy=33333,oy=32849,sy=35905,ay=36194,uy=36758,cy=35898,ly=35901,fy=34843,hy=34837,dy=36221,py=36239,gy=36215,my=36233,Ay=36209,xy=36227,yy=32856,by=35907,wy=36759,vy=32855,Cy=32854,Ey=32857,Sy=34842,Dy=34836,By=36220,Fy=36238,My=36975,Iy=36214,Ty=36232,Py=36226,Ry=36208,Ly=33189,ky=33190,Ny=36012,zy=36013,Oy=35056,Et=5120,V=5121,ro=5122,Dn=5123,io=5124,qt=5125,fe=5126,jf=32819,Vf=32820,Yf=33635,Ue=5131,Gr=36193,Ca=33640,Gy=35899,Uy=35902,Hy=36269,Qy=34042,oo=33319,Bn=33320,so=6403,Fn=36244,Mn=36248,Jt=36249;let Ea;function ao(t){if(!Ea){const e={};e[Rf]={textureFormat:Rf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[V,Ue,Gr,fe]},e[Lf]={textureFormat:Lf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[V,Ue,Gr,fe]},e[kf]={textureFormat:kf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[V,Ue,Gr,fe]},e[_e]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[V,Ue,Gr,fe,Yf]},e[j]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[V,Ue,Gr,fe,jf,Vf]},e[Or]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[qt,Dn]},e[Gx]={textureFormat:so,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[V]},e[Ux]={textureFormat:so,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[Et]},e[Hx]={textureFormat:so,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[fe,Ue]},e[Qx]={textureFormat:so,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[jx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[V]},e[Vx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Et]},e[ty]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Dn]},e[ny]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ro]},e[ry]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[qt]},e[iy]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[io]},e[Kx]={textureFormat:oo,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[V]},e[qx]={textureFormat:oo,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[Et]},e[Jx]={textureFormat:oo,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[fe,Ue]},e[_x]={textureFormat:oo,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[fe]},e[$x]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[V]},e[ey]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Et]},e[Yx]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Dn]},e[Wx]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ro]},e[Xx]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[qt]},e[Zx]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[io]},e[oy]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[V]},e[sy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[V]},e[ay]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[V,Yf]},e[uy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Et]},e[cy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,Ue,Gy]},e[ly]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,Ue,Uy]},e[fy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[fe,Ue]},e[hy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[fe]},e[dy]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[V]},e[py]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Et]},e[gy]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Dn]},e[my]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[ro]},e[Ay]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[qt]},e[xy]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[io]},e[yy]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[V]},e[by]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[V]},e[wy]={textureFormat:j,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[Et]},e[vy]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[V,Vf,Ca]},e[Cy]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[V,jf]},e[Ey]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Ca]},e[Sy]={textureFormat:j,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[fe,Ue]},e[Dy]={textureFormat:j,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[fe]},e[By]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[V]},e[Fy]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Et]},e[My]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ca]},e[Iy]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Dn]},e[Ty]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ro]},e[Py]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[io]},e[Ry]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[qt]},e[Ly]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Dn,qt]},e[ky]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[qt]},e[Ny]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[Oy]={textureFormat:Nf,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Qy]},e[zy]={textureFormat:Nf,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Hy]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,o){const s=r.type[o];r.bytesPerElementMap[s]=i})}),Ea=e}return Ea[t]}function jy(t,e){const n=ao(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function In(t){const e=ao(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function Wf(t){return(t&t-1)===0}function Vy(t,e,n,r){if(!En(t))return Wf(e)&&Wf(n);const i=ao(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function Yy(t){const e=ao(t);if(!e)throw"unknown internal format";return e.textureFilterable}function Xf(t,e,n){return Sn(e)?ma(e):n||V}function uo(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===st?6:1));o%1===0?(n=o,r=o):(n=i,r=1)}else if(r){if(!n&&(n=i/r,n%1))throw"can't guess dimensions"}else if(r=i/n,r%1)throw"can't guess dimensions";return{width:n,height:r}}function Tn(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(Nx,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(zx,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(Ox,e.flipY)}function Zf(t){t.pixelStorei(va,4),En(t)&&(t.pixelStorei(Of,0),t.pixelStorei(Gf,0),t.pixelStorei(Uf,0),t.pixelStorei(Hf,0),t.pixelStorei(Qf,0))}function Wy(t,e,n,r){r.minMag&&(n.call(t,e,ba,r.minMag),n.call(t,e,wa,r.minMag)),r.min&&n.call(t,e,ba,r.min),r.mag&&n.call(t,e,wa,r.mag),r.wrap&&(n.call(t,e,to,r.wrap),n.call(t,e,no,r.wrap),(e===vt||ix(t,e))&&n.call(t,e,zf,r.wrap)),r.wrapR&&n.call(t,e,zf,r.wrapR),r.wrapS&&n.call(t,e,to,r.wrapS),r.wrapT&&n.call(t,e,no,r.wrapT),r.minLod&&n.call(t,e,Px,r.minLod),r.maxLod&&n.call(t,e,Rx,r.maxLod),r.baseLevel&&n.call(t,e,Lx,r.baseLevel),r.maxLevel&&n.call(t,e,kx,r.maxLevel)}function Kf(t,e,n){const r=n.target||ot;t.bindTexture(r,e),Wy(t,r,t.texParameteri,n)}function Xy(t){return t=t||wt.textureColor,Sn(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Sa(t,e,n,r,i,o){n=n||wt.textureOptions,o=o||j;const s=n.target||ot;if(r=r||n.width,i=i||n.height,t.bindTexture(s,e),Vy(t,r,i,o))t.generateMipmap(s);else{const a=Yy(o)?Dx:Sx;t.texParameteri(s,ba,a),t.texParameteri(s,wa,a),t.texParameteri(s,to,$i),t.texParameteri(s,no,$i)}}function Ur(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Da(t,e){return e=e||{},e.cubeFaceOrder||[eo,Bx,Fx,Mx,Ix,Tx]}function Ba(t,e){const r=Da(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function qf(t,e,n,r){r=r||wt.textureOptions;const i=r.target||ot,o=r.level||0;let s=n.width,a=n.height;const u=r.internalFormat||r.format||j,c=In(u),f=r.format||c.format,l=r.type||c.type;if(Tn(t,r),t.bindTexture(i,e),i===st){const h=n.width,p=n.height;let d,g;if(h/6===p)d=p,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(p/6===h)d=h,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3===p/2)d=h/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2===p/3)d=h/2,g=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can't figure out cube map from element: "+(n.src?n.src:n.nodeName);const m=Pf();m?(m.canvas.width=d,m.canvas.height=d,s=d,a=d,Ba(t,r).forEach(function(A){const y=g[A.ndx*2+0]*d,b=g[A.ndx*2+1]*d;m.drawImage(n,y,b,d,d,0,0,d,d),t.texImage2D(A.face,o,u,f,l,m.canvas)}),m.canvas.width=1,m.canvas.height=1):typeof createImageBitmap<"u"&&(s=d,a=d,Ba(t,r).forEach(function(A){const y=g[A.ndx*2+0]*d,b=g[A.ndx*2+1]*d;t.texImage2D(A.face,o,u,d,d,0,f,l,null),createImageBitmap(n,y,b,d,d,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(C){Tn(t,r),t.bindTexture(i,e),t.texImage2D(A.face,o,u,f,l,C),Ur(r)&&Sa(t,e,r,s,a,u)})}))}else if(i===vt||i===Ct){const h=Math.min(n.width,n.height),p=Math.max(n.width,n.height),d=p/h;if(d%1!==0)throw"can not compute 3D dimensions of element";const g=n.width===p?1:0,m=n.height===p?1:0;t.pixelStorei(va,1),t.pixelStorei(Of,n.width),t.pixelStorei(Gf,0),t.pixelStorei(Qf,0),t.texImage3D(i,o,u,h,h,h,0,f,l,null);for(let A=0;A<d;++A){const y=A*h*g,b=A*h*m;t.pixelStorei(Uf,y),t.pixelStorei(Hf,b),t.texSubImage3D(i,o,0,0,A,h,h,1,f,l,n)}Zf(t)}else t.texImage2D(i,o,u,f,l,n);Ur(r)&&Sa(t,e,r,s,a,u),Kf(t,e,r)}function Hr(){}function Zy(t){if(typeof document<"u"){const e=document.createElement("a");return e.href=t,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(t,location.href).origin===e}}function Ky(t,e){return e===void 0&&!Zy(t)?"anonymous":e}function qy(t,e,n){n=n||Hr;let r;if(e=e!==void 0?e:wt.crossOrigin,e=Ky(t,e),typeof Image<"u"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",s),r=null},o=function(){const u="couldn't load image: "+t;nx(u),n(u,r),i()},s=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",s),r.src=t,r}else if(typeof ImageBitmap<"u"){let i,o;const s=function(){n(i,o)},a={};e&&(a.mode="cors"),fetch(t,a).then(function(u){if(!u.ok)throw u;return u.blob()}).then(function(u){return createImageBitmap(u,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(u){o=u,setTimeout(s)}).catch(function(u){i=u,setTimeout(s)}),r=null}return r}function Jf(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof ImageData<"u"&&t instanceof ImageData||typeof HTMLElement<"u"&&t instanceof HTMLElement}function Fa(t,e,n){return Jf(t)?(setTimeout(function(){n(null,t)}),t):qy(t,e,n)}function Ma(t,e,n){n=n||wt.textureOptions;const r=n.target||ot;if(t.bindTexture(r,e),n.color===!1)return;const i=Xy(n.color);if(r===st)for(let o=0;o<6;++o)t.texImage2D(eo+o,0,j,1,1,0,j,V,i);else r===vt||r===Ct?t.texImage3D(r,0,j,1,1,1,0,j,V,i):t.texImage2D(r,0,j,1,1,0,j,V,i)}function Jy(t,e,n,r){return r=r||Hr,n=n||wt.textureOptions,Ma(t,e,n),n=Object.assign({},n),Fa(n.src,n.crossOrigin,function(o,s){o?r(o,e,s):(qf(t,e,s,n),r(null,e,s))})}function _y(t,e,n,r){r=r||Hr;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,s=n.internalFormat||n.format||j,a=In(s),u=n.format||a.format,c=n.type||V,f=n.target||ot;if(f!==st)throw"target must be TEXTURE_CUBE_MAP";Ma(t,e,n),n=Object.assign({},n);let l=6;const h=[],p=Da(t,n);let d;function g(m){return function(A,y){--l,A?h.push(A):y.width!==y.height?h.push("cubemap face img is not a square: "+y.src):(Tn(t,n),t.bindTexture(f,e),l===5?Da().forEach(function(b){t.texImage2D(b,o,s,u,c,y)}):t.texImage2D(m,o,s,u,c,y),Ur(n)&&t.generateMipmap(f)),l===0&&r(h.length?h:void 0,e,d)}}d=i.map(function(m,A){return Fa(m,n.crossOrigin,g(p[A]))})}function $y(t,e,n,r){r=r||Hr;const i=n.src,o=n.internalFormat||n.format||j,s=In(o),a=n.format||s.format,u=n.type||V,c=n.target||Ct;if(c!==vt&&c!==Ct)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Ma(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let h;const p=n.level||0;let d=n.width,g=n.height;const m=i.length;let A=!0;function y(b){return function(C,B){if(--f,C)l.push(C);else{if(Tn(t,n),t.bindTexture(c,e),A){A=!1,d=n.width||B.width,g=n.height||B.height,t.texImage3D(c,p,o,d,g,m,0,a,u,null);for(let E=0;E<m;++E)t.texSubImage3D(c,p,0,0,E,d,g,1,a,u,B)}else{let E=B,w;(B.width!==d||B.height!==g)&&(w=Pf(),E=w.canvas,w.canvas.width=d,w.canvas.height=g,w.drawImage(B,0,0,d,g)),t.texSubImage3D(c,p,0,0,b,d,g,1,a,u,E),w&&E===w.canvas&&(w.canvas.width=0,w.canvas.height=0)}Ur(n)&&t.generateMipmap(c)}f===0&&r(l.length?l:void 0,e,h)}}h=i.map(function(b,C){return Fa(b,n.crossOrigin,y(C))})}function _f(t,e,n,r){r=r||wt.textureOptions;const i=r.target||ot;t.bindTexture(i,e);let o=r.width,s=r.height,a=r.depth;const u=r.level||0,c=r.internalFormat||r.format||j,f=In(c),l=r.format||f.format,h=r.type||Xf(t,n,f.type);if(Sn(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const m=tx(h);n=new m(n)}const p=jy(c,h),d=n.byteLength/p;if(d%1)throw"length wrong size for format: "+ya(t,l);let g;if(i===vt||i===Ct)if(!o&&!s&&!a){const m=Math.cbrt(d);if(m%1!==0)throw"can't guess cube size of array of numElements: "+d;o=m,s=m,a=m}else o&&(!s||!a)?(g=uo(t,i,s,a,d/o),s=g.width,a=g.height):s&&(!o||!a)?(g=uo(t,i,o,a,d/s),o=g.width,a=g.height):(g=uo(t,i,o,s,d/a),o=g.width,s=g.height);else g=uo(t,i,o,s,d),o=g.width,s=g.height;if(Zf(t),t.pixelStorei(va,r.unpackAlignment||1),Tn(t,r),i===st){const m=p/n.BYTES_PER_ELEMENT,A=d/6*m;Ba(t,r).forEach(y=>{const b=A*y.ndx,C=n.subarray(b,b+A);t.texImage2D(y.face,u,c,o,s,0,l,h,C)})}else i===vt||i===Ct?t.texImage3D(i,u,c,o,s,a,0,l,h,n):t.texImage2D(i,u,c,o,s,0,l,h,n);return{width:o,height:s,depth:a,type:h}}function e2(t,e,n){const r=n.target||ot;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||j,s=In(o),a=n.format||s.format,u=n.type||s.type;if(Tn(t,n),r===st)for(let c=0;c<6;++c)t.texImage2D(eo+c,i,o,n.width,n.height,0,a,u,null);else r===vt||r===Ct?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,a,u,null):t.texImage2D(r,i,o,n.width,n.height,0,a,u,null)}function Qr(t,e,n){n=n||Hr,e=e||wt.textureOptions;const r=t.createTexture(),i=e.target||ot;let o=e.width||1,s=e.height||1;const a=e.internalFormat||j;t.bindTexture(i,r),i===st&&(t.texParameteri(i,to,$i),t.texParameteri(i,no,$i));let u=e.src;if(u)if(typeof u=="function"&&(u=u(t,e)),typeof u=="string")Jy(t,r,e,n);else if(Sn(u)||Array.isArray(u)&&(typeof u[0]=="number"||Array.isArray(u[0])||Sn(u[0]))){const c=_f(t,r,u,e);o=c.width,s=c.height}else Array.isArray(u)&&(typeof u[0]=="string"||Jf(u[0]))?i===st?_y(t,r,e,n):$y(t,r,e,n):(qf(t,r,u,e),o=u.width,s=u.height);else e2(t,r,e);return Ur(e)&&Sa(t,r,e,o,s,a),Kf(t,r,e),r}function t2(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const s=n.target||ot;t.bindTexture(s,e);const a=n.level||0,u=n.internalFormat||n.format||j,c=In(u),f=n.format||c.format;let l;const h=n.src;if(h&&(Sn(h)||Array.isArray(h)&&typeof h[0]=="number")?l=n.type||Xf(t,h,c.type):l=n.type||c.type,s===st)for(let p=0;p<6;++p)t.texImage2D(eo+p,a,u,r,i,0,f,l,null);else s===vt||s===Ct?t.texImage3D(s,a,u,r,i,o,0,f,l,null):t.texImage2D(s,a,u,r,i,0,f,l,null)}const n2=Ef,co=33984,r2=35048,lo=34962,i2=34963,Ia=35345,$f=35718,o2=35721,s2=35971,a2=35382,u2=35396,c2=35398,l2=35392,f2=35395,fo=5126,e0=35664,t0=35665,n0=35666,Ta=5124,r0=35667,i0=35668,o0=35669,s0=35670,a0=35671,u0=35672,c0=35673,l0=35674,f0=35675,h0=35676,h2=35678,d2=35680,p2=35679,g2=35682,m2=35685,A2=35686,x2=35687,y2=35688,b2=35689,w2=35690,v2=36289,C2=36292,E2=36293,Pa=5125,d0=36294,p0=36295,g0=36296,S2=36298,D2=36299,B2=36300,F2=36303,M2=36306,I2=36307,T2=36308,P2=36311,ho=3553,po=34067,Ra=32879,go=35866,F={};function m0(t,e){return F[e].bindPoint}function R2(t,e){return function(n){t.uniform1f(e,n)}}function L2(t,e){return function(n){t.uniform1fv(e,n)}}function k2(t,e){return function(n){t.uniform2fv(e,n)}}function N2(t,e){return function(n){t.uniform3fv(e,n)}}function z2(t,e){return function(n){t.uniform4fv(e,n)}}function A0(t,e){return function(n){t.uniform1i(e,n)}}function x0(t,e){return function(n){t.uniform1iv(e,n)}}function y0(t,e){return function(n){t.uniform2iv(e,n)}}function b0(t,e){return function(n){t.uniform3iv(e,n)}}function w0(t,e){return function(n){t.uniform4iv(e,n)}}function O2(t,e){return function(n){t.uniform1ui(e,n)}}function G2(t,e){return function(n){t.uniform1uiv(e,n)}}function U2(t,e){return function(n){t.uniform2uiv(e,n)}}function H2(t,e){return function(n){t.uniform3uiv(e,n)}}function Q2(t,e){return function(n){t.uniform4uiv(e,n)}}function j2(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function V2(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function Y2(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function W2(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function X2(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function Z2(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function K2(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function q2(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function J2(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function de(t,e,n,r){const i=m0(t,e);return En(t)?function(o){let s,a;_i(t,o)?(s=o,a=null):(s=o.texture,a=o.sampler),t.uniform1i(r,n),t.activeTexture(co+n),t.bindTexture(i,s),t.bindSampler(n,a)}:function(o){t.uniform1i(r,n),t.activeTexture(co+n),t.bindTexture(i,o)}}function pe(t,e,n,r,i){const o=m0(t,e),s=new Int32Array(i);for(let a=0;a<i;++a)s[a]=n+a;return En(t)?function(a){t.uniform1iv(r,s),a.forEach(function(u,c){t.activeTexture(co+s[c]);let f,l;_i(t,u)?(f=u,l=null):(f=u.texture,l=u.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(a){t.uniform1iv(r,s),a.forEach(function(u,c){t.activeTexture(co+s[c]),t.bindTexture(o,u)})}}F[fo]={Type:Float32Array,size:4,setter:R2,arraySetter:L2},F[e0]={Type:Float32Array,size:8,setter:k2,cols:2},F[t0]={Type:Float32Array,size:12,setter:N2,cols:3},F[n0]={Type:Float32Array,size:16,setter:z2,cols:4},F[Ta]={Type:Int32Array,size:4,setter:A0,arraySetter:x0},F[r0]={Type:Int32Array,size:8,setter:y0,cols:2},F[i0]={Type:Int32Array,size:12,setter:b0,cols:3},F[o0]={Type:Int32Array,size:16,setter:w0,cols:4},F[Pa]={Type:Uint32Array,size:4,setter:O2,arraySetter:G2},F[d0]={Type:Uint32Array,size:8,setter:U2,cols:2},F[p0]={Type:Uint32Array,size:12,setter:H2,cols:3},F[g0]={Type:Uint32Array,size:16,setter:Q2,cols:4},F[s0]={Type:Uint32Array,size:4,setter:A0,arraySetter:x0},F[a0]={Type:Uint32Array,size:8,setter:y0,cols:2},F[u0]={Type:Uint32Array,size:12,setter:b0,cols:3},F[c0]={Type:Uint32Array,size:16,setter:w0,cols:4},F[l0]={Type:Float32Array,size:32,setter:j2,rows:2,cols:2},F[f0]={Type:Float32Array,size:48,setter:V2,rows:3,cols:3},F[h0]={Type:Float32Array,size:64,setter:Y2,rows:4,cols:4},F[m2]={Type:Float32Array,size:32,setter:W2,rows:2,cols:3},F[A2]={Type:Float32Array,size:32,setter:Z2,rows:2,cols:4},F[x2]={Type:Float32Array,size:48,setter:X2,rows:3,cols:2},F[y2]={Type:Float32Array,size:48,setter:q2,rows:3,cols:4},F[b2]={Type:Float32Array,size:64,setter:K2,rows:4,cols:2},F[w2]={Type:Float32Array,size:64,setter:J2,rows:4,cols:3},F[h2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[d2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[p2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:Ra},F[g2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[v2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[C2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[E2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[S2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[D2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:Ra},F[B2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[F2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[M2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[I2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:Ra},F[T2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[P2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go};function mo(t,e){return function(n){if(n.value)switch(t.disableVertexAttribArray(e),n.value.length){case 4:t.vertexAttrib4fv(e,n.value);break;case 3:t.vertexAttrib3fv(e,n.value);break;case 2:t.vertexAttrib2fv(e,n.value);break;case 1:t.vertexAttrib1fv(e,n.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else t.bindBuffer(lo,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||fo,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function St(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4iv(e,n.value);else throw new Error("The length of an integer constant value must be 4!");else t.bindBuffer(lo,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Ta,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Ao(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4uiv(e,n.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else t.bindBuffer(lo,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Pa,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function La(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(lo,o.buffer);const s=o.size||o.numComponents||r,a=s/i,u=o.type||fo,f=F[u].size*s,l=o.normalize||!1,h=o.offset||0,p=f/i;for(let d=0;d<i;++d)t.enableVertexAttribArray(e+d),t.vertexAttribPointer(e+d,a,u,l,f,h+p*d),o.divisor!==void 0&&t.vertexAttribDivisor(e+d,o.divisor)}}const K={};K[fo]={size:4,setter:mo},K[e0]={size:8,setter:mo},K[t0]={size:12,setter:mo},K[n0]={size:16,setter:mo},K[Ta]={size:4,setter:St},K[r0]={size:8,setter:St},K[i0]={size:12,setter:St},K[o0]={size:16,setter:St},K[Pa]={size:4,setter:Ao},K[d0]={size:8,setter:Ao},K[p0]={size:12,setter:Ao},K[g0]={size:16,setter:Ao},K[s0]={size:4,setter:St},K[a0]={size:8,setter:St},K[u0]={size:12,setter:St},K[c0]={size:16,setter:St},K[l0]={size:4,setter:La,count:2},K[f0]={size:9,setter:La,count:3},K[h0]={size:16,setter:La,count:4};function v0(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const _2=/(\.|\[|]|\w+)/g,$2=t=>t>="0"&&t<="9";function C0(t,e,n,r){const i=t.split(_2).filter(a=>a!=="");let o=0,s="";for(;;){const a=i[o++];s+=a;const u=$2(a[0]),c=u?parseInt(a):a;if(u&&(s+=i[o++]),o===i.length){n[c]=e;break}else{const l=i[o++],h=l==="[",p=n[c]||(h?[]:{});n[c]=p,n=p,r[s]=r[s]||function(d){return function(g){F0(d,g)}}(p),s+=l}}}function eb(t,e){let n=0;function r(a,u,c){const f=u.name.endsWith("[0]"),l=u.type,h=F[l];if(!h)throw new Error(`unknown type: 0x${l.toString(16)}`);let p;if(h.bindPoint){const d=n;n+=u.size,f?p=h.arraySetter(t,l,d,c,u.size):p=h.setter(t,l,d,c,u.size)}else h.arraySetter&&f?p=h.arraySetter(t,c):p=h.setter(t,c);return p.location=c,p}const i={},o={},s=t.getProgramParameter(e,$f);for(let a=0;a<s;++a){const u=t.getActiveUniform(e,a);if(v0(u))continue;let c=u.name;c.endsWith("[0]")&&(c=c.substr(0,c.length-3));const f=t.getUniformLocation(e,u.name);if(f){const l=r(e,u,f);i[c]=l,C0(c,l,o,i)}}return i}function tb(t,e){const n={},r=t.getProgramParameter(e,s2);for(let i=0;i<r;++i){const o=t.getTransformFeedbackVarying(e,i);n[o.name]={index:i,type:o.type,size:o.size}}return n}function nb(t,e){const n=t.getProgramParameter(e,$f),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});const u=t.getActiveUniform(e,a);r[a].name=u.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const u=a[0],c=a[1];t.getActiveUniforms(e,i,t[u]).forEach(function(f,l){r[l][c]=f})});const o={},s=t.getProgramParameter(e,a2);for(let a=0;a<s;++a){const u=t.getActiveUniformBlockName(e,a),c={index:t.getUniformBlockIndex(e,u),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,u2),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,c2),size:t.getActiveUniformBlockParameter(e,a,l2),uniformIndices:t.getActiveUniformBlockParameter(e,a,f2)};c.used=c.usedByVertexShader||c.usedByFragmentShader,o[u]=c}return{blockSpecs:o,uniformData:r}}const E0=/\[\d+\]\.$/,rb=(t,e)=>((t+(e-1))/e|0)*e;function ib(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(s){let a=0,u=0;for(let c=0;c<o;++c){for(let f=0;f<r;++f)t[a++]=s[u++];a+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function ob(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,s=i[r];if(!s)return n2("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(s.size),u=t.createBuffer(),c=s.index;t.bindBuffer(Ia,u),t.uniformBlockBinding(e,s.index,c);let f=r+".";E0.test(f)&&(f=f.replace(E0,"."));const l={},h={},p={};return s.uniformIndices.forEach(function(d){const g=o[d];let m=g.name;m.startsWith(f)&&(m=m.substr(f.length));const A=m.endsWith("[0]");A&&(m=m.substr(0,m.length-3));const y=F[g.type],b=y.Type,C=A?rb(y.size,16)*g.size:y.size*g.size,B=new b(a,g.offset,C/b.BYTES_PER_ELEMENT);l[m]=B;const E=ib(B,A,y.rows,y.cols);h[m]=E,C0(m,E,p,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:u,uniforms:l,setters:h}}function S0(t,e,n){return ob(t,e.program,e.uniformBlockSpec,n)}function sb(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(Ia,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function D0(t,e,n){sb(t,e,n)&&t.bufferData(Ia,n.array,r2)}function B0(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const o=e[r];i(o)}}}function F0(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):F0(t[n],e[n])}}function Ee(t,...e){const n=t.uniformSetters||t,r=e.length;for(let i=0;i<r;++i){const o=e[i];if(Array.isArray(o)){const s=o.length;for(let a=0;a<s;++a)Ee(n,o[a])}else for(const s in o){const a=n[s];a&&a(o[s])}}}function ab(t,e){const n={},r=t.getProgramParameter(e,o2);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(v0(o))continue;const s=t.getAttribLocation(e,o.name),a=K[o.type],u=a.setter(t,s,a);u.location=s,n[o.name]=u}return n}function ub(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Pn(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(ub(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(i2,n.indices))}function cb(t,e){const n=eb(t,e),r=ab(t,e),i={program:e,uniformSetters:n,attribSetters:r};return En(t)&&(i.uniformBlockSpec=nb(t,e),i.transformFeedbackInfo=tb(t,e)),i}const lb=4,M0=5123;function jr(t,e,n,r,i,o){n=n===void 0?lb:n;const s=e.indices,a=e.elementType,u=r===void 0?e.numElements:r;i=i===void 0?0:i,a||s?o!==void 0?t.drawElementsInstanced(n,u,a===void 0?M0:e.elementType,i,o):t.drawElements(n,u,a===void 0?M0:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,u,o):t.drawArrays(n,i,u)}const fb=36160,_t=36161,hb=3553,db=5121,pb=6402,gb=6408,mb=33190,Ab=36012,xb=35056,yb=36013,bb=32854,wb=32855,vb=36194,I0=33189,T0=6401,P0=36168,ka=34041,Cb=36064,xo=36096,R0=36128,Na=33306,za=33071,Oa=9729,L0=[{format:gb,type:db,min:Oa,wrap:za},{format:ka}],He={};He[ka]=Na,He[T0]=R0,He[P0]=R0,He[pb]=xo,He[I0]=xo,He[mb]=xo,He[Ab]=xo,He[xb]=Na,He[yb]=Na;function Eb(t,e){return He[t]||He[e]}const Dt={};Dt[bb]=!0,Dt[wb]=!0,Dt[vb]=!0,Dt[ka]=!0,Dt[I0]=!0,Dt[T0]=!0,Dt[P0]=!0;function Sb(t){return Dt[t]}function Db(t,e,n,r){const i=fb,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||L0;let s=0;const a={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(u){let c=u.attachment;const f=u.samples,l=u.format;let h=u.attachmentPoint||Eb(l,u.internalFormat);if(h||(h=Cb+s++),!c)if(f!==void 0||Sb(l))c=t.createRenderbuffer(),t.bindRenderbuffer(_t,c),f>1?t.renderbufferStorageMultisample(_t,f,l,n,r):t.renderbufferStorage(_t,l,n,r);else{const p=Object.assign({},u);p.width=n,p.height=r,p.auto===void 0&&(p.auto=!1,p.min=p.min||p.minMag||Oa,p.mag=p.mag||p.minMag||Oa,p.wrapS=p.wrapS||p.wrap||za,p.wrapT=p.wrapT||p.wrap||za),c=Qr(t,p)}if(Sf(t,c))t.framebufferRenderbuffer(i,h,_t,c);else if(_i(t,c))u.layer!==void 0?t.framebufferTextureLayer(i,h,c,u.level||0,u.layer):t.framebufferTexture2D(i,h,u.target||hb,c,u.level||0);else throw new Error("unknown attachment type");a.attachments.push(c)}),a}function Bb(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||L0,n.forEach(function(o,s){const a=e.attachments[s],u=o.format,c=o.samples;if(c!==void 0||Sf(t,a))t.bindRenderbuffer(_t,a),c>1?t.renderbufferStorageMultisample(_t,c,u,r,i):t.renderbufferStorage(_t,u,r,i);else if(_i(t,a))t2(t,a,o,r,i);else throw new Error("unknown attachment type")})}function Fb(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Pn(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const Mb=/^(.*?)_/;function Ib(t,e){ya(t,0);const n=t.getExtension(e);if(n){const r={},i=Mb.exec(e)[1],o="_"+i;for(const s in n){const a=n[s],u=typeof a=="function",c=u?i:o;let f=s;s.endsWith(c)&&(f=s.substring(0,s.length-c.length)),t[f]!==void 0?!u&&t[f]!==a&&Ef(f,t[f],a,s):u?t[f]=function(l){return function(){return l.apply(n,arguments)}}(a):(t[f]=a,r[f]=a)}r.constructor={name:n.constructor.name},ya(r,0)}return n}const k0=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_color_buffer_float","EXT_color_buffer_half_float","EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2","EXT_frag_depth","EXT_sRGB","EXT_shader_texture_lod","EXT_texture_filter_anisotropic","OES_element_index_uint","OES_standard_derivatives","OES_texture_float","OES_texture_float_linear","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_compressed_texture_atc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_depth_texture","WEBGL_draw_buffers"];function N0(t){for(let e=0;e<k0.length;++e)Ib(t,k0[e])}function Tb(t,e){const n=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<n.length;++i)if(r=t.getContext(n[i],e),r){N0(r);break}return r}function Pb(t,e){return Tb(t,e)}const Rb=`/***The vertex position wrt the rectangle specified by(x,x2,y,y2).*[0,0]=[x,y],[1,1]=[x2,y2].*The x or y component may contain fractional values if the rectangle*have been tessellated.*/in vec2 frac;uniform vec2 uMinSize;uniform float uMinOpacity;uniform vec4 uCornerRadii;out lowp vec4 vFillColor;out lowp vec4 vStrokeColor;out float vHalfStrokeWidth;out vec4 vCornerRadii;
19
19
  #if defined(ROUNDED_CORNERS) || defined(STROKED)
20
20
  out vec2 vPosInPixels;
21
21
  #endif
@@ -37,20 +37,20 @@ fragColor=distanceToColor(d,vFillColor,vStrokeColor,vHalfStrokeWidth);if(fragCol
37
37
  #else
38
38
  fragColor=vFillColor;
39
39
  #endif
40
- if(uPickingEnabled){fragColor=vPickingColor;}}`,Ga="attr_",z0="uDomain_",Rb="range_",O0="scale_",G0="getScaled_",Ua="uRangeTexture_",U0=3402823466e29;function kb(t){const e=t.match(/^(?:(\w+)-)?(\w+)$/);if(!e)throw new Error("Not a scale type: "+t);return{family:e[1]||"continuous",transform:e[2]}}function Nb(t,e){let n;if(Ji(t))n=en(vf(t)(e));else if(Z(e))if(qt(t))n=Ob(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(ui(e))n=en(e?1:0);else if(e===null)if(qt(t))n=en([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=en(e);return`
40
+ if(uPickingEnabled){fragColor=vPickingColor;}}`,Ga="attr_",z0="uDomain_",kb="range_",O0="scale_",G0="getScaled_",Ua="uRangeTexture_",U0=3402823466e29;function Nb(t){const e=t.match(/^(?:(\w+)-)?(\w+)$/);if(!e)throw new Error("Not a scale type: "+t);return{family:e[1]||"continuous",transform:e[2]}}function zb(t,e){let n;if(qi(t))n=$t(vf(t)(e));else if(W(e))if(Kt(t))n=Gb(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(ai(e))n=$t(e?1:0);else if(e===null)if(Kt(t))n=$t([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=$t(e);return`
41
41
  #define ${t}_DEFINED
42
42
  ${n.type} ${G0}${t}() {
43
43
  // Constant value
44
44
  return ${n};
45
- }`}function zb(t,e,n){var B,I;if(Ue(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=En(t),i=Ga+t,o=z0+r,s=Rb+r,a=bo(e.type),u=a?"vec2":"float",c=e.domain?e.domain().length:void 0;let f;const l=[];l.push(""),l.push("/".repeat(70)),l.push(`// Channel: ${t}`),l.push(""),l.push(`#define ${t}_DEFINED`);const{transform:h}=kb(e.type),p=(P,...U)=>Gb.apply(null,[P,"value",...U]);let d;switch(h){case"linear":d=p("scaleLinear","domain",s);break;case"log":d=p("scaleLog","domain",s,e.base());break;case"symlog":d=p("scaleSymlog","domain",s,e.constant());break;case"pow":case"sqrt":d=p("scalePow","domain",s,e.exponent());break;case"index":case"locus":d=p("scaleBandHp","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),(B=n.band)!=null?B:.5);break;case"point":case"band":d=p("scaleBand","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),(I=n.band)!=null?I:.5);break;case"ordinal":case"null":case"identity":d=p("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const g=ji(e.type)||Pe(e.type)&&qt(t)?[0,1]:e.range?e.range():void 0;if(g&&t==r&&g.length&&g.every(me)){const P=H0(g);l.push(`const ${P.type} ${s} = ${P};`)}const A=qt(t)?"vec3":"float";let m;if(qt(t)){const P=Ua+r;if(t==r&&l.push(`uniform sampler2D ${P};`),Pe(e.type))m=`getInterpolatedColor(${P}, transformed)`;else if(Wt(e.type)||vn(e.type))m=`getDiscreteColor(${P}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||vn(e.type)){const P=Ua+r;t==r&&l.push(`uniform sampler2D ${P};`),m=`getDiscreteColor(${P}, int(transformed)).r`}Rr(n)?l.push(`uniform highp ${u} ${i};`):l.push(`in highp ${u} ${i};`);const b=[],y=Pe(e.type)&&c>2,w=vn(e.type)||y;if(b.push("int slot = 0;"),w){const P=o;b.push(y?`while (slot < ${P}.length() - 2 && value >= ${P}[slot + 1]) { slot++; }`:`while (slot < ${P}.length() && value >= ${P}[slot]) { slot++; }`)}const E=Pe(e.type)||vn(e.type)||["band","point"].includes(e.type);if(d){const P=o;E&&(a?b.push(`vec3 domain = ${P};`):b.push(`vec2 domain = vec2(${P}[slot], ${P}[slot + 1]);`)),b.push(`float transformed = ${d};`),y&&b.push(`transformed = (float(slot) + transformed) / (float(${P}.length()) - 1.0);`)}else b.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&b.push(`transformed = clampToRange(transformed, ${H0(g)});`),b.push(`return ${m!=null?m:"transformed"};`),l.push(`
46
- ${A} ${O0}${t}(${u} value) {
47
- ${b.map(P=>` ${P}
45
+ }`}function Ob(t,e,n){if(Ge(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=Cn(t),i=Ga+t,o=z0+r,s=kb+r,a=yo(e.type),u=a?"vec2":"float",c=e.domain?e.domain().length:void 0;let f;const l=[];l.push(""),l.push("/".repeat(70)),l.push(`// Channel: ${t}`),l.push(""),l.push(`#define ${t}_DEFINED`);const{transform:h}=Nb(e.type),p=(w,...X)=>Ub.apply(null,[w,"value",...X]);let d;switch(h){case"linear":d=p("scaleLinear","domain",s);break;case"log":d=p("scaleLog","domain",s,e.base());break;case"symlog":d=p("scaleSymlog","domain",s,e.constant());break;case"pow":case"sqrt":d=p("scalePow","domain",s,e.exponent());break;case"index":case"locus":d=p("scaleBandHp","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),n.band??.5);break;case"point":case"band":d=p("scaleBand","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),n.band??.5);break;case"ordinal":case"null":case"identity":d=p("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const g=Qi(e.type)||Te(e.type)&&Kt(t)?[0,1]:e.range?e.range():void 0;if(g&&t==r&&g.length&&g.every(me)){const w=H0(g);l.push(`const ${w.type} ${s} = ${w};`)}const m=Kt(t)?"vec3":"float";let A;if(Kt(t)){const w=Ua+r;if(t==r&&l.push(`uniform sampler2D ${w};`),Te(e.type))A=`getInterpolatedColor(${w}, transformed)`;else if(Yt(e.type)||wn(e.type))A=`getDiscreteColor(${w}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||wn(e.type)){const w=Ua+r;t==r&&l.push(`uniform sampler2D ${w};`),A=`getDiscreteColor(${w}, int(transformed)).r`}Rr(n)?l.push(`uniform highp ${u} ${i};`):l.push(`in highp ${u} ${i};`);const y=[],b=Te(e.type)&&c>2,C=wn(e.type)||b;if(y.push("int slot = 0;"),C){const w=o;y.push(b?`while (slot < ${w}.length() - 2 && value >= ${w}[slot + 1]) { slot++; }`:`while (slot < ${w}.length() && value >= ${w}[slot]) { slot++; }`)}const B=Te(e.type)||wn(e.type)||["band","point"].includes(e.type);if(d){const w=o;B&&(a?y.push(`vec3 domain = ${w};`):y.push(`vec2 domain = vec2(${w}[slot], ${w}[slot + 1]);`)),y.push(`float transformed = ${d};`),b&&y.push(`transformed = (float(slot) + transformed) / (float(${w}.length()) - 1.0);`)}else y.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&y.push(`transformed = clampToRange(transformed, ${H0(g)});`),y.push(`return ${A??"transformed"};`),l.push(`
46
+ ${m} ${O0}${t}(${u} value) {
47
+ ${y.map(w=>` ${w}
48
48
  `).join("")}
49
49
  }`),l.push(`
50
- ${A} ${G0}${t}() {
50
+ ${m} ${G0}${t}() {
51
51
  return ${O0}${t}(${i});
52
- }`);const C=l.join(`
53
- `);if(E&&t==r){const P=Pe(e.type)||vn(e.type)?c:2;f=a?`highp vec3 ${o};`:`mediump float ${o}[${P}];`}return{glsl:C,domainUniform:f}}function Ha(t){if(!me(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+U0;if(t==-1/0)return""+-U0;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function en(t){typeof t=="number"&&(t=[t]);const e=t.length;if(e<1||e>4)throw new Error("Invalid number of components: "+e);let n,r;return e>1?(n=`vec${e}`,r=`${n}(${t.map(Ha).join(", ")})`):(n="float",r=Ha(t[0])),Object.assign(r,{type:n,numComponents:e})}function Ob(t){const e=Ht(t).rgb();return en([e.r,e.g,e.b].map(n=>n/255))}function H0(t){return en([t[0],Cn(t)])}function Gb(t,...e){const n=[];for(const r of e)me(r)?n.push(Ha(r)):Me(r)?n.push(en(r)):n.push(r);return`${t}(${n.join(", ")})`}function bo(t){return t=="index"||t=="locus"}function Qa(t,e){const r=t%2048,i=Math.round(t-r);return e!=null||(e=[]),e[0]=i,e[1]=r,e}function Ub(t){return[...Qa(t[0]),t[1]-t[0]]}class Hb{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(Ga+e,n.numComponents||1,n.arrayReference),i=n.f;this.dataUpdaters.push(n.arrayReference?o=>r(i(o)):o=>r(i(o)))}createUpdater(e,n,r){if(!me(this.size))throw new Error("The number of vertices must be defined!");let i,o,s=0;const a=new Float32Array(this.size*n);if(this.arrays[e]={data:a,numComponents:n},n==1){let u=0;const c=f=>{u=+f};i=()=>{a[s++]=u},o=c}else{let u=r!=null?r:[0];const c=r?f=>{}:f=>{u=f};switch(n){case 1:break;case 2:i=()=>{a[s++]=u[0],a[s++]=u[1]},o=c;break;case 3:i=()=>{a[s++]=u[0],a[s++]=u[1],a[s++]=u[2]},o=c;break;case 4:i=()=>{a[s++]=u[0],a[s++]=u[1],a[s++]=u[2],a[s++]=u[3]},o=c;break;default:throw new Error("Invalid numComponents: "+n)}}return this.pushers.push(i),o}_unrollPushAll(){let e="",n="";for(let i=0;i<this.pushers.length;i++)e+=`const p${i} = that.pushers[${i}];
52
+ }`);const E=l.join(`
53
+ `);if(B&&t==r){const w=Te(e.type)||wn(e.type)?c:2;f=a?`highp vec3 ${o};`:`mediump float ${o}[${w}];`}return{glsl:E,domainUniform:f}}function Ha(t){if(!me(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+U0;if(t==-1/0)return""+-U0;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function $t(t){typeof t=="number"&&(t=[t]);const e=t.length;if(e<1||e>4)throw new Error("Invalid number of components: "+e);let n,r;return e>1?(n=`vec${e}`,r=`${n}(${t.map(Ha).join(", ")})`):(n="float",r=Ha(t[0])),Object.assign(r,{type:n,numComponents:e})}function Gb(t){const e=Ut(t).rgb();return $t([e.r,e.g,e.b].map(n=>n/255))}function H0(t){return $t([t[0],vn(t)])}function Ub(t,...e){const n=[];for(const r of e)me(r)?n.push(Ha(r)):Fe(r)?n.push($t(r)):n.push(r);return`${t}(${n.join(", ")})`}function yo(t){return t=="index"||t=="locus"}function Qa(t,e){const r=t%2048,i=Math.round(t-r);return e??(e=[]),e[0]=i,e[1]=r,e}function Hb(t){return[...Qa(t[0]),t[1]-t[0]]}class Qb{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(Ga+e,n.numComponents||1,n.arrayReference),i=n.f;this.dataUpdaters.push(n.arrayReference?o=>r(i(o)):o=>r(i(o)))}createUpdater(e,n,r){if(!me(this.size))throw new Error("The number of vertices must be defined!");let i,o,s=0;const a=new Float32Array(this.size*n);if(this.arrays[e]={data:a,numComponents:n},n==1){let u=0;const c=f=>{u=+f};i=()=>{a[s++]=u},o=c}else{let u=r??[0];const c=r?f=>{}:f=>{u=f};switch(n){case 1:break;case 2:i=()=>{a[s++]=u[0],a[s++]=u[1]},o=c;break;case 3:i=()=>{a[s++]=u[0],a[s++]=u[1],a[s++]=u[2]},o=c;break;case 4:i=()=>{a[s++]=u[0],a[s++]=u[1],a[s++]=u[2],a[s++]=u[3]},o=c;break;default:throw new Error("Invalid numComponents: "+n)}}return this.pushers.push(i),o}_unrollPushAll(){let e="",n="";for(let i=0;i<this.pushers.length;i++)e+=`const p${i} = that.pushers[${i}];
54
54
  `,n+=`p${i}();
55
55
  `;const r=new Function("that",`${e}
56
56
 
@@ -58,8 +58,8 @@ ${A} ${G0}${t}() {
58
58
  ${n}
59
59
  that.vertexCount++;
60
60
  };
61
- `);this.pushAll=r(this)}pushAll(){this.size>1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n<this.pushers.length;n++)this.pushers[n]();this.vertexCount++},this.pushAll()}updateFromDatum(e){for(let n=0;n<this.dataUpdaters.length;n++)this.dataUpdaters[n](e)}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}const Rn=5,ja=127;function Va(t){const e=[];for(let d=0;d<=ja;d++)e.push(void 0);const n=new Map;for(const d of t.chars)d.id<=ja?e[d.id]=d:n.set(d.id,d);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(d){return(d<=ja?e[d]:n.get(d))||e[63]}function o(d){return i(d.charCodeAt(0))}const s=t.common.base,a=o("x"),u=o("X"),c=o("q"),f=a.height-Rn*2,l=u.height-Rn*2,h=c.height-a.height+c.yoffset-a.yoffset;function p(d,g=1){let A=0;for(let m=0;m<d.length;m++)A+=i(d.charCodeAt(m)).xadvance;return A/s*g}return{measureWidth:p,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:h,common:t.common}}function Qb(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const Q0=2**31-1,jb=-(2**31);function Vb(t,e,n,r=n){const i=new Int32Array(t);i.fill(Q0);let o=jb,s=!1;const a=new Int32Array(t),u=e[0],f=(e[1]-e[0])/t,l=(A,m)=>{const b=(A-u)/f,y=Math.floor(b);return Qb(m&&y==b?y-1:y,0,t-1)};function h(A,m,b){m>o?o=m:s||(s=!0,console.debug("Items are not ordered properly. Disabling binned index."));const y=n(A),w=l(y,!1);i[w]>m&&(i[w]=m),a[w]<b&&(a[w]=b)}function p(A,m,b){m>o?o=m:s||(s=!0,console.debug("Items are not ordered properly. Disabling binned index."));const y=n(A),w=r(A),E=l(y,!1),C=l(w,!0);for(let B=E;B<=C;B++)i[B]>m&&(i[B]=m),a[B]<b&&(a[B]=b)}const d=(A,m,b=[0,0])=>{const y=l(A,!1),w=l(m,!0),E=i[y],C=Math.max(a[w],E);return b[0]=E,b[1]=C,b},g=()=>{for(let m=1;m<a.length;m++)a[m]<a[m-1]&&(a[m]=a[m-1]);let A=!0;for(let m=i.length-1;m>0;m--)A&&i[m]==Q0?(i[m]=a[m],A=!1):i[m-1]>i[m]&&(i[m-1]=i[m]);return d};if(h.getIndex=g,p.getIndex=g,!s)return n==r?h:p}class Yr{constructor({encoders:e,numVertices:n=void 0,attributes:r=[]}){this.encoders=e,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([i,o])=>r.includes(i)&&o&&o.scale&&!o.constant)),this.allocatedVertices=n,this.variableBuilder=new Hb(n);for(const[i,o]of Object.entries(this.variableEncoders)){const s=o.accessor,a=[0,0],u=bo(o.scale.type),c=o.indexer,f=c?l=>c(s(l)):u?l=>Qa(s(l),a):s;this.variableBuilder.addConverter(i,{f,numComponents:u?2:1,arrayReference:u?a:void 0})}this.lastOffset=0,this.rangeMap=new Pt([],JSON.stringify)}registerBatch(e){var o;const n=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-n;i&&this.rangeMap.set(e,{offset:n,count:i,xIndex:(o=this.xIndexer)==null?void 0:o.getIndex()}),this.lastOffset=r}addBatches(e){for(const[n,r]of e)this.addBatch(n,r)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const s=n[o];this.variableBuilder.pushFromDatum(s),this.addToXIndex(s)}this.registerBatch(e)}prepareXIndexer(e,n=0,r=n+e.length){const i=()=>{this.addToXIndex=u=>{},this.xIndexer=void 0};if(!e.length||r-n<0){i();return}const o=u=>{var c;return u&&Pe((c=u.scale)==null?void 0:c.type)&&u},s=o(this.variableEncoders.x),a=o(this.variableEncoders.x2);if(s){const u=s.accessor,c=a?a.accessor:u,f=[u(e[n]),c(e[r-1])];if(f[1]>f[0]){this.xIndexer=Vb(50,f,u,c);let l=this.variableBuilder.vertexCount;this.addToXIndex=h=>{let p=this.variableBuilder.vertexCount;this.xIndexer(h,l,p),l=p}}else i()}else i()}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class Yb extends Yr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateFrac=this.variableBuilder.createUpdater("frac",2)}addBatch(e,n,r=0,i=n.length){if(i<=r)return;const o=this.encoders,[s,a]=this.visibleRange,u=h=>h.accessor||(p=>0),c=u(o.x),f=u(o.x2);this.prepareXIndexer(n,r,i);const l=[0,0];this.updateFrac(l);for(let h=r;h<i;h++){const p=n[h];let d=c(p),g=f(p);if(d>g&&([d,g]=[g,d]),g<s||d>a)continue;d<s&&(d=s),g>a&&(g=a),this.variableBuilder.updateFromDatum(p),l[0]=0,l[1]=0;const A=1;this.variableBuilder.pushAll();for(let m=0;m<=A;m++)l[0]=m/A,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(p)}this.registerBatch(e)}}class Wb extends Yr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateSide=this.variableBuilder.createUpdater("side",1),this.updatePos=this.variableBuilder.createUpdater("pos",1)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const s=n[o];this.variableBuilder.updateFromDatum(s),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const a=1;for(let u=0;u<=a;u++)this.updatePos(u/a),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(s)}this.registerBatch(e)}}class Xb extends Yr{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class Zb extends Yr{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}toArrays(){const e=this.variableBuilder.arrays;for(let n of Object.values(e))n.divisor=1;return super.toArrays()}}class Kb extends Yr{constructor({encoders:e,attributes:n,fontMetrics:r,properties:i,numCharacters:o=void 0}){super({encoders:e,attributes:n,numVertices:o*6}),this.metadata=r,this.metrics=r,this.properties=i;const a=e.text.channelDef;this.numberFormat=!Ue(a)&&a.format?se(a.format):u=>u,this.updateVertexCoord=this.variableBuilder.createUpdater("vertexCoord",2),this.updateTextureCoord=this.variableBuilder.createUpdater("textureCoord",2),this.updateWidth=this.variableBuilder.createUpdater("width",1)}addBatch(e,n,r=0,i=n.length){var p;const o=this.properties.align||"left",s=(p=this.properties.logoLetters)!=null?p:!1,a=this.metadata.common.base,u=this.metadata.common.scaleH;let c=-Rn;switch(this.properties.baseline){case"top":c+=this.metrics.capHeight;break;case"middle":c+=this.metrics.capHeight/2;break;case"bottom":c-=this.metrics.descent;break}const f=this.encoders.text.accessor||this.encoders.text,l=[0,0];this.updateVertexCoord(l);const h=[0,0];this.updateTextureCoord(h),this.prepareXIndexer(n,r,i);for(let d=r;d<i;d++){const g=n[d],A=this.numberFormat(f(g)),m=Z(A)?A:A===null?"":""+A;if(m.length==0)continue;this.variableBuilder.updateFromDatum(g);const b=s?m.length:this.metrics.measureWidth(m);this.updateWidth(b);let y=o=="right"?-b:o=="center"?-b/2:0;if(!s){const B=this.metrics.getCharByCode(m.charCodeAt(0));y-=(B.width-B.xadvance)/a/2}let w=-.5,E=1,C=1;for(let B=0;B<m.length;B++){const I=this.metrics.getCharByCode(m.charCodeAt(B)),P=s?1:I.xadvance/a;if(I.id==32){y+=P;continue}s?(C=(I.width+Rn*2)/I.width,y=-C/2,E=(I.height+Rn*2)/I.height,w=-.5-Rn/I.height):(E=I.height/a,w=-(I.height+I.yoffset+c)/a,C=I.width/a);const U=I.x,M=I.y;l[0]=y,l[1]=w+E,h[0]=U/u,h[1]=M/u,this.variableBuilder.pushAll(),l[0]=y+C,l[1]=w+E,h[0]=(U+I.width)/u,h[1]=M/u,this.variableBuilder.pushAll(),l[0]=y,l[1]=w,h[0]=U/u,h[1]=(M+I.height)/u,this.variableBuilder.pushAll(),l[0]=y+C,l[1]=w+E,h[0]=(U+I.width)/u,h[1]=M/u,this.variableBuilder.pushAll(),l[0]=y,l[1]=w,h[0]=U/u,h[1]=(M+I.height)/u,this.variableBuilder.pushAll(),l[0]=y+C,l[1]=w,h[0]=(U+I.width)/u,h[1]=(M+I.height)/u,this.variableBuilder.pushAll(),y+=P}this.addToXIndex(g)}this.registerBatch(e)}}const j0=`#define PI 3.141593
62
- uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : vec4(0.0),distanceToRatio(sd));}else{return fill*distanceToRatio(-d);}}`,qb="const float inf=1.0/0.0;vec3 getDiscreteColor(sampler2D s,int index){return texelFetch(s,ivec2(index % textureSize(s,0).x,0),0).rgb;}vec3 getInterpolatedColor(sampler2D s,float unitValue){return texture(s,vec2(unitValue,0.0)).rgb;}float clampToRange(float value,vec2 range){return clamp(value,min(range[0],range[1]),max(range[0],range[1]));}float scaleIdentity(float value){return value;}float scaleLinear(float value,vec2 domain,vec2 range){float domainSpan=domain[1]-domain[0];float rangeSpan=range[1]-range[0];return(value-domain[0])/domainSpan*rangeSpan+range[0];}float scaleLog(float value,vec2 domain,vec2 range,float base){return scaleLinear(log(value)/log(base),log(domain)/log(base),range);}float symlog(float value,float constant){return sign(value)*log(abs(value/constant)+1.0);}float scaleSymlog(float value,vec2 domain,vec2 range,float constant){return scaleLinear(symlog(value,constant),vec2(symlog(domain[0],constant),symlog(domain[1],constant)),range);}float scalePow(float value,vec2 domain,vec2 range,float exponent){return scaleLinear(pow(abs(value),exponent)*sign(value),pow(abs(domain),vec2(exponent))*sign(domain),range);}float scaleBand(float value,vec2 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;float n=domainExtent[1]-domainExtent[0];paddingInner=int(n)>1 ? paddingInner : 0.0;float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+(value-domainExtent[0])*step+bandwidth*band;}float scaleBandHp(vec2 value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);float hi=max(value[0]-domainStart[0],-inf);float lo=max(value[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}",Jb=`/***Describes where a sample facet should be shown. Interpolating between the*current and target positions/heights allows for transitioning between facet*configurations.*/struct SampleFacetPosition{float pos;float height;float targetPos;float targetHeight;};/***Trasition fraction[0,1]between the current and target configurations.*/uniform float uTransitionOffset;
61
+ `);this.pushAll=r(this)}pushAll(){this.size>1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n<this.pushers.length;n++)this.pushers[n]();this.vertexCount++},this.pushAll()}updateFromDatum(e){for(let n=0;n<this.dataUpdaters.length;n++)this.dataUpdaters[n](e)}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}const Rn=5,ja=127;function Va(t){const e=[];for(let d=0;d<=ja;d++)e.push(void 0);const n=new Map;for(const d of t.chars)d.id<=ja?e[d.id]=d:n.set(d.id,d);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(d){return(d<=ja?e[d]:n.get(d))||e[63]}function o(d){return i(d.charCodeAt(0))}const s=t.common.base,a=o("x"),u=o("X"),c=o("q"),f=a.height-Rn*2,l=u.height-Rn*2,h=c.height-a.height+c.yoffset-a.yoffset;function p(d,g=1){let m=0;for(let A=0;A<d.length;A++)m+=i(d.charCodeAt(A)).xadvance;return m/s*g}return{measureWidth:p,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:h,common:t.common}}function jb(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const Q0=2**31-1,Vb=-(2**31);function Yb(t,e,n,r=n){const i=new Int32Array(t);i.fill(Q0);let o=Vb,s=!1;const a=new Int32Array(t),u=e[0],f=(e[1]-e[0])/t,l=(m,A)=>{const y=(m-u)/f,b=Math.floor(y);return jb(A&&b==y?b-1:b,0,t-1)};function h(m,A,y){A>o?o=A:s||(s=!0,console.debug("Items are not ordered properly. Disabling binned index."));const b=n(m),C=l(b,!1);i[C]>A&&(i[C]=A),a[C]<y&&(a[C]=y)}function p(m,A,y){A>o?o=A:s||(s=!0,console.debug("Items are not ordered properly. Disabling binned index."));const b=n(m),C=r(m),B=l(b,!1),E=l(C,!0);for(let w=B;w<=E;w++)i[w]>A&&(i[w]=A),a[w]<y&&(a[w]=y)}const d=(m,A,y=[0,0])=>{const b=l(m,!1),C=l(A,!0),B=i[b],E=Math.max(a[C],B);return y[0]=B,y[1]=E,y},g=()=>{for(let A=1;A<a.length;A++)a[A]<a[A-1]&&(a[A]=a[A-1]);let m=!0;for(let A=i.length-1;A>0;A--)m&&i[A]==Q0?(i[A]=a[A],m=!1):i[A-1]>i[A]&&(i[A-1]=i[A]);return d};if(h.getIndex=g,p.getIndex=g,!s)return n==r?h:p}class Vr{constructor({encoders:e,numVertices:n=void 0,attributes:r=[]}){this.encoders=e,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([i,o])=>r.includes(i)&&o&&o.scale&&!o.constant)),this.allocatedVertices=n,this.variableBuilder=new Qb(n);for(const[i,o]of Object.entries(this.variableEncoders)){const s=o.accessor,a=[0,0],u=yo(o.scale.type),c=o.indexer,f=c?l=>c(s(l)):u?l=>Qa(s(l),a):s;this.variableBuilder.addConverter(i,{f,numComponents:u?2:1,arrayReference:u?a:void 0})}this.lastOffset=0,this.rangeMap=new Tt([],JSON.stringify)}registerBatch(e){var o;const n=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-n;i&&this.rangeMap.set(e,{offset:n,count:i,xIndex:(o=this.xIndexer)==null?void 0:o.getIndex()}),this.lastOffset=r}addBatches(e){for(const[n,r]of e)this.addBatch(n,r)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const s=n[o];this.variableBuilder.pushFromDatum(s),this.addToXIndex(s)}this.registerBatch(e)}prepareXIndexer(e,n=0,r=n+e.length){const i=()=>{this.addToXIndex=u=>{},this.xIndexer=void 0};if(!e.length||r-n<0){i();return}const o=u=>{var c;return u&&Te((c=u.scale)==null?void 0:c.type)&&u},s=o(this.variableEncoders.x),a=o(this.variableEncoders.x2);if(s){const u=s.accessor,c=a?a.accessor:u,f=[u(e[n]),c(e[r-1])];if(f[1]>f[0]){this.xIndexer=Yb(50,f,u,c);let l=this.variableBuilder.vertexCount;this.addToXIndex=h=>{let p=this.variableBuilder.vertexCount;this.xIndexer(h,l,p),l=p}}else i()}else i()}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class Wb extends Vr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateFrac=this.variableBuilder.createUpdater("frac",2)}addBatch(e,n,r=0,i=n.length){if(i<=r)return;const o=this.encoders,[s,a]=this.visibleRange,u=h=>h.accessor||(p=>0),c=u(o.x),f=u(o.x2);this.prepareXIndexer(n,r,i);const l=[0,0];this.updateFrac(l);for(let h=r;h<i;h++){const p=n[h];let d=c(p),g=f(p);if(d>g&&([d,g]=[g,d]),g<s||d>a)continue;d<s&&(d=s),g>a&&(g=a),this.variableBuilder.updateFromDatum(p),l[0]=0,l[1]=0;const m=1;this.variableBuilder.pushAll();for(let A=0;A<=m;A++)l[0]=A/m,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(p)}this.registerBatch(e)}}class Xb extends Vr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateSide=this.variableBuilder.createUpdater("side",1),this.updatePos=this.variableBuilder.createUpdater("pos",1)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const s=n[o];this.variableBuilder.updateFromDatum(s),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const a=1;for(let u=0;u<=a;u++)this.updatePos(u/a),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(s)}this.registerBatch(e)}}class Zb extends Vr{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class Kb extends Vr{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}toArrays(){const e=this.variableBuilder.arrays;for(let n of Object.values(e))n.divisor=1;return super.toArrays()}}class qb extends Vr{constructor({encoders:e,attributes:n,fontMetrics:r,properties:i,numCharacters:o=void 0}){super({encoders:e,attributes:n,numVertices:o*6}),this.metadata=r,this.metrics=r,this.properties=i;const a=e.text.channelDef;this.numberFormat=!Ge(a)&&a.format?oe(a.format):u=>u,this.updateVertexCoord=this.variableBuilder.createUpdater("vertexCoord",2),this.updateTextureCoord=this.variableBuilder.createUpdater("textureCoord",2),this.updateWidth=this.variableBuilder.createUpdater("width",1)}addBatch(e,n,r=0,i=n.length){const o=this.properties.align||"left",s=this.properties.logoLetters??!1,a=this.metadata.common.base,u=this.metadata.common.scaleH;let c=-Rn;switch(this.properties.baseline){case"top":c+=this.metrics.capHeight;break;case"middle":c+=this.metrics.capHeight/2;break;case"bottom":c-=this.metrics.descent;break}const f=this.encoders.text.accessor||this.encoders.text,l=[0,0];this.updateVertexCoord(l);const h=[0,0];this.updateTextureCoord(h),this.prepareXIndexer(n,r,i);for(let p=r;p<i;p++){const d=n[p],g=this.numberFormat(f(d)),m=W(g)?g:g===null?"":""+g;if(m.length==0)continue;this.variableBuilder.updateFromDatum(d);const A=s?m.length:this.metrics.measureWidth(m);this.updateWidth(A);let y=o=="right"?-A:o=="center"?-A/2:0;if(!s){const E=this.metrics.getCharByCode(m.charCodeAt(0));y-=(E.width-E.xadvance)/a/2}let b=-.5,C=1,B=1;for(let E=0;E<m.length;E++){const w=this.metrics.getCharByCode(m.charCodeAt(E)),X=s?1:w.xadvance/a;if(w.id==32){y+=X;continue}s?(B=(w.width+Rn*2)/w.width,y=-B/2,C=(w.height+Rn*2)/w.height,b=-.5-Rn/w.height):(C=w.height/a,b=-(w.height+w.yoffset+c)/a,B=w.width/a);const H=w.x,ae=w.y;l[0]=y,l[1]=b+C,h[0]=H/u,h[1]=ae/u,this.variableBuilder.pushAll(),l[0]=y+B,l[1]=b+C,h[0]=(H+w.width)/u,h[1]=ae/u,this.variableBuilder.pushAll(),l[0]=y,l[1]=b,h[0]=H/u,h[1]=(ae+w.height)/u,this.variableBuilder.pushAll(),l[0]=y+B,l[1]=b+C,h[0]=(H+w.width)/u,h[1]=ae/u,this.variableBuilder.pushAll(),l[0]=y,l[1]=b,h[0]=H/u,h[1]=(ae+w.height)/u,this.variableBuilder.pushAll(),l[0]=y+B,l[1]=b,h[0]=(H+w.width)/u,h[1]=(ae+w.height)/u,this.variableBuilder.pushAll(),y+=X}this.addToXIndex(d)}this.registerBatch(e)}}const j0=`#define PI 3.141593
62
+ uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : vec4(0.0),distanceToRatio(sd));}else{return fill*distanceToRatio(-d);}}`,Jb="const float inf=1.0/0.0;vec3 getDiscreteColor(sampler2D s,int index){return texelFetch(s,ivec2(index % textureSize(s,0).x,0),0).rgb;}vec3 getInterpolatedColor(sampler2D s,float unitValue){return texture(s,vec2(unitValue,0.0)).rgb;}float clampToRange(float value,vec2 range){return clamp(value,min(range[0],range[1]),max(range[0],range[1]));}float scaleIdentity(float value){return value;}float scaleLinear(float value,vec2 domain,vec2 range){float domainSpan=domain[1]-domain[0];float rangeSpan=range[1]-range[0];return(value-domain[0])/domainSpan*rangeSpan+range[0];}float scaleLog(float value,vec2 domain,vec2 range,float base){return scaleLinear(log(value)/log(base),log(domain)/log(base),range);}float symlog(float value,float constant){return sign(value)*log(abs(value/constant)+1.0);}float scaleSymlog(float value,vec2 domain,vec2 range,float constant){return scaleLinear(symlog(value,constant),vec2(symlog(domain[0],constant),symlog(domain[1],constant)),range);}float scalePow(float value,vec2 domain,vec2 range,float exponent){return scaleLinear(pow(abs(value),exponent)*sign(value),pow(abs(domain),vec2(exponent))*sign(domain),range);}float scaleBand(float value,vec2 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;float n=domainExtent[1]-domainExtent[0];paddingInner=int(n)>1 ? paddingInner : 0.0;float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+(value-domainExtent[0])*step+bandwidth*band;}float scaleBandHp(vec2 value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);float hi=max(value[0]-domainStart[0],-inf);float lo=max(value[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}",_b=`/***Describes where a sample facet should be shown. Interpolating between the*current and target positions/heights allows for transitioning between facet*configurations.*/struct SampleFacetPosition{float pos;float height;float targetPos;float targetHeight;};/***Trasition fraction[0,1]between the current and target configurations.*/uniform float uTransitionOffset;
63
63
  #if !defined(SAMPLE_FACET_UNIFORM) && !defined(SAMPLE_FACET_TEXTURE)
64
64
  SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1.0);}
65
65
  #elif defined(SAMPLE_FACET_UNIFORM)
@@ -67,36 +67,36 @@ SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1
67
67
  #elif defined(SAMPLE_FACET_TEXTURE)
68
68
  uniform sampler2D uSampleFacetTexture;SampleFacetPosition getSampleFacetPos(){vec4 texel=texelFetch(uSampleFacetTexture,ivec2(int(attr_facetIndex),0),0);return SampleFacetPosition(1.0-texel.r-texel.g,texel.g,1.0-texel.r-texel.g,texel.g);}
69
69
  #endif
70
- bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,_b=`/**Based on concepts presented at:*https:*https:*/out highp vec4 vPickingColor;/***Passes the unique id to the fragment shader as a color if picking is enabled.*Returns true if picking is enabled.*/bool setupPicking(){if(uPickingEnabled){
70
+ bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,$b=`/**Based on concepts presented at:*https:*https:*/out highp vec4 vPickingColor;/***Passes the unique id to the fragment shader as a color if picking is enabled.*Returns true if picking is enabled.*/bool setupPicking(){if(uPickingEnabled){
71
71
  #ifdef uniqueId_DEFINED
72
72
  int id=int(getScaled_uniqueId());vPickingColor=vec4(ivec4(id>>0,id>>8,id>>16,0xFF)&0xFF)/float(0xFF);
73
73
  #else
74
74
  vPickingColor=vec4(1.0);
75
75
  #endif
76
- return true;}return false;}`,$b="in highp vec4 vPickingColor;",wo=Symbol("cacheMap");function kn(t,e,n){let r=Wr(t).get(e);return r===void 0&&(r=n(e),Wr(t).set(e,r)),r}function V0(t,e){Wr(t).delete(e)}function vo(t,e){const n=Wr(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Wr(t).delete(e)}function Y0(t){t[wo]=new Map}function Wr(t){return t[wo]||Y0(t),t[wo]}function ew(t,e,n,r){const i=Z(t)?t:t.name,o=!Z(t)&&t.extent||[0,1];if(n===void 0&&!Z(t)&&(n=t.count),i){const s=Js(i);if(ge(s)){const a=X0(s,{extent:o,count:n});return Co(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},a,r)}else{if(Me(s))return W0(s,e);throw new Error("Unknown scheme: "+i)}}}function tw(t,e="rgb",n,r){const i=Vi(t,Z(e)?e:e.type,Z(e)?void 0:e.gamma),o=X0(i);return Co(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function nw(t,e,n,r){const i=Math.max(t.length,n||0),o=new Float32Array(i);for(let s=0;s<i;s++)o[s]=t[s%t.length];return Co(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function W0(t,e,n,r){const i=Z0(t,n);return Co(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function X0(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=Cn(e)-i,s=Kn(r).map(a=>a/(r-1)).map(a=>i+a/o).map(t);return n&&s.reverse(),Z0(s)}function Z0(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=Ht(t[i%t.length]).rgb();r[i*3+0]=o.r,r[i*3+1]=o.g,r[i*3+2]=o.b}return r}class rw{constructor(e,n){this._container=e,this._sizeSource=n,this._shaderCache=new Map,this._listeners=[],this.rangeTextures=new WeakMap;const r=document.createElement("canvas");e.appendChild(r);const i=Tb(r,{antialias:!0,depth:!1,premultipliedAlpha:!0});if(!i)throw new Error("Unable to initialize WebGL. Your browser or machine may not support it.");if(!Sn(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");N0(i),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),this.canvas=r,this.gl=i,this._pickingAttachmentOptions=[{format:i.RGBA,type:i.UNSIGNED_BYTE,minMag:i.LINEAR,wrap:i.CLAMP_TO_EDGE}],this._pickingBufferInfo=Sb(i,this._pickingAttachmentOptions),i.bindFramebuffer(i.FRAMEBUFFER,null),this.adjustGl(),this._resizeObserver=new ResizeObserver(o=>{this.invalidateSize(),this._emit("resize")}),this._resizeObserver.observe(this._container),this._updateDpr()}invalidateSize(){this._logicalCanvasSize=void 0,this._updateDpr(),this.adjustGl()}_updateDpr(){this.dpr=window.devicePixelRatio}compileShader(e,n){const r="#version 300 es",i="precision mediump float;";Me(n)&&(n=n.join(`
76
+ return true;}return false;}`,ew="in highp vec4 vPickingColor;",bo=Symbol("cacheMap");function Ln(t,e,n){let r=Yr(t).get(e);return r===void 0&&(r=n(e),Yr(t).set(e,r)),r}function V0(t,e){Yr(t).delete(e)}function wo(t,e){const n=Yr(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Yr(t).delete(e)}function Y0(t){t[bo]=new Map}function Yr(t){return t[bo]||Y0(t),t[bo]}function tw(t,e,n,r){const i=W(t)?t:t.name,o=!W(t)&&t.extent||[0,1];if(n===void 0&&!W(t)&&(n=t.count),i){const s=Js(i);if(ge(s)){const a=X0(s,{extent:o,count:n});return vo(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},a,r)}else{if(Fe(s))return W0(s,e);throw new Error("Unknown scheme: "+i)}}}function nw(t,e="rgb",n,r){const i=ji(t,W(e)?e:e.type,W(e)?void 0:e.gamma),o=X0(i);return vo(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function rw(t,e,n,r){const i=Math.max(t.length,n||0),o=new Float32Array(i);for(let s=0;s<i;s++)o[s]=t[s%t.length];return vo(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function W0(t,e,n,r){const i=Z0(t,n);return vo(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function X0(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=vn(e)-i,s=Kn(r).map(a=>a/(r-1)).map(a=>i+a/o).map(t);return n&&s.reverse(),Z0(s)}function Z0(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=Ut(t[i%t.length]).rgb();r[i*3+0]=o.r,r[i*3+1]=o.g,r[i*3+2]=o.b}return r}class iw{constructor(e,n){this._container=e,this._sizeSource=n,this._shaderCache=new Map,this._listeners=[],this.rangeTextures=new WeakMap;const r=document.createElement("canvas");e.appendChild(r);const i=Pb(r,{antialias:!0,depth:!1,premultipliedAlpha:!0});if(!i)throw new Error("Unable to initialize WebGL. Your browser or machine may not support it.");if(!En(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");N0(i),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),this.canvas=r,this.gl=i,this._pickingAttachmentOptions=[{format:i.RGBA,type:i.UNSIGNED_BYTE,minMag:i.LINEAR,wrap:i.CLAMP_TO_EDGE}],this._pickingBufferInfo=Db(i,this._pickingAttachmentOptions),i.bindFramebuffer(i.FRAMEBUFFER,null),this.adjustGl(),this._resizeObserver=new ResizeObserver(o=>{this.invalidateSize(),this._emit("resize")}),this._resizeObserver.observe(this._container),this._updateDpr()}invalidateSize(){this._logicalCanvasSize=void 0,this._updateDpr(),this.adjustGl()}_updateDpr(){this.dpr=window.devicePixelRatio}compileShader(e,n){const r="#version 300 es",i="precision mediump float;";Fe(n)&&(n=n.join(`
77
77
 
78
78
  `));const o=this.gl,s=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let a=this._shaderCache.get(s);if(!a){const u=[r,i,n].join(`
79
79
 
80
- `);a=o.createShader(e),o.shaderSource(a,u),o.compileShader(a),this._shaderCache.set(s,a)}return a}adjustGl(){const e=this.getLogicalCanvasSize();this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`;const n=this.getPhysicalCanvasSize(e);this.canvas.width=n.width,this.canvas.height=n.height,Db(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions)}finalize(){this._resizeObserver.unobserve(this._container),this.canvas.remove()}getPhysicalCanvasSize(e){return e=e||this.getLogicalCanvasSize(),{width:e.width*this.dpr,height:e.height*this.dpr}}getLogicalCanvasSize(){var o,s,a,u;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=(s=(o=this._sizeSource)==null?void 0:o.call(this))!=null?s:{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=(a=e.width)!=null?a:this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=(u=e.height)!=null?u:this._container.clientHeight-parseFloat(n.paddingTop)-parseFloat(n.paddingBottom);return this._logicalCanvasSize={width:r,height:i},this._logicalCanvasSize}addEventListener(e,n){this._listeners.push({type:e,listener:n})}_emit(e){for(const n of this._listeners)n.type===e&&n.listener()}readPickingPixel(e,n){const r=this.gl;e*=this.dpr,n*=this.dpr;const i=this.getPhysicalCanvasSize().height,o=new Uint8Array(4);return r.bindFramebuffer(r.FRAMEBUFFER,this._pickingBufferInfo.framebuffer),r.readPixels(e,i-n-1,1,1,r.RGBA,r.UNSIGNED_BYTE,o),r.bindFramebuffer(r.FRAMEBUFFER,null),o}clearAll(){const e=this.gl,{width:n,height:r}=this.getPhysicalCanvasSize();e.viewport(0,0,n,r),e.disable(e.SCISSOR_TEST),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)}createRangeTexture(e,n=!1){const r=this.rangeTextures.get(e);if(!n&&r)return;function i(s,a){return Wt(a.type)?a.domain().length:a.type=="threshold"?a.domain().length+1:a.type=="quantize"||a.type=="quantile"?s!=null?s:4:s}const o=e.channel;if(qt(o)){const s=e.getScaleProps(),a=e.getScale();let u;if(s.scheme){let c=Z(s.scheme)?void 0:s.scheme.count;c=i(c,a),u=ew(s.scheme,this.gl,c,r)}else{const c=a.range();ji(a.type)?u=tw(c,s.interpolate,this.gl,r):u=W0(c,this.gl,a.domain().length,r)}this.rangeTextures.set(e,u)}else{const s=e.getScale();if(s.type==="ordinal"||vn(s.type)){const a=Ji(o)?vf(o):c=>c,u=e.getScale().range();this.rangeTextures.set(e,nw(u.map(a),this.gl,s.domain().length,r))}}}}function iw(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],o=new Map(i.map((s,a)=>{const u=parseInt(s[1]),c=i[a+1],f=c?c.index:e.length,l=e.substring(s.index,f);return[u-1,l]}));return t.split(`
80
+ `);a=o.createShader(e),o.shaderSource(a,u),o.compileShader(a),this._shaderCache.set(s,a)}return a}adjustGl(){const e=this.getLogicalCanvasSize();this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`;const n=this.getPhysicalCanvasSize(e);this.canvas.width=n.width,this.canvas.height=n.height,Bb(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions)}finalize(){this._resizeObserver.unobserve(this._container),this.canvas.remove()}getPhysicalCanvasSize(e){return e=e||this.getLogicalCanvasSize(),{width:e.width*this.dpr,height:e.height*this.dpr}}getLogicalCanvasSize(){var o;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=((o=this._sizeSource)==null?void 0:o.call(this))??{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=e.width??this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=e.height??this._container.clientHeight-parseFloat(n.paddingTop)-parseFloat(n.paddingBottom);return this._logicalCanvasSize={width:r,height:i},this._logicalCanvasSize}addEventListener(e,n){this._listeners.push({type:e,listener:n})}_emit(e){for(const n of this._listeners)n.type===e&&n.listener()}readPickingPixel(e,n){const r=this.gl;e*=this.dpr,n*=this.dpr;const i=this.getPhysicalCanvasSize().height,o=new Uint8Array(4);return r.bindFramebuffer(r.FRAMEBUFFER,this._pickingBufferInfo.framebuffer),r.readPixels(e,i-n-1,1,1,r.RGBA,r.UNSIGNED_BYTE,o),r.bindFramebuffer(r.FRAMEBUFFER,null),o}clearAll(){const e=this.gl,{width:n,height:r}=this.getPhysicalCanvasSize();e.viewport(0,0,n,r),e.disable(e.SCISSOR_TEST),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)}createRangeTexture(e,n=!1){const r=this.rangeTextures.get(e);if(!n&&r)return;function i(s,a){return Yt(a.type)?a.domain().length:a.type=="threshold"?a.domain().length+1:a.type=="quantize"||a.type=="quantile"?s??4:s}const o=e.channel;if(Kt(o)){const s=e.getScaleProps(),a=e.getScale();let u;if(s.scheme){let c=W(s.scheme)?void 0:s.scheme.count;c=i(c,a),u=tw(s.scheme,this.gl,c,r)}else{const c=a.range();Qi(a.type)?u=nw(c,s.interpolate,this.gl,r):u=W0(c,this.gl,a.domain().length,r)}this.rangeTextures.set(e,u)}else{const s=e.getScale();if(s.type==="ordinal"||wn(s.type)){const a=qi(o)?vf(o):c=>c,u=e.getScale().range();this.rangeTextures.set(e,rw(u.map(a),this.gl,s.domain().length,r))}}}}function ow(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],o=new Map(i.map((s,a)=>{const u=parseInt(s[1]),c=i[a+1],f=c?c.index:e.length,l=e.substring(s.index,f);return[u-1,l]}));return t.split(`
81
81
  `).map((s,a)=>{const u=o.get(a);return`${a+1+n}: ${s}${u?`
82
82
 
83
83
  ^^^ ${u}`:""}`}).join(`
84
- `)}function ow(t,e,n){const r=t.createProgram();t.attachShader(r,e),t.attachShader(r,n),t.linkProgram(r);function i(){let o,s;if(!t.getProgramParameter(r,t.LINK_STATUS)){o=t.getProgramInfoLog(r);for(const u of[e,n])t.getShaderParameter(u,t.COMPILE_STATUS)||(o=t.getShaderInfoLog(u),s=iw(t.getShaderSource(u),o,0)+`
85
- Error compiling: ${o}`,t.deleteShader(u));t.deleteProgram(r)}if(o)return{message:o,detail:s}}return{program:r,getProgramErrors:i}}function Co(t,e,n,r){return r?_f(t,r,n,e):r=jr(t,{...e,src:n}),r}function sw(...t){const e={get(n,r,i){for(const o of t){const a=o()[r];if(a!==void 0)return a}},has(n,r,i){for(const o of t){const s=o();if(r in s)return!0}return!1}};return new Proxy({},e)}function aw(t){return Z(t)||me(t)||ui(t)}const uw="SAMPLE_FACET_UNIFORM",K0="SAMPLE_FACET_TEXTURE";class Xr{constructor(e){this.unitView=e,this.encoders=void 0,this.bufferInfo=void 0,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.domainUniformInfo=void 0,this.viewUniformInfo=void 0,this.rangeMap=new cw,this.defaultProperties={get clip(){return["x","y"].map(n=>e.getScaleResolution(n)).some(n=>{var r;return(r=n==null?void 0:n.isZoomable())!=null?r:!1})},xOffset:0,yOffset:0,minBufferSize:0},this.properties=sw(typeof this.unitView.spec.mark=="object"?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}get opaque(){return!1}getAttributes(){throw new Error("Not implemented!")}getSupportedChannels(){return["sample","facetIndex","x","y","color","opacity","search","uniqueId"]}getDefaultEncoding(){const e={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(e.uniqueId={field:"_uniqueId"}),e}fixEncoding(e){return e}get encoding(){return kn(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=s=>{const a=this.properties[s];return aw(a)&&{value:a}},i=Object.fromEntries(this.getSupportedChannels().map(s=>[s,r(s)]).filter(s=>s[1].value!==void 0)),o=this.fixEncoding({...e,...i,...n});for(const s of Object.keys(o))this.getSupportedChannels().includes(s)||delete o[s];return o})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=z1(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return K0;if(this.unitView.getFacetAccessor())return uw}createAndLinkShaders(e,n,r=[]){const i=this.getAttributes();r.push("// view: "+this.unitView.getPathString()),this.domainUniforms=[];let o=[];const s=this.getSampleFacetMode();s&&r.push(`#define ${s}`);for(const h of i){let p;if(h in this.encoding)p=h;else continue;const d=this.encoding[p];if(!!d)if(Ue(d))o.push(Nb(p,d.value));else{const g=Le(d)&&d.resolutionChannel||p,A=this.unitView.getScaleResolution(g).getScale(),m=zb(p,A,d);o.push(m.glsl),m.domainUniform&&this.domainUniforms.push(m.domainUniform)}}const a=this.domainUniforms.length?`layout(std140) uniform Domains {
84
+ `)}function sw(t,e,n){const r=t.createProgram();t.attachShader(r,e),t.attachShader(r,n),t.linkProgram(r);function i(){let o,s;if(!t.getProgramParameter(r,t.LINK_STATUS)){o=t.getProgramInfoLog(r);for(const u of[e,n])t.getShaderParameter(u,t.COMPILE_STATUS)||(o=t.getShaderInfoLog(u),s=ow(t.getShaderSource(u),o,0)+`
85
+ Error compiling: ${o}`,t.deleteShader(u));t.deleteProgram(r)}if(o)return{message:o,detail:s}}return{program:r,getProgramErrors:i}}function vo(t,e,n,r){return r?_f(t,r,n,e):r=Qr(t,{...e,src:n}),r}function aw(...t){const e={get(n,r,i){for(const o of t){const a=o()[r];if(a!==void 0)return a}},has(n,r,i){for(const o of t){const s=o();if(r in s)return!0}return!1}};return new Proxy({},e)}function uw(t){return W(t)||me(t)||ai(t)}const cw="SAMPLE_FACET_UNIFORM",K0="SAMPLE_FACET_TEXTURE";class Wr{constructor(e){this.unitView=e,this.encoders=void 0,this.bufferInfo=void 0,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.domainUniformInfo=void 0,this.viewUniformInfo=void 0,this.rangeMap=new lw,this.defaultProperties={get clip(){return["x","y"].map(n=>e.getScaleResolution(n)).some(n=>(n==null?void 0:n.isZoomable())??!1)},xOffset:0,yOffset:0,minBufferSize:0},this.properties=aw(typeof this.unitView.spec.mark=="object"?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}get opaque(){return!1}getAttributes(){throw new Error("Not implemented!")}getSupportedChannels(){return["sample","facetIndex","x","y","color","opacity","search","uniqueId"]}getDefaultEncoding(){const e={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(e.uniqueId={field:"_uniqueId"}),e}fixEncoding(e){return e}get encoding(){return Ln(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=s=>{const a=this.properties[s];return uw(a)&&{value:a}},i=Object.fromEntries(this.getSupportedChannels().map(s=>[s,r(s)]).filter(s=>s[1].value!==void 0)),o=this.fixEncoding({...e,...i,...n});for(const s of Object.keys(o))this.getSupportedChannels().includes(s)||delete o[s];return o})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=O1(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return K0;if(this.unitView.getFacetAccessor())return cw}createAndLinkShaders(e,n,r=[]){const i=this.getAttributes();r.push("// view: "+this.unitView.getPathString()),this.domainUniforms=[];let o=[];const s=this.getSampleFacetMode();s&&r.push(`#define ${s}`);for(const h of i){let p;if(h in this.encoding)p=h;else continue;const d=this.encoding[p];if(d)if(Ge(d))o.push(zb(p,d.value));else{const g=Pe(d)&&d.resolutionChannel||p,m=this.unitView.getScaleResolution(g).getScale(),A=Ob(p,m,d);o.push(A.glsl),A.domainUniform&&this.domainUniforms.push(A.domainUniform)}}const a=this.domainUniforms.length?`layout(std140) uniform Domains {
86
86
  `+this.domainUniforms.map(h=>` ${h}
87
87
  `).join("")+`};
88
88
 
89
89
  `:"",c=[`precision highp float;
90
- `,...r,j0,qb,a,...o,Jb,_b,e],f=[...r,j0,$b,n],l=this.gl;this.programStatus=ow(l,this.glHelper.compileShader(l.VERTEX_SHADER,c),this.glHelper.compileShader(l.FRAGMENT_SHADER,f))}finalizeGraphicsInitialization(){const e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);const n=new Error("Cannot create shader program: "+e.message);throw n.view=this.unitView,n}this.programInfo=ub(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=S0(this.gl,this.programInfo,"Domains")),this.viewUniformInfo=S0(this.gl,this.programInfo,"View"),this.gl.useProgram(this.programInfo.program),this._setDatums(),Ee(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0})}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(Rr(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):bo(r.scale.type)?Qa(+n.datum):+n.datum;Ee(this.programInfo,{[Ga+e]:i})}}deleteGraphicsData(){if(this.bufferInfo){const e=this.gl;for(let n=0;n<8;n++)e.disableVertexAttribArray(n);Object.values(this.bufferInfo.attribs).forEach(n=>this.gl.deleteBuffer(n.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}updateBufferInfo(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(const[n,r]of Object.entries(e.arrays))r.data&&bx(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=Cx(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.allocatedVertices,this.vertexArrayInfo=void 0}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null)return!1;for(const e of this.unitView.getAncestors())if(!e.isPickingSupported())return!1;return!0}prepareRender(e){var s;const n=this.glHelper,r=this.gl,i=[];if(i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=Bb(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)}),this.domainUniformInfo){for(const[a,u]of Object.entries(this.domainUniformInfo.setters)){const c=a.substring(z0.length),f=this.encoding[c],l=Le(f)&&f.resolutionChannel||c,h=this.unitView.getScaleResolution(l);if(h){const p=h.getScale();i.push(()=>{const d=Wt(p.type)?[0,p.domain().length]:p.domain();u(bo(p.type)?Ub(d):d)})}}i.push(()=>D0(r,this.programInfo,this.domainUniformInfo))}for(const[a,u]of Object.entries(this.encoding))if(Le(u)){const c=Le(u)&&u.resolutionChannel||a,f=this.unitView.getScaleResolution(c),l=n.rangeTextures.get(f);l&&i.push(()=>Ee(this.programInfo,{[Ua+a]:l}))}this.getSampleFacetMode()==K0&&i.push(()=>{let a;for(const u of this.unitView.getAncestors())if(a=u.getSampleFacetTexture(),a)break;if(!a)throw new Error("No facet texture available. This is bug.");Ee(this.programInfo,{uSampleFacetTexture:a})});const o=((s=e.picking)!=null?s:!1)&&this.isPickingParticipant();return i.push(()=>B0(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:o})),this.opaque||e.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}prepareSampleFacetRendering(e){const n=e.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(n&&r){const i=n.locSize?n.locSize.location:0,o=n.locSize?n.locSize.size:1;if(i>1||i+o<0)return!1;const s=n.targetLocSize?n.targetLocSize.location:i,a=n.targetLocSize?n.targetLocSize.size:o;this.gl.uniform4f(r.location,i,o,s,a)}return!0}render(e){}createRenderCallback(e,n){var f;const r=this;let i;const o=(f=this.unitView.getScaleResolution("x"))==null?void 0:f.getScale(),s=o&&Pe(o.type),a=["index","locus"].includes(o==null?void 0:o.type)?-1:0,u=[0,0];i=l=>{if(s&&l.xIndex){const h=o.domain(),p=l.xIndex(h[0]+a,h[1],u),d=p[0],g=p[1]-d;g>0&&e(d,g)}else e(l.offset,l.count)};const c=this.rangeMap.get(n.facetId);return n.sampleFacetRenderingOptions?function(){c.count&&r.prepareSampleFacetRendering(n)&&i(c)}:function(){c.count&&i(c)}}setViewport(e,n){const r=this.glHelper.dpr,i=this.gl,o=this.properties,s=this.glHelper.getLogicalCanvasSize(),a=.5,u=(o.xOffset||0)+a,c=(o.yOffset||0)+a;let f,l=e;if(o.clip||n){let h=0,p=0,d;n?(l=o.clip?e.intersect(n):n,d=[e.width/l.width,e.height/l.height],p=Math.max(0,e.y2-n.y2),h=Math.max(0,e.x2-n.x2)):d=[1,1];const g=[e.x,s.height-l.y2,Math.max(0,l.width),Math.max(0,l.height)].map(y=>y*r),A=g.map(y=>Math.floor(y)),[m,b]=g.map((y,w)=>y-A[w]);i.viewport(...A),i.scissor(...A),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(u+h+m)/l.width,-(c+p-b)/l.height],uViewScale:d}}else i.viewport(0,0,s.width*r,s.height*r),i.disable(i.SCISSOR_TEST),f={uViewOffset:[(e.x+u)/s.width,(s.height-e.y-c-e.height)/s.height],uViewScale:[e.width/s.width,e.height/s.height]};return B0(this.viewUniformInfo,{...f,uViewportSize:[e.width,e.height],uDevicePixelRatio:this.glHelper.dpr}),D0(this.gl,this.programInfo,this.viewUniformInfo),l.height>0&&l.width>0}findDatumAt(e,n){}}class cw extends Pt{constructor(){super([],JSON.stringify)}get(e){let n=super.get(e);return n===void 0&&(n={offset:0,count:0,xIndex:void 0},super.set(e,n)),n}migrateEntries(e){for(const[n,r]of e.entries())Object.assign(this.get(n),r)}}function Ya(t,e){var o;const n=H1(e);let r=t[e]&&{...t[e]},i=t[n]&&{...t[n]};if(!(Ue(r)||Ue(i))){if(r){if(!Le(t[e]))return;if(i){if(r.type!="quantitative"){const s=(1-(r.band||1))/2;r.band=s,i.band=-s}}else if(r.type=="quantitative")i={datum:0};else{i={...r};const s=(1-((o=r.band)!=null?o:1))/2;r.band=0+s,i.band=1-s}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function q0(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke={resolutionChannel:"color",...t.color}),Ue(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity={resolutionChannel:"opacity",...t.opacity})}function J0(t,e){Ue(t.fill)&&t.fill.value===null?t.fillOpacity={value:0}:t.fill||(t.fill={resolutionChannel:"color",...t.color},!e&&!t.fillOpacity&&(t.fillOpacity={value:0})),t.fillOpacity||(e?t.fillOpacity={resolutionChannel:"opacity",...t.opacity}:t.fillOpacity={value:0})}class lw extends Xr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,filled:!0,color:"#4c78a8",opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1,tessellationZoomThreshold:10,tessellationTiles:35}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","fill","stroke","fillOpacity","strokeOpacity","strokeWidth"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","fill","stroke","fillOpacity","strokeOpacity","strokeWidth"]}get opaque(){return kn(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&Ue(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return Ya(e,"x"),Ya(e,"y"),q0(e,this.properties.filled),J0(e,this.properties.filled),delete e.color,delete e.opacity,e}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}_isRoundedCorners(){return["","TopLeft","TopRight","BottomLeft","BottomRight"].map(e=>"cornerRadius"+e).some(e=>this.properties[e]>0)}_isStroked(){const e=this.encoding.strokeWidth;return!(Ue(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(Pb,Lb,e.map(n=>"#define "+n))}finalizeGraphicsInitialization(){var n,r,i,o;super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uMinSize:[e.minWidth,e.minHeight],uMinOpacity:e.minOpacity,uCornerRadii:[(n=e.cornerRadiusTopRight)!=null?n:e.cornerRadius,(r=e.cornerRadiusBottomRight)!=null?r:e.cornerRadius,(i=e.cornerRadiusTopLeft)!=null?i:e.cornerRadius,(o=e.cornerRadiusBottomLeft)!=null?o:e.cornerRadius]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Yb({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{Vr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e)}findDatumAt(e,n){e=Ke(e);const r=this.encoders,i=this.unitView.getCollector().facetBatches.get(e),o=r.x.accessor,s=r.x2.accessor;if(i)return i.find(a=>n>=o(a)&&n<s(a))}}const fw=`/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform lowp float uMaxRelativePointDiameter;uniform float uScaleFactor;uniform float uMaxPointSize;uniform float uZoomLevel;uniform float uSemanticThreshold;out float vRadius;out float vRadiusWithPadding;out lowp vec4 vFillColor;out lowp vec4 vStrokeColor;out lowp float vShape;out lowp float vHalfStrokeWidth;out mat2 vRotationMatrix;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}/***Computes a scaling factor for the points in a sample-faceted view.*/float getDownscaleFactor(vec2 pos){if(!isFacetedSamples()){return 1.0;}float sampleFacetHeight=getSampleFacetHeight(pos);float maxPointDiameter=sqrt(uMaxPointSize);float factor=sampleFacetHeight*uViewportSize.y*uMaxRelativePointDiameter;return clamp(0.0,maxPointDiameter,factor)/maxPointDiameter;}vec2 getDxDy(){
90
+ `,...r,j0,Jb,a,...o,_b,$b,e],f=[...r,j0,ew,n],l=this.gl;this.programStatus=sw(l,this.glHelper.compileShader(l.VERTEX_SHADER,c),this.glHelper.compileShader(l.FRAGMENT_SHADER,f))}finalizeGraphicsInitialization(){const e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);const n=new Error("Cannot create shader program: "+e.message);throw n.view=this.unitView,n}this.programInfo=cb(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=S0(this.gl,this.programInfo,"Domains")),this.viewUniformInfo=S0(this.gl,this.programInfo,"View"),this.gl.useProgram(this.programInfo.program),this._setDatums(),Ee(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0})}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(Rr(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):yo(r.scale.type)?Qa(+n.datum):+n.datum;Ee(this.programInfo,{[Ga+e]:i})}}deleteGraphicsData(){if(this.bufferInfo){const e=this.gl;for(let n=0;n<8;n++)e.disableVertexAttribArray(n);Object.values(this.bufferInfo.attribs).forEach(n=>this.gl.deleteBuffer(n.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}updateBufferInfo(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(const[n,r]of Object.entries(e.arrays))r.data&&wx(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=Ex(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.allocatedVertices,this.vertexArrayInfo=void 0}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null)return!1;for(const e of this.unitView.getAncestors())if(!e.isPickingSupported())return!1;return!0}prepareRender(e){const n=this.glHelper,r=this.gl,i=[];if(i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=Fb(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)}),this.domainUniformInfo){for(const[s,a]of Object.entries(this.domainUniformInfo.setters)){const u=s.substring(z0.length),c=this.encoding[u],f=Pe(c)&&c.resolutionChannel||u,l=this.unitView.getScaleResolution(f);if(l){const h=l.getScale();i.push(()=>{const p=Yt(h.type)?[0,h.domain().length]:h.domain();a(yo(h.type)?Hb(p):p)})}}i.push(()=>D0(r,this.programInfo,this.domainUniformInfo))}for(const[s,a]of Object.entries(this.encoding))if(Pe(a)){const u=Pe(a)&&a.resolutionChannel||s,c=this.unitView.getScaleResolution(u),f=n.rangeTextures.get(c);f&&i.push(()=>Ee(this.programInfo,{[Ua+s]:f}))}this.getSampleFacetMode()==K0&&i.push(()=>{let s;for(const a of this.unitView.getAncestors())if(s=a.getSampleFacetTexture(),s)break;if(!s)throw new Error("No facet texture available. This is bug.");Ee(this.programInfo,{uSampleFacetTexture:s})});const o=(e.picking??!1)&&this.isPickingParticipant();return i.push(()=>B0(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:o})),this.opaque||e.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}prepareSampleFacetRendering(e){const n=e.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(n&&r){const i=n.locSize?n.locSize.location:0,o=n.locSize?n.locSize.size:1;if(i>1||i+o<0)return!1;const s=n.targetLocSize?n.targetLocSize.location:i,a=n.targetLocSize?n.targetLocSize.size:o;this.gl.uniform4f(r.location,i,o,s,a)}return!0}render(e){}createRenderCallback(e,n){var f;const r=this;let i;const o=(f=this.unitView.getScaleResolution("x"))==null?void 0:f.getScale(),s=o&&Te(o.type),a=["index","locus"].includes(o==null?void 0:o.type)?-1:0,u=[0,0];i=l=>{if(s&&l.xIndex){const h=o.domain(),p=l.xIndex(h[0]+a,h[1],u),d=p[0],g=p[1]-d;g>0&&e(d,g)}else e(l.offset,l.count)};const c=this.rangeMap.get(n.facetId);return n.sampleFacetRenderingOptions?function(){c.count&&r.prepareSampleFacetRendering(n)&&i(c)}:function(){c.count&&i(c)}}setViewport(e,n){const r=this.glHelper.dpr,i=this.gl,o=this.properties,s=this.glHelper.getLogicalCanvasSize(),a=.5,u=(o.xOffset||0)+a,c=(o.yOffset||0)+a;let f,l=e;if(o.clip||n){let h=0,p=0,d;n?(l=o.clip?e.intersect(n):n,d=[e.width/l.width,e.height/l.height],p=Math.max(0,e.y2-n.y2),h=Math.max(0,e.x2-n.x2)):d=[1,1];const g=[e.x,s.height-l.y2,Math.max(0,l.width),Math.max(0,l.height)].map(b=>b*r),m=g.map(b=>Math.floor(b)),[A,y]=g.map((b,C)=>b-m[C]);i.viewport(...m),i.scissor(...m),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(u+h+A)/l.width,-(c+p-y)/l.height],uViewScale:d}}else i.viewport(0,0,s.width*r,s.height*r),i.disable(i.SCISSOR_TEST),f={uViewOffset:[(e.x+u)/s.width,(s.height-e.y-c-e.height)/s.height],uViewScale:[e.width/s.width,e.height/s.height]};return B0(this.viewUniformInfo,{...f,uViewportSize:[e.width,e.height],uDevicePixelRatio:this.glHelper.dpr}),D0(this.gl,this.programInfo,this.viewUniformInfo),l.height>0&&l.width>0}findDatumAt(e,n){}}class lw extends Tt{constructor(){super([],JSON.stringify)}get(e){let n=super.get(e);return n===void 0&&(n={offset:0,count:0,xIndex:void 0},super.set(e,n)),n}migrateEntries(e){for(const[n,r]of e.entries())Object.assign(this.get(n),r)}}function Ya(t,e){const n=Q1(e);let r=t[e]&&{...t[e]},i=t[n]&&{...t[n]};if(!(Ge(r)||Ge(i))){if(r){if(!Pe(t[e]))return;if(i){if(r.type!="quantitative"){const o=(1-(r.band||1))/2;r.band=o,i.band=-o}}else if(r.type=="quantitative")i={datum:0};else{i={...r};const o=(1-(r.band??1))/2;r.band=0+o,i.band=1-o}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function q0(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke={resolutionChannel:"color",...t.color}),Ge(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity={resolutionChannel:"opacity",...t.opacity})}function J0(t,e){Ge(t.fill)&&t.fill.value===null?t.fillOpacity={value:0}:t.fill||(t.fill={resolutionChannel:"color",...t.color},!e&&!t.fillOpacity&&(t.fillOpacity={value:0})),t.fillOpacity||(e?t.fillOpacity={resolutionChannel:"opacity",...t.opacity}:t.fillOpacity={value:0})}class fw extends Wr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,filled:!0,color:"#4c78a8",opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1,tessellationZoomThreshold:10,tessellationTiles:35}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","fill","stroke","fillOpacity","strokeOpacity","strokeWidth"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","fill","stroke","fillOpacity","strokeOpacity","strokeWidth"]}get opaque(){return Ln(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&Ge(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return Ya(e,"x"),Ya(e,"y"),q0(e,this.properties.filled),J0(e,this.properties.filled),delete e.color,delete e.opacity,e}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}_isRoundedCorners(){return["","TopLeft","TopRight","BottomLeft","BottomRight"].map(e=>"cornerRadius"+e).some(e=>this.properties[e]>0)}_isStroked(){const e=this.encoding.strokeWidth;return!(Ge(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(Rb,Lb,e.map(n=>"#define "+n))}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uMinSize:[e.minWidth,e.minHeight],uMinOpacity:e.minOpacity,uCornerRadii:[e.cornerRadiusTopRight??e.cornerRadius,e.cornerRadiusBottomRight??e.cornerRadius,e.cornerRadiusTopLeft??e.cornerRadius,e.cornerRadiusBottomLeft??e.cornerRadius]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Wb({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Pn(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{jr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e)}findDatumAt(e,n){e=Ke(e);const r=this.encoders,i=this.unitView.getCollector().facetBatches.get(e),o=r.x.accessor,s=r.x2.accessor;if(i)return i.find(a=>n>=o(a)&&n<s(a))}}const hw=`/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform lowp float uMaxRelativePointDiameter;uniform float uScaleFactor;uniform float uMaxPointSize;uniform float uZoomLevel;uniform float uSemanticThreshold;out float vRadius;out float vRadiusWithPadding;out lowp vec4 vFillColor;out lowp vec4 vStrokeColor;out lowp float vShape;out lowp float vHalfStrokeWidth;out mat2 vRotationMatrix;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}/***Computes a scaling factor for the points in a sample-faceted view.*/float getDownscaleFactor(vec2 pos){if(!isFacetedSamples()){return 1.0;}float sampleFacetHeight=getSampleFacetHeight(pos);float maxPointDiameter=sqrt(uMaxPointSize);float factor=sampleFacetHeight*uViewportSize.y*uMaxRelativePointDiameter;return clamp(0.0,maxPointDiameter,factor)/maxPointDiameter;}vec2 getDxDy(){
91
91
  #if defined(dx_DEFINED) || defined(dy_DEFINED)
92
92
  return vec2(getScaled_dx(),getScaled_dy())/uViewportSize;
93
93
  #else
94
94
  return vec2(0.0,0.0);
95
95
  #endif
96
- }void main(void){float semanticThresholdFactor=computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor*getDownscaleFactor(pos);float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=(diameter+padding)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,hw="const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);uniform bool uInwardStroke;uniform float uGradientStrength;in float vRadius;in float vRadiusWithPadding;in lowp vec4 vFillColor;in lowp vec4 vStrokeColor;in lowp float vShape;in lowp float vHalfStrokeWidth;in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float TRIANGLE_UP=2.0;const float CROSS=3.0;const float DIAMOND=4.0;const float TRIANGLE_DOWN=5.0;const float TRIANGLE_RIGHT=6.0;const float TRIANGLE_LEFT=7.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float equilateralTriangle(vec2 p,float r,bool flip,bool swap){if(swap){p.xy=p.yx;}if(flip){p.y=-p.y;}float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r,true,false);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_DOWN){d=equilateralTriangle(p,r,false,false);}else if(vShape==TRIANGLE_RIGHT){d=equilateralTriangle(p,r,false,true);}else if(vShape==TRIANGLE_LEFT){d=equilateralTriangle(p,r,true,true);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}",ut=1<<0,Ft=1<<1,dw={};class J{get behavior(){return 0}constructor(){this.children=[],this.parent=void 0,this.completed=!1}reset(){this.completed=!1;for(const e of this.children)e.reset()}initialize(){}_updatePropagator(){this._propagate=Function("children",Kn(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
96
+ }void main(void){float semanticThresholdFactor=computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor*getDownscaleFactor(pos);float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=(diameter+padding)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,dw="const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);uniform bool uInwardStroke;uniform float uGradientStrength;in float vRadius;in float vRadiusWithPadding;in lowp vec4 vFillColor;in lowp vec4 vStrokeColor;in lowp float vShape;in lowp float vHalfStrokeWidth;in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float TRIANGLE_UP=2.0;const float CROSS=3.0;const float DIAMOND=4.0;const float TRIANGLE_DOWN=5.0;const float TRIANGLE_RIGHT=6.0;const float TRIANGLE_LEFT=7.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float equilateralTriangle(vec2 p,float r,bool flip,bool swap){if(swap){p.xy=p.yx;}if(flip){p.y=-p.y;}float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r,true,false);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_DOWN){d=equilateralTriangle(p,r,false,false);}else if(vShape==TRIANGLE_RIGHT){d=equilateralTriangle(p,r,false,true);}else if(vShape==TRIANGLE_LEFT){d=equilateralTriangle(p,r,true,true);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}",at=1<<0,Bt=1<<1,pw={};class q{get behavior(){return 0}constructor(){this.children=[],this.parent=void 0,this.completed=!1}reset(){this.completed=!1;for(const e of this.children)e.reset()}initialize(){}_updatePropagator(){this._propagate=Function("children",Kn(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
97
97
  `)+`return function propagate(datum) {${Kn(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
98
98
  `)}}`)(this.children)}setParent(e){this.parent=e}addChild(e){if(e.parent)throw new Error("Cannot add the child! It already has a parent.");return this.children.push(e),e.setParent(this),this._updatePropagator(),this}adopt(e){e.parent&&e.parent.removeChild(e),this.addChild(e)}adoptChildrenOf(e){for(const n of e.children)this.adopt(n)}insertAsParent(e){if(this.isRoot())throw new Error("Cannot insert a new parent for a root node!");e.parent=this.parent,this.parent.children[this.parent.children.indexOf(this)]=e,this.parent._updatePropagator(),this.parent=void 0,e.addChild(this)}removeChild(e){const n=this.children.indexOf(e);if(n>-1)this.children.splice(n,1),e.parent=void 0,this._updatePropagator();else throw new Error("Trying to remove an unknown child node!")}excise(){if(this.isRoot())throw new Error("Cannot excise root node!");if(this.isTerminal())this.parent.removeChild(this);else if(this.children.length==1){const e=this.children[0];e.setParent(this.parent),this.parent.children[this.parent.children.indexOf(this)]=e,this.parent._updatePropagator(),this.setParent(void 0),this.children.length=0}else throw new Error("Cannot excise a node that has multiple children!")}isRoot(){return!this.parent}isBranching(){return this.children.length>1}isTerminal(){return this.children.length==0}visit(e){e(this);for(const n of this.children)n.visit(e);e.afterChildren&&e.afterChildren(this)}subtreeToString(e=0){var r;const n=this.children.map(i=>i.subtreeToString(e+1)).join("");return" ".repeat(e*2)+"* "+((r=/^class ([A-Za-z0-9_]+)/.exec(""+this.constructor))==null?void 0:r[1])+`
99
- `+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():dw}handle(e){this._propagate(e)}complete(){this.completed=!0;for(const e of this.children)e.complete()}beginBatch(e){for(const n of this.children)n.beginBatch(e)}_propagate(e){}}function _0(t){return t.type=="file"}function pw(t){return t.type=="facet"}class $0 extends J{constructor(e){super(),this.k=e.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(e){this.reservoir.push(e),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(e){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=e,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(e){this.ingester(e)}complete(){for(const e of this.reservoir)this._propagate(e);super.complete()}}function gw(t,e,n){const r=new $0({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const mw={};class Aw extends Xr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,color:"#4c78a8",filled:!0,opacity:1,size:100,semanticScore:0,shape:"circle",strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02}))}getAttributes(){return["inwardStroke","uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","gradientStrength","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"size","semanticScore","shape","strokeWidth","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getDefaultEncoding(){return{...super.getDefaultEncoding(),...mw}}fixEncoding(e){return q0(e,this.properties.filled),J0(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){super.initializeData();const e=this.unitView.getAccessor("semanticScore");e&&(this.sampledSemanticScores=Float32Array.from(gw(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(fw,hw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Xb({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}_getGeometricScaleFactor(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)}_getMaxPointSize(){const e=this.encoders.size;return e.constant?e(null):e.scale.range().reduce((n,r)=>Math.max(n,r))}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-this.properties.semanticZoomFraction*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const n=this.sampledSemanticScores;return Pu(n,e)}}else return-1}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Ee(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&Vr(n,this.vertexArrayInfo,n.POINTS,i,r)},e)}}const xw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;uniform float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}",yw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;uniform float uDashTextureSize;uniform float uStrokeDashOffset;uniform lowp int uStrokeCap;in vec4 vColor;in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class bw extends Xr{constructor(e){super(e),this.dashTextureSize=0,Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,size:1,color:"black",opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:"butt"}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){if(!(e.x&&e.y&&e.x2&&e.y2))if(e.x&&e.x2&&!e.y)e.y={value:.5},e.y2=e.y;else if(e.y&&e.y2&&!e.x)e.x={value:.5},e.x2=e.x;else if(e.x&&!e.y)e.y={value:0},e.y2={value:1},e.x2=e.x;else if(e.y&&!e.x)e.x={value:0},e.x2={value:1},e.y2=e.y;else if(e.x&&e.y&&e.y2)e.x2=e.x;else if(e.y&&e.x&&e.x2)e.y2=e.y;else if(e.y&&e.x)if(!e.x2&&Le(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Le(e.x)&&e.x.type=="quantitative")e.y2=e.y,e.x2={datum:0};else throw new Error("A bug!");else throw new Error("Invalid x and y encodings for rule mark: "+JSON.stringify(e));return e}async initializeGraphics(){if(await super.initializeGraphics(),this.properties.strokeDash){const e=this.gl,n=ww(this.properties.strokeDash);this.dashTexture=jr(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(xw,yw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uMinLength:e.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(e.strokeCap)})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Wb({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return this.dashTexture&&n.push(()=>Ee(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Vr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e)}}function ww(t){if(t.length==0||t.length%2||t.findIndex(o=>Math.round(o)!=o||o<1||o>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(t));const e=t.reduce((o,s)=>o+s),n=new Uint8Array(e);let r=!0,i=0;for(let o of t){for(;o;)n[i++]=r&&255||0,o--;r=!r}return n}const vw=`uniform float uSagittaScaleFactor;uniform float uMinSagittaLength;in vec2 strip;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 a=vec2(getScaled_x(),getScaled_y())*uViewportSize;vec2 b=vec2(getScaled_x2(),getScaled_y2())*uViewportSize;vec2 chordVector=b-a;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float sagitta=max(length(chordVector)/2.0*uSagittaScaleFactor,uMinSagittaLength);bool compress=false;if(compress){float maxSagittaLen=length(chordNormal*uViewportSize);float maxChordLen=length(unitChordVector*uViewportSize);float threshold=maxSagittaLen*0.5;if(sagitta>threshold){float m=(maxSagittaLen-threshold)/(maxChordLen-threshold);sagitta=(sagitta-threshold)*m+threshold;}}vec2 controlOffset=chordNormal*sagitta/0.75;vec2 p1=a;vec2 p2=a+controlOffset;vec2 p3=b+controlOffset;vec2 p4=b;float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);
99
+ `+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():pw}handle(e){this._propagate(e)}complete(){this.completed=!0;for(const e of this.children)e.complete()}beginBatch(e){for(const n of this.children)n.beginBatch(e)}_propagate(e){}}function _0(t){return t.type=="file"}function gw(t){return t.type=="facet"}class $0 extends q{constructor(e){super(),this.k=e.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(e){this.reservoir.push(e),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(e){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=e,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(e){this.ingester(e)}complete(){for(const e of this.reservoir)this._propagate(e);super.complete()}}function mw(t,e,n){const r=new $0({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const Aw={};class xw extends Wr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,color:"#4c78a8",filled:!0,opacity:1,size:100,semanticScore:0,shape:"circle",strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02}))}getAttributes(){return["inwardStroke","uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","gradientStrength","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"size","semanticScore","shape","strokeWidth","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getDefaultEncoding(){return{...super.getDefaultEncoding(),...Aw}}fixEncoding(e){return q0(e,this.properties.filled),J0(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){super.initializeData();const e=this.unitView.getAccessor("semanticScore");e&&(this.sampledSemanticScores=Float32Array.from(mw(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(hw,dw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Zb({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}_getGeometricScaleFactor(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)}_getMaxPointSize(){const e=this.encoders.size;return e.constant?e(null):e.scale.range().reduce((n,r)=>Math.max(n,r))}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-this.properties.semanticZoomFraction*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const n=this.sampledSemanticScores;return Pu(n,e)}}else return-1}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Ee(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>Pn(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&jr(n,this.vertexArrayInfo,n.POINTS,i,r)},e)}}const yw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;uniform float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}",bw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;uniform float uDashTextureSize;uniform float uStrokeDashOffset;uniform lowp int uStrokeCap;in vec4 vColor;in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class ww extends Wr{constructor(e){super(e),this.dashTextureSize=0,Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,size:1,color:"black",opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:"butt"}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){if(!(e.x&&e.y&&e.x2&&e.y2))if(e.x&&e.x2&&!e.y)e.y={value:.5},e.y2=e.y;else if(e.y&&e.y2&&!e.x)e.x={value:.5},e.x2=e.x;else if(e.x&&!e.y)e.y={value:0},e.y2={value:1},e.x2=e.x;else if(e.y&&!e.x)e.x={value:0},e.x2={value:1},e.y2=e.y;else if(e.x&&e.y&&e.y2)e.x2=e.x;else if(e.y&&e.x&&e.x2)e.y2=e.y;else if(e.y&&e.x)if(!e.x2&&Pe(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Pe(e.x)&&e.x.type=="quantitative")e.y2=e.y,e.x2={datum:0};else throw new Error("A bug!");else throw new Error("Invalid x and y encodings for rule mark: "+JSON.stringify(e));return e}async initializeGraphics(){if(await super.initializeGraphics(),this.properties.strokeDash){const e=this.gl,n=vw(this.properties.strokeDash);this.dashTexture=Qr(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(yw,bw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uMinLength:e.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(e.strokeCap)})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Xb({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return this.dashTexture&&n.push(()=>Ee(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>Pn(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>jr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e)}}function vw(t){if(t.length==0||t.length%2||t.findIndex(o=>Math.round(o)!=o||o<1||o>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(t));const e=t.reduce((o,s)=>o+s),n=new Uint8Array(e);let r=!0,i=0;for(let o of t){for(;o;)n[i++]=r&&255||0,o--;r=!r}return n}const Cw=`uniform float uSagittaScaleFactor;uniform float uMinSagittaLength;in vec2 strip;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 a=vec2(getScaled_x(),getScaled_y())*uViewportSize;vec2 b=vec2(getScaled_x2(),getScaled_y2())*uViewportSize;vec2 chordVector=b-a;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float sagitta=max(length(chordVector)/2.0*uSagittaScaleFactor,uMinSagittaLength);bool compress=false;if(compress){float maxSagittaLen=length(chordNormal*uViewportSize);float maxChordLen=length(unitChordVector*uViewportSize);float threshold=maxSagittaLen*0.5;if(sagitta>threshold){float m=(maxSagittaLen-threshold)/(maxChordLen-threshold);sagitta=(sagitta-threshold)*m+threshold;}}vec2 controlOffset=chordNormal*sagitta/0.75;vec2 p1=a;vec2 p2=a+controlOffset;vec2 p3=b+controlOffset;vec2 p4=b;float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);
100
100
  #ifdef size2_DEFINED
101
101
  float mixedSize=mix(getScaled_size(),getScaled_size2(),t);
102
102
  #else
@@ -108,7 +108,7 @@ vec3 color=mix(getScaled_color(),getScaled_color2(),t);
108
108
  #else
109
109
  vec3 color=getScaled_color();
110
110
  #endif
111
- vColor=vec4(color*opacity,opacity);vSize=paddedSize;setupPicking();}`,Cw="in lowp vec4 vColor;in float vSize;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distance=abs(vNormalLengthInPixels);float opacity=clamp(((vSize/2.0-distance)*dpr),0.0,1.0);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class Ew extends Xr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:0,x2:void 0,y:0,y2:void 0,size:1,color:"black",opacity:1,segments:101,sagittaScaleFactor:1,minSagittaLength:1.5}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","height","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){return e.x||(e.x2=e.x),e.y2||(e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(vw,Cw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Zb({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:Sw(this.properties.segments),numComponents:2},this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,s])=>[o,{...s,data:void 0}])),this.updateBufferInfo(i)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{this.gl.bindVertexArray(this.vertexArrayInfo.vertexArrayObject);for(const o of Object.entries(this.bufferInfo.attribs)){const[s,a]=o;a.buffer&&a.numComponents&&a.divisor&&(a.offset=r*this.arrays[s].numComponents*4)}Ln(n,this.programInfo,this.bufferInfo),Vr(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e)}}function Sw(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}const Dw=`uniform float uSdfNumerator;uniform vec2 uD;in mediump vec2 vertexCoord;in lowp vec2 textureCoord;uniform vec4 uViewportEdgeFadeWidth;uniform vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;in float width;uniform ivec2 uAlign;
111
+ vColor=vec4(color*opacity,opacity);vSize=paddedSize;setupPicking();}`,Ew="in lowp vec4 vColor;in float vSize;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distance=abs(vNormalLengthInPixels);float opacity=clamp(((vSize/2.0-distance)*dpr),0.0,1.0);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class Sw extends Wr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:0,x2:void 0,y:0,y2:void 0,size:1,color:"black",opacity:1,segments:101,sagittaScaleFactor:1,minSagittaLength:1.5}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","height","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){return e.x||(e.x2=e.x),e.y2||(e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(Cw,Ew)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Kb({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:Dw(this.properties.segments),numComponents:2},this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,s])=>[o,{...s,data:void 0}])),this.updateBufferInfo(i)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{this.gl.bindVertexArray(this.vertexArrayInfo.vertexArrayObject);for(const o of Object.entries(this.bufferInfo.attribs)){const[s,a]=o;a.buffer&&a.numComponents&&a.divisor&&(a.offset=r*this.arrays[s].numComponents*4)}Pn(n,this.programInfo,this.bufferInfo),jr(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e)}}function Dw(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}const Bw=`uniform float uSdfNumerator;uniform vec2 uD;in mediump vec2 vertexCoord;in lowp vec2 textureCoord;uniform vec4 uViewportEdgeFadeWidth;uniform vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;in float width;uniform ivec2 uAlign;
112
112
  #ifdef x2_DEFINED
113
113
  uniform float uPaddingX;uniform bool uFlushX;
114
114
  #endif
@@ -128,7 +128,7 @@ vec2 pos=applySampleFacet(vec2(x,y));
128
128
  #ifdef y2_DEFINED
129
129
  float y2=getScaled_y2();vec2 pos2=applySampleFacet(vec2(x,y2));if(uLogoLetter){size.y=(pos2.y-pos.y)*uViewportSize.y;pos.y+=(pos2.y-pos.y)/2.0;}else{RangeResult result=positionInsideRange(min(pos.y,pos2.y),max(pos.y,pos2.y),size.y*scale*flushSize.y/uViewportSize.y,uPaddingY/uViewportSize.y,align.y,uFlushY);pos.y=result.pos;scale*=result.scale;}
130
130
  #endif
131
- if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator);vColor=vec4(getScaled_color()*opacity,opacity);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,Bw="uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;in vec4 vColor;in float vSlope;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}void main(){vec3 c=texture(uTexture,vTexCoord).rgb;float sigDist=1.0-median(c.r,c.g,c.b);float opa=clamp((sigDist-0.5)*vSlope+0.5,0.0,1.0);opa*=pow(clamp(vEdgeFadeOpacity,0.0,1.0),2.2);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}",Fw={left:-1,center:0,right:1},Mw={top:-1,middle:0,bottom:1,alphabetic:1};class Iw extends Xr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,x2:void 0,y2:void 0,text:"",size:11,color:"black",opacity:1,font:void 0,fontStyle:void 0,fontWeight:void 0,align:"center",baseline:"middle",dx:0,dy:0,angle:0,fitToBand:!1,squeeze:!0,paddingX:0,paddingY:0,flushX:!0,flushY:!0,logoLetters:!1,viewportEdgeFadeWidthTop:0,viewportEdgeFadeWidthRight:0,viewportEdgeFadeWidthBottom:0,viewportEdgeFadeWidthLeft:0,viewportEdgeFadeDistanceTop:-1/0,viewportEdgeFadeDistanceRight:-1/0,viewportEdgeFadeDistanceBottom:-1/0,viewportEdgeFadeDistanceLeft:-1/0})),this.font=this.properties.font?e.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):e.context.fontManager.getDefaultFont()}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","color","size","opacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","text","angle"]}fixEncoding(e){for(const n of kr)this.properties.fitToBand&&Ya(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(Dw,Bw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[Fw[e.align],Mw[e.baseline]],uD:[e.dx,-e.dy],uLogoLetter:!!e.logoLetters,uSqueeze:!!e.squeeze,uViewportEdgeFadeWidth:[e.viewportEdgeFadeWidthTop,e.viewportEdgeFadeWidthRight,e.viewportEdgeFadeWidthBottom,e.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[e.viewportEdgeFadeDistanceTop,e.viewportEdgeFadeDistanceRight,e.viewportEdgeFadeDistanceBottom,e.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getData(),r=this.encoding,i=this.encoders.text.accessor||this.encoders.text;let o=0;const s=r.text.format?se(r.text.format):c=>c;for(const c of n){const f=s(i(c)),l=Z(f)?f:f===null?"":""+f;o+=l&&l.length||0}const a=new Kb({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0)});a.addBatches(e.facetBatches);const u=a.toArrays();this.rangeMap.migrateEntries(u.rangeMap),this.updateBufferInfo(u)}prepareRender(e){const n=super.prepareRender(e);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>Ee(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Vr(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function eh(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let s=0,a=0;for(const d of t)s+=Eo(d.px)+(Wa(d)?0:n),a+=Eo(d.grow);s-=n;const u=Math.max(0,e-s),c=r!==void 0?d=>Math.round(d*r)/r:d=>d,f=[],l=[],h=d=>{const g=f.length;if(!g)return;const A=(d?n:0)*(o?-1:1);p-=A;for(let m=0;m<g;m++)l.push({location:p+(m+1)/(g+1)*A,size:0});p+=A,f.length=0};let p=o?Math.max(e,s):0+i;if(t.length==1&&Wa(t[0]))return[{location:p,size:0}];for(let d=0;d<t.length;d++){const g=t[d];if(Wa(g))f.push(g);else{h(l.length>0);const A=Eo(g.px)+(a?Eo(g.grow)/a*u:0);o&&(p-=A),l.push({location:c(p),size:c(A)}),o?p-=n:p+=A+n}}return p+=o?n:-n,h(!1),l}function Tw(t){var r,i;let e=0,n=0;for(const o of t)e=Math.max(e,(r=o.px)!=null?r:0),n=Math.max(n,(i=o.grow)!=null?i:0);return{px:e,grow:n}}const uu=class{constructor(e,n){he(this,Jr);this.width=e,this.height=n}addPadding(e){return ue(this,Jr,lu).call(this,e.width,e.height)}subtractPadding(e){return ue(this,Jr,lu).call(this,-e.width,-e.height)}};let tn=uu;Jr=new WeakSet,lu=function(e,n){var r,i;return new uu({px:((r=this.width.px)!=null?r:0)+e,grow:this.width.grow},{px:((i=this.height.px)!=null?i:0)+n,grow:this.height.grow})};const Zr=Object.freeze({px:0,grow:0}),Pw=new tn(Zr,Zr);function Wa(t){return!t.px&&!t.grow}function Eo(t){return t||0}function Lw(t){return t&&(me(t.px)||me(t.grow))}function th(t){if(oh(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(Lw(t))return t;if(me(t))return{px:t,grow:0};if(t==="container")return{px:0,grow:1};if(!t)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${t}`)}class je{constructor(e,n,r,i){this.top=e||0,this.right=n||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(e){return e<=0?this:new je(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new je(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new je(this.top-e.top,this.right-e.right,this.bottom-e.bottom,this.left-e.left)}static createFromConfig(e){return typeof e=="number"?this.createUniformPadding(e):e?this.createFromRecord(e):Xa}static createFromRecord(e){return new je(e.top,e.right,e.bottom,e.left)}static zero(){return Xa}static createUniformPadding(e){return new je(e,e,e,e)}}const Xa=je.createUniformPadding(0);Object.freeze(Xa);const Rw=/^([A-Za-z]+:)?\/\//;function kw(t,e){if(e&&Rw.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const nh="VISIT_SKIP",Kr="VISIT_STOP",rh=t=>t;class ih{constructor(e,n,r,i){this.context=n,this.parent=r,this.name=e.name||i,this.spec=e,this.resolutions={scale:{},axis:{}},this._broadcastHandlers={},this._capturingInteractionEventListeners={},this._nonCapturingInteractionEventListeners={},Y0(this),this.opacityFunction=rh,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>je.createFromConfig(this.spec.padding))}getOverhang(){return je.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):Pw)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(oh(r)){const s=r.step,a=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(a){let u=0;if(Wt(a.type))u=a.domain().length;else if(["locus","index"].includes(a.type)){const f=a.domain();u=Cn(f)-f[0]}else throw new Error(`Cannot use step-based size with "${a.type}" scale!`);const c=a;return u=Ys(u,c.paddingInner(),c.paddingOuter()),{px:u*s,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(o=r&&th(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new tn(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){var e;return(e=this.spec.visible)!=null?e:!0}getEffectiveOpacity(){var e,n;return this.opacityFunction((n=(e=this.parent)==null?void 0:e.getEffectiveOpacity())!=null?n:1)}getPathString(){return[...this.getAncestors()].map(e=>e.name).reverse().join("/")}*getAncestors(){let e=this;do yield e,e=e.parent;while(e)}handleBroadcast(e){for(const n of this._broadcastHandlers[e.type]||[])n(e)}_addBroadcastHandler(e,n){let r=this._broadcastHandlers[e];r||(r=[],this._broadcastHandlers[e]=r),r.push(n)}handleInteractionEvent(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;for(const o of i[n.type]||[])o(e,n)}addInteractionEventListener(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;let o=i[e];o||(o=[],i[e]=o),o.push(n)}visit(e){try{const n=e(this);if(e.postOrder&&e.postOrder(this),n!==Kr)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===rh)&&(this.opacityFunction=zw(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.parent&&!this.blockEncodingInheritance?this.parent.getEncoding():{},n=this.spec.encoding||{},r={...e,...n};for(const[i,o]of Object.entries(r))o===null&&delete r[i];return r}getFacetAccessor(e){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return Lr(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=En(e);let r=this;do{const i=r.resolutions[n][e];if(i)return i;r=r.parent}while(r)}getScaleResolution(e){return this._getResolution(e,"scale")}getAxisResolution(e){return this._getResolution(e,"axis")}getBaseUrl(){return kw(()=>{var e;return(e=this.parent)==null?void 0:e.getBaseUrl()},this.spec.baseUrl)}getDynamicDataSource(){throw new Error("The view does not provide dynamic data!")}isPickingSupported(){return!0}getTitleText(){const e=this.spec.title;if(e)return Z(e)?e:e.text}_cache(e,n){return kn(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":vo(this,e);break;case"ancestors":for(const r of this.getAncestors())vo(r,e);break;case"progeny":this.visit(r=>vo(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function Nw(t){return"unitsPerPixel"in t}function zw(t){const e=t.spec.opacity;if(e!==void 0){if(me(e))return n=>n*e;if(Nw(e)){const n=o=>{var a;const s=(a=t.getScaleResolution(o))==null?void 0:a.getScale();if(["linear","index","locus"].includes(s==null?void 0:s.type))return s},r=e.channel?n(e.channel):n("x")||n("y");if(!r)throw new Error("Cannot find a resolved quantitative scale for dynamic opacity!");const i=zs().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const a=ci(r.domain())/1e3;return i(a)*o}}}return n=>n}const oh=t=>!!(t!=null&&t.step);class Nn extends ih{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}*[Symbol.iterator](){}replaceChild(e,n){throw new Error("Not implemented")}visit(e){let n;try{n=e(this)}catch(r){throw r.view=this,r}if(n===Kr)return n;if(n!==nh){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Kr)return i}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(e){for(const n of this)if(n.name===e[0]){if(e.length==1)return n;if(n instanceof Nn)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return n}findDescendantByName(e){let n;return this.visit(r=>{if(r.name==e)return n=r,Kr}),n}getConfiguredResolution(e,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[e]}getDefaultResolution(e,n){return"shared"}getConfiguredOrDefaultResolution(e,n){var r,i;return(i=(r=this.getConfiguredResolution(e,n))!=null?r:this.getConfiguredResolution("default",n))!=null?i:this.getDefaultResolution(e,n)}}function So(t,e,n){if(n=n||[],t.some(s=>s===null)){if(t.every(s=>s===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(s,a)=>s===a||zn(s)&&zn(a)||zn(s)&&a===!0||s===!0&&ke(a),o=s=>{for(let a in s){const u=s[a];if(!n.includes(a)&&u!==void 0)if(r[a]!==void 0&&!i(r[a],u))console.warn(`Conflicting property ${a} of ${e}: (${JSON.stringify(r[a])} and ${JSON.stringify(s[a])}). Using ${JSON.stringify(r[a])}.`);else{const c=r[a];if(zn(c))zn(u)&&(r[a]=So([c,u],a));else if(zn(u)){if(!(c===!0||c===void 0))throw new Error("Bug in merge! Target is: "+c);r[a]=So([{},u],a)}else r[a]=u}}};for(const s of t)o(s);return r}function zn(t){return ke(t)&&!Array.isArray(t)}/*!
131
+ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator);vColor=vec4(getScaled_color()*opacity,opacity);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,Fw="uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;in vec4 vColor;in float vSlope;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}void main(){vec3 c=texture(uTexture,vTexCoord).rgb;float sigDist=1.0-median(c.r,c.g,c.b);float opa=clamp((sigDist-0.5)*vSlope+0.5,0.0,1.0);opa*=pow(clamp(vEdgeFadeOpacity,0.0,1.0),2.2);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}",Mw={left:-1,center:0,right:1},Iw={top:-1,middle:0,bottom:1,alphabetic:1};class Tw extends Wr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,x2:void 0,y2:void 0,text:"",size:11,color:"black",opacity:1,font:void 0,fontStyle:void 0,fontWeight:void 0,align:"center",baseline:"middle",dx:0,dy:0,angle:0,fitToBand:!1,squeeze:!0,paddingX:0,paddingY:0,flushX:!0,flushY:!0,logoLetters:!1,viewportEdgeFadeWidthTop:0,viewportEdgeFadeWidthRight:0,viewportEdgeFadeWidthBottom:0,viewportEdgeFadeWidthLeft:0,viewportEdgeFadeDistanceTop:-1/0,viewportEdgeFadeDistanceRight:-1/0,viewportEdgeFadeDistanceBottom:-1/0,viewportEdgeFadeDistanceLeft:-1/0})),this.font=this.properties.font?e.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):e.context.fontManager.getDefaultFont()}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","color","size","opacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","text","angle"]}fixEncoding(e){for(const n of Lr)this.properties.fitToBand&&Ya(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(Bw,Fw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[Mw[e.align],Iw[e.baseline]],uD:[e.dx,-e.dy],uLogoLetter:!!e.logoLetters,uSqueeze:!!e.squeeze,uViewportEdgeFadeWidth:[e.viewportEdgeFadeWidthTop,e.viewportEdgeFadeWidthRight,e.viewportEdgeFadeWidthBottom,e.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[e.viewportEdgeFadeDistanceTop,e.viewportEdgeFadeDistanceRight,e.viewportEdgeFadeDistanceBottom,e.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getData(),r=this.encoding,i=this.encoders.text.accessor||this.encoders.text;let o=0;const s=r.text.format?oe(r.text.format):c=>c;for(const c of n){const f=s(i(c)),l=W(f)?f:f===null?"":""+f;o+=l&&l.length||0}const a=new qb({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0)});a.addBatches(e.facetBatches);const u=a.toArrays();this.rangeMap.migrateEntries(u.rangeMap),this.updateBufferInfo(u)}prepareRender(e){const n=super.prepareRender(e);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>Ee(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Pn(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>jr(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function eh(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let s=0,a=0;for(const d of t)s+=Co(d.px)+(Wa(d)?0:n),a+=Co(d.grow);s-=n;const u=Math.max(0,e-s),c=r!==void 0?d=>Math.round(d*r)/r:d=>d,f=[],l=[],h=d=>{const g=f.length;if(!g)return;const m=(d?n:0)*(o?-1:1);p-=m;for(let A=0;A<g;A++)l.push({location:p+(A+1)/(g+1)*m,size:0});p+=m,f.length=0};let p=o?Math.max(e,s):0+i;if(t.length==1&&Wa(t[0]))return[{location:p,size:0}];for(let d=0;d<t.length;d++){const g=t[d];if(Wa(g))f.push(g);else{h(l.length>0);const m=Co(g.px)+(a?Co(g.grow)/a*u:0);o&&(p-=m),l.push({location:c(p),size:c(m)}),o?p-=n:p+=m+n}}return p+=o?n:-n,h(!1),l}function Pw(t){let e=0,n=0;for(const r of t)e=Math.max(e,r.px??0),n=Math.max(n,r.grow??0);return{px:e,grow:n}}const uu=class{constructor(e,n){he(this,qr);this.width=e,this.height=n}addPadding(e){return ue(this,qr,lu).call(this,e.width,e.height)}subtractPadding(e){return ue(this,qr,lu).call(this,-e.width,-e.height)}};let en=uu;qr=new WeakSet,lu=function(e,n){return new uu({px:(this.width.px??0)+e,grow:this.width.grow},{px:(this.height.px??0)+n,grow:this.height.grow})};const Xr=Object.freeze({px:0,grow:0}),Rw=new en(Xr,Xr);function Wa(t){return!t.px&&!t.grow}function Co(t){return t||0}function Lw(t){return t&&(me(t.px)||me(t.grow))}function th(t){if(oh(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(Lw(t))return t;if(me(t))return{px:t,grow:0};if(t==="container")return{px:0,grow:1};if(!t)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${t}`)}class Qe{constructor(e,n,r,i){this.top=e||0,this.right=n||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(e){return e<=0?this:new Qe(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new Qe(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new Qe(this.top-e.top,this.right-e.right,this.bottom-e.bottom,this.left-e.left)}static createFromConfig(e){return typeof e=="number"?this.createUniformPadding(e):e?this.createFromRecord(e):Xa}static createFromRecord(e){return new Qe(e.top,e.right,e.bottom,e.left)}static zero(){return Xa}static createUniformPadding(e){return new Qe(e,e,e,e)}}const Xa=Qe.createUniformPadding(0);Object.freeze(Xa);const kw=/^([A-Za-z]+:)?\/\//;function Nw(t,e){if(e&&kw.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n??e}const nh="VISIT_SKIP",Zr="VISIT_STOP",rh=t=>t;class ih{constructor(e,n,r,i){this.context=n,this.parent=r,this.name=e.name||i,this.spec=e,this.resolutions={scale:{},axis:{}},this._broadcastHandlers={},this._capturingInteractionEventListeners={},this._nonCapturingInteractionEventListeners={},Y0(this),this.opacityFunction=rh,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>Qe.createFromConfig(this.spec.padding))}getOverhang(){return Qe.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):Rw)}getSizeFromSpec(){const e=n=>{var i;let r=this.spec[n];if(oh(r)){const o=r.step,s=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(s){let a=0;if(Yt(s.type))a=s.domain().length;else if(["locus","index"].includes(s.type)){const c=s.domain();a=vn(c)-c[0]}else throw new Error(`Cannot use step-based size with "${s.type}" scale!`);const u=s;return a=Ys(a,u.paddingInner(),u.paddingOuter()),{px:a*o,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(r&&th(r))??{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new en(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}getEffectiveOpacity(){var e;return this.opacityFunction(((e=this.parent)==null?void 0:e.getEffectiveOpacity())??1)}getPathString(){return[...this.getAncestors()].map(e=>e.name).reverse().join("/")}*getAncestors(){let e=this;do yield e,e=e.parent;while(e)}handleBroadcast(e){for(const n of this._broadcastHandlers[e.type]||[])n(e)}_addBroadcastHandler(e,n){let r=this._broadcastHandlers[e];r||(r=[],this._broadcastHandlers[e]=r),r.push(n)}handleInteractionEvent(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;for(const o of i[n.type]||[])o(e,n)}addInteractionEventListener(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;let o=i[e];o||(o=[],i[e]=o),o.push(n)}visit(e){try{const n=e(this);if(e.postOrder&&e.postOrder(this),n!==Zr)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===rh)&&(this.opacityFunction=Ow(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.parent&&!this.blockEncodingInheritance?this.parent.getEncoding():{},n=this.spec.encoding||{},r={...e,...n};for(const[i,o]of Object.entries(r))o===null&&delete r[i];return r}getFacetAccessor(e){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return Pr(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=Cn(e);let r=this;do{const i=r.resolutions[n][e];if(i)return i;r=r.parent}while(r)}getScaleResolution(e){return this._getResolution(e,"scale")}getAxisResolution(e){return this._getResolution(e,"axis")}getBaseUrl(){return Nw(()=>{var e;return(e=this.parent)==null?void 0:e.getBaseUrl()},this.spec.baseUrl)}getDynamicDataSource(){throw new Error("The view does not provide dynamic data!")}isPickingSupported(){return!0}getTitleText(){const e=this.spec.title;if(e)return W(e)?e:e.text}_cache(e,n){return Ln(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":wo(this,e);break;case"ancestors":for(const r of this.getAncestors())wo(r,e);break;case"progeny":this.visit(r=>wo(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function zw(t){return"unitsPerPixel"in t}function Ow(t){const e=t.spec.opacity;if(e!==void 0){if(me(e))return n=>n*e;if(zw(e)){const n=o=>{var a;const s=(a=t.getScaleResolution(o))==null?void 0:a.getScale();if(["linear","index","locus"].includes(s==null?void 0:s.type))return s},r=e.channel?n(e.channel):n("x")||n("y");if(!r)throw new Error("Cannot find a resolved quantitative scale for dynamic opacity!");const i=zs().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const a=ui(r.domain())/1e3;return i(a)*o}}}return n=>n}const oh=t=>!!(t!=null&&t.step);class kn extends ih{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}*[Symbol.iterator](){}replaceChild(e,n){throw new Error("Not implemented")}visit(e){let n;try{n=e(this)}catch(r){throw r.view=this,r}if(n===Zr)return n;if(n!==nh){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Zr)return i}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(e){for(const n of this)if(n.name===e[0]){if(e.length==1)return n;if(n instanceof kn)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return n}findDescendantByName(e){let n;return this.visit(r=>{if(r.name==e)return n=r,Zr}),n}getConfiguredResolution(e,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[e]}getDefaultResolution(e,n){return"shared"}getConfiguredOrDefaultResolution(e,n){return this.getConfiguredResolution(e,n)??this.getConfiguredResolution("default",n)??this.getDefaultResolution(e,n)}}function Eo(t,e,n){if(n=n||[],t.some(s=>s===null)){if(t.every(s=>s===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(s,a)=>s===a||Nn(s)&&Nn(a)||Nn(s)&&a===!0||s===!0&&Le(a),o=s=>{for(let a in s){const u=s[a];if(!n.includes(a)&&u!==void 0)if(r[a]!==void 0&&!i(r[a],u))console.warn(`Conflicting property ${a} of ${e}: (${JSON.stringify(r[a])} and ${JSON.stringify(s[a])}). Using ${JSON.stringify(r[a])}.`);else{const c=r[a];if(Nn(c))Nn(u)&&(r[a]=Eo([c,u],a));else if(Nn(u)){if(!(c===!0||c===void 0))throw new Error("Bug in merge! Target is: "+c);r[a]=Eo([{},u],a)}else r[a]=u}}};for(const s of t)o(s);return r}function Nn(t){return Le(t)&&!Array.isArray(t)}/*!
132
132
  * Adapted from vega-encode:
133
133
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
134
134
  *
@@ -136,7 +136,7 @@ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scal
136
136
  * All rights reserved.
137
137
  *
138
138
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
139
- */function sh(t,e,n){return me(e)&&n!=null&&(e=Math.min(e,~~(ci(t.domain())/n)||1)),ke(e)&&(e.step,e=e.interval),e}function ah(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(Ne(r));if(i>o&&(r=o,o=i,i=r),e=e.filter(function(a){return a=t(a),i<=a&&a<=o}),n>0&&e.length>1){for(var s=[e[0],Ne(e)];e.length>n&&e.length>=3;)e=e.filter(function(a,u){return!(u%2)});e.length<3&&(e=s)}return e}function Ow(t,e){return t.bins?ah(t,Gw(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function Gw(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function Uw(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?se(n):String;if(_l(t.type)){var i=Qw(n);r=t.bins?i:Hw(r,i)}return r}function Hw(t,e){return function(n){return t(n)?e(n):""}}function Qw(t){var e=ft(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return jw(se(e),se(".1f")(1)[1])}else return se(e)}function jw(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,s;if(i<0)return r;for(o=Vw(r,i),s=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function Vw(t,e){var n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}/*!
139
+ */function sh(t,e,n){return me(e)&&n!=null&&(e=Math.min(e,~~(ui(t.domain())/n)||1)),Le(e)&&(e.step,e=e.interval),e}function ah(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(ke(r));if(i>o&&(r=o,o=i,i=r),e=e.filter(function(a){return a=t(a),i<=a&&a<=o}),n>0&&e.length>1){for(var s=[e[0],ke(e)];e.length>n&&e.length>=3;)e=e.filter(function(a,u){return!(u%2)});e.length<3&&(e=s)}return e}function Gw(t,e){return t.bins?ah(t,Uw(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function Uw(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function Hw(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?oe(n):String;if(_l(t.type)){var i=jw(n);r=t.bins?i:Qw(r,i)}return r}function Qw(t,e){return function(n){return t(n)?e(n):""}}function jw(t){var e=lt(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return Vw(oe(e),oe(".1f")(1)[1])}else return oe(e)}function Vw(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,s;if(i<0)return r;for(o=Yw(r,i),s=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function Yw(t,e){var n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}/*!
140
140
  * Adapted from vega-encode:
141
141
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
142
142
  *
@@ -144,12 +144,12 @@ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scal
144
144
  * All rights reserved.
145
145
  *
146
146
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
147
- */const Yw="locus",Ww="index";var Xw=5;function Zw(t){const e=t.type;return!t.bins&&(e===bn||e===wr||e===vr)}function uh(t){return Pe(t)&&![Ze,Ww,Yw].includes(t)}function ch(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var Kw=fi(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma","zoom","fp64","name"]);function lh(t,e,n){n=ch(n);for(const r in t)if(!Kw[r]){if(r==="padding"&&uh(e.type))continue;ge(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}rv(e,t,nv(e,t,$w(e,t,n)))}function qw(t,e){const n=Jw(t),r=O(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return lh(t,i,e),i}function Jw(t){var e=t.type,n="",r;return e===Ze?Ze+"-"+bn:(_w(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?Ze+"-":r===3?wn+"-":""),(n+e||bn).toLowerCase())}function _w(t){const e=t.type;return Pe(e)&&e!==Vl&&e!==Yl&&(t.scheme||t.range&&t.range.length&&t.range.every(Z))}function $w(t,e,n){if(!t.domain)return 0;n=ch(n);var r=ev(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,s=e.zero||e.zero===void 0&&Zw(t),a,u;return i?(uh(o)&&e.padding&&i[0]!==Ne(i)&&(i=tv(o,i,e.range,e.padding,e.exponent,e.constant)),(s||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(a=(i=i.slice()).length-1||1,s&&(i[0]>0&&(i[0]=0),i[a]<0&&(i[a]=0)),e.domainMin!=null&&(i[0]=e.domainMin),e.domainMax!=null&&(i[a]=e.domainMax),e.domainMid!=null&&(u=e.domainMid,(u<i[0]||u>i[a])&&n.warn("Scale domainMid exceeds domain min or max.",u),i.splice(a,0,u))),t.domain(fh(o,i,n)),o===Xs&&t.unknown(e.domainImplicit?ps:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&sh(t,e.nice)||null),i.length):0}function ev(t,e,n){return e?(t.domain(fh(t.type,e,n)),e.length):-1}function tv(t,e,n,r,i,o){var s=Math.abs(Ne(n)-n[0]),a=s/(s-2*r),u=t===bt?xu(e,null,a):t===vr?Lo(e,null,a,.5):t===wr?Lo(e,null,a,i||1):t===Hi?hd(e,null,a,o||1):Au(e,null,a);return e=e.slice(),e[0]=u[0],e[e.length-1]=u[1],e}function fh(t,e,n){if(_l(t)){var r=Math.abs(e.reduce(function(i,o){return i+(o<0?-1:o>0?1:0)},0));r!==e.length&&n.warn("Log scale domain includes zero: "+li(e))}return e}function nv(t,e,n){let r=e.bins;if(r&&!Me(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,s=r.stop==null?Ne(i):r.stop,a=r.step;a||X("Scale bins parameter missing step property."),r=Kn(o,s+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===Ks&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function rv(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=iv(r,e,n);else if(e.scheme&&(o=ov(r,e,n),ge(o))){if(t.interpolator)return t.interpolator(o);X(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&ji(r))return t.interpolator(Vi(Za(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate($l(e.interpolate,e.interpolateGamma)):ge(t.round)?t.round(i):ge(t.rangeRound)&&t.interpolate(i?yr:xt),o&&t.range(Za(o,e.reverse))}function iv(t,e,n){t!==Zl&&t!==Zs&&X("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===Zs?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*Ys(n,i,r)]}function ov(t,e,n){var r=e.schemeExtent,i,o;return Me(e.scheme)?o=Vi(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=Js(i),o||X(`Unrecognized scheme name: ${e.scheme}`)),n=t===Xl?n+1:t===Ks?n-1:t===Ws||t===Wl?+e.schemeCount||Xw:n,ji(t)?hh(o,r,e.reverse):ge(o)?gA(hh(o,r),n):t===Xs?o:o.slice(0,n)}function hh(t,e,n){return ge(t)&&(e||n)?pA(t,Za(e||[0,1],n)):t}function Za(t,e){return e?t.slice().reverse():t}const dh=se(",d");function sv(t,e){return t.chrom+":"+dh(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+dh(Math.ceil(e.pos))}const av="https://genomespy.app/data/genomes/";class uv{constructor(e){if(this.config=e,!this.config.contigs&&typeof this.config.name!="string")throw new Error("No name has been defined for the genome assembly!");this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,this.config.contigs&&this.setChromSizes(this.config.contigs)}get name(){return this.config.name}async load(e){if(!this.config.contigs){this.config.baseUrl?this.baseUrl=/^http(s)?/.test(this.config.baseUrl)?this.config.baseUrl:e+"/"+this.config.baseUrl:this.baseUrl=av;try{this.setChromSizes(cv(await Di({baseURL:this.baseUrl}).load(`${this.config.name}/${this.name}.chrom.sizes`)))}catch(n){throw new Error(`Could not load chrom sizes: ${n.message}`)}}}setChromSizes(e){let n=0;this.startByIndex=[0];for(let r=0;r<e.length;r++){this.startByIndex.push(n);const i=e[r].size,o={...e[r],continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)};this.chromosomes.push(o);const s=o.name.replace(/^chr/i,"");for(const a of["chr"+s,"CHR"+s,"Chr"+s,o.number,""+o.number,s,o.name])this.cumulativeChromPositions.set(a,n),this.chromosomesByName.set(a,o);n+=o.size}this.totalSize=n}getExtent(){return[0,this.totalSize]}toContinuous(e,n){let r=this.cumulativeChromPositions.get(e);if(r===void 0)throw new Error("Unknown chromosome/contig: "+e);return r+ +n}toChromosome(e){if(e>=this.totalSize)return;e=Math.floor(e);const n=an(this.startByIndex,e)-1;if(n>0&&n<=this.chromosomes.length)return this.chromosomes[n-1]}toChromosomal(e){const n=this.toChromosome(e);if(!!n)return{chrom:n.name,pos:Math.floor(e)-n.continuousStart}}getChromosome(e){return this.chromosomesByName.get(e)}formatInterval(e){return sv(...this.toChromosomalInterval(e))}toChromosomalInterval(e){const n=this.toChromosomal(e[0]+.5),r=this.toChromosomal(e[1]-.5);return r.pos+=1,[n,r]}toContinuousInterval(e){var i,o,s;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,(i=n.pos)!=null?i:0),this.toContinuous(r.chrom,(s=r.pos)!=null?s:(o=this.chromosomesByName.get(r.chrom))==null?void 0:o.size)]}parseInterval(e){const n=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(n){const r=n[1];if(n.slice(2).every(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),s=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):o;return[this.toContinuous(r,o-1),this.toContinuous(i,s)]}}}function cv(t){return Td(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function ph(t){return ke(t)&&"chrom"in t}function lv(t){return t.every(ph)}class qr extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof qr&&e.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${e.type}`);for(const n of e)this.extend(n);return this}extendAllWithAccessor(e,n){for(const r of e)this.extend(n(r));return this}}class Ka extends qr{constructor(){super(),this.type="quantitative"}extend(e){return e==null||Number.isNaN(e)?this:(e=+e,this.length?e<this[0]?this[0]=e:e>this[1]&&(this[1]=e):(this.push(e),this.push(e)),this)}}class gh extends qr{constructor(){super(),this.type="ordinal",this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)?this:(this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this)}}class mh extends gh{constructor(){super(),this.type="nominal"}}class fv extends qr{constructor(e){super();let n=0;for(let r=1;r<e.length;r++)n+=Math.sign(e[r]-e[r-1]);if(Math.abs(n)!=e.length-1)throw new Error("Piecewise domain must be strictly increasing or decreasing: "+JSON.stringify(e));e.forEach(r=>this.push(r))}extend(e){if(this.includes(e))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const Ah={quantitative:Ka,index:Ka,locus:Ka,nominal:mh,ordinal:gh};function xh(t,e){if(t=="quantitative"&&hv(e)){const n=new fv(e);return n.type=t,n}else if(Ah[t]){const n=new Ah[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function hv(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function dv(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}const yh="quantitative",bh="ordinal",wh="nominal",vh="locus",pv="index";class gv{constructor(e){this.channel=e,this.members=[],this.type=null,this._zoomExtent=void 0,this._domainListeners=new Set,this.name=void 0,this._scale=void 0}addEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.add(n)}removeEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.delete(n)}_notifyDomainListeners(){for(const e of this._domainListeners.values())e({type:"domain",scaleResolution:this})}pushUnitView(e,n){var s;const r=aa(e,n),i=r.type,o=(s=r==null?void 0:r.scale)==null?void 0:s.name;if(o){if(this.name!==void 0&&o!=this.name)throw new Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!this.type)this.type=i;else if(i!==this.type&&!zr(n))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${i}. Use "resolve: independent" for channel ${this.channel}`);this.members.push({view:e,channel:n})}isExplicitDomain(){return!!this.getConfiguredDomain()}_getMergedScaleProps(){return kn(this,"mergedScaleProps",()=>{const e=this.members.map(n=>aa(n.view,n.channel).scale).filter(n=>n!==void 0);return So(e,"scale",["domain"])})}getScaleProps(){return kn(this,"scaleProps",()=>{var i,o;const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n={...this._getDefaultScaleProperties(this.type),...e};n.type||(n.type=mv(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Wt(n.type)&&(n.domain=new mh),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),this.channel=="y"&&Wt(n.type)&&n.reverse==null&&(n.reverse=!0),n.range&&n.scheme&&delete n.scheme,!("zoom"in n)&&["index","locus"].includes(n.type)&&(n.zoom=!0),Av(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==vh?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>zr(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>zr(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){V0(this,"scaleProps");const e=this.getScaleProps();lh(e,this._scale),Pe(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=qw(e);return this._scale=n,nm(n)&&n.genome(this.getGenome()),Pe(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e,n;return(n=(e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))!=null?n:this.getDomain()}isZoomed(){return this.isZoomable()&&rf(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!yf(this.channel))return!1;const e=this.getScale().type;return["linear","locus","index","log","pow","sqrt"].includes(e)?!!this.getScaleProps().zoom:!1}zoom(e,n,r){if(!this.isZoomable())return!1;const i=this.getScale(),o=i.domain();let s=[...o],a=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(a+=i.align()),i.type){case"linear":case"index":case"locus":s=cd(s,r||0),s=Au(s,a,e);break;case"log":s=ld(s,r||0),s=xu(s,a,e);break;case"pow":case"sqrt":{const u=i;s=fd(s,r||0,u.exponent()),s=Lo(s,a,e,u.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(s=dd(s,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(u=>s[u]!=o[u])?(i.domain(s),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var a;if(ui(n)&&(n=n?700:0),!this.isZoomable())throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(e),i=(a=this.members[0])==null?void 0:a.view.context.animator,o=this.getScale(),s=o.domain();if(n>0&&s.length==2){const u=s[1]-s[0],c=s[0]+u/2,f=r[1]-r[0],l=r[0]+f/2,h=yl([c,0,u],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*h.duration,easingFunction:dv,onUpdate:p=>{const[d,,g]=h(p);o.domain([d-g/2,d+g/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}resetZoom(){if(!this.isZoomable())throw new Error("Not a zoomable scale!");const e=this.getDomain(),n=this.getInitialDomain();return[0,1].some(r=>n[r]!=e[r])?(this._scale.domain(n),this._notifyDomainListeners(),!0):!1}getZoomLevel(){return this.isZoomable()?ci(this._zoomExtent)/ci(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(xv(n)&&Me(n.extent))return this.fromComplexInterval(n.extent);if(n)return e.type=="locus"?this.getGenome().getExtent():this._scale.domain()}_getDefaultScaleProperties(e){const n=this.channel,r={};return this.isExplicitDomain()&&(r.zero=!1),Nr(n)?r.nice=!this.isExplicitDomain():qt(n)?r.scheme=e==wh?"tableau10":e==bh?"blues":"viridis":Ji(n)?r.range=wf(n):n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}getGenome(){var n;if(this.type!=="locus")return;const e=(n=this.members[0].view.context.genomeStore)==null?void 0:n.getGenome();if(!e)throw new Error("No genome has been defined!");return e}invertToComplex(e){const n=this.getScale();if("invert"in n){const r=n.invert(e);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(e){const n=this.getGenome();return n?n.toChromosomal(e):e}fromComplex(e){return ph(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&lv(e)?this.getGenome().toContinuousInterval(e):e}_getViewPaths(){return this.members.map(e=>e.view.getPathString()).join(", ")}_reduceDomains(e){const n=this.members.map(e).filter(r=>!!r);if(n.length)return n.reduce((r,i)=>r.extendAll(i))}}function mv(t,e){if(e==pv||e==vh){if(yf(t))return e;throw new Error(`${t} does not support ${e} data type. Only positional channels do.`)}const n={x:["band","band","linear"],y:["band","band","linear"],size:[void 0,"point","linear"],opacity:[void 0,"point","linear"],fillOpacity:[void 0,"point","linear"],strokeOpacity:[void 0,"point","linear"],color:["ordinal","ordinal","linear"],fill:["ordinal","ordinal","linear"],stroke:["ordinal","ordinal","linear"],strokeWidth:[void 0,void 0,"linear"],shape:["ordinal","ordinal",void 0],dx:[void 0,void 0,"null"],dy:[void 0,void 0,"null"],angle:[void 0,void 0,"linear"]},i=["uniqueId","facetIndex","semanticScore","search","text","sample"].includes(t)?"null":n[t]?n[t][[wh,bh,yh].indexOf(e)]:e==yh?"linear":"ordinal";if(i===void 0)throw new Error(`Channel "${t}" is not compatible with "${e}" data type. Use of a proper scale may be needed.`);return i}function Av(t,e){Nr(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Pe(t.type)&&(t.clamp=!0)}function xv(t){return ke(t)}function qa(...t){for(const e of t)if(e!==void 0)return e}class yv{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=Cn(this.members))==null?void 0:e.view.getScaleResolution(this.channel)}pushUnitView(e,n){const r=e.getScaleResolution(this.channel);if(!r)throw new Error("Cannot find a scale resolution!");if(this.scaleResolution&&r!==this.scaleResolution)throw new Error("Shared axes must have a shared scale!");this.members.push({view:e,channel:n})}getAxisProps(){return kn(this,"axisProps",()=>{const e=this.members.map(n=>{const r=n.view.mark.encoding[n.channel];return"axis"in r&&r.axis});return e.length>0&&e.some(n=>n===null)?null:So(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var a;const s=aa(o.view,o.channel);if(!Ue(s))return{member:o,explicitTitle:qa((a=s.axis)==null?void 0:a.title,s.title),implicitTitle:qa(Lr(s)?s.field:void 0,ua(s)?s.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var s;if(zr(o.member.channel)&&!o.explicitTitle){const a=En(o.member.channel);return((s=n.find(u=>u.member.view==o.member.view&&u.member.channel==a))==null?void 0:s.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>qa(o.explicitTitle,o.implicitTitle)).filter(Z));return i.size?[...i].join(", "):null}}class Ch extends ih{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class nn extends Nn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,s)=>{if(nu(o)||tu(o))return n.createView(o,this,"layer"+s);throw new Error("LayerView accepts only unit or layer specs as children!")})}*[Symbol.iterator](){for(const e of this.children)yield e}render(e,n,r={}){if(!!this.isVisible()){e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),this.children.length&&this.children.at(-1).propagateInteractionEvent(e),!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}}class Eh{constructor(e,n){this.n=e,this.maxCols=n!=null?n:1/0}get nRows(){return this.maxCols==1/0?1:Math.ceil(this.n/this.maxCols)}get nCols(){return Math.min(this.n,this.maxCols)}get rowIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<r;i++){const o=[];e.push(o);for(let s=0;s<n;s++){const a=i*n+s;a<this.n&&o.push(a)}}return e}get colIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<n;i++){const o=[];e.push(o);for(let s=0;s<r;s++){const a=s*n+i;a<this.n&&o.push(a)}}return e}getCellIndex(e,n){let r=0;if(this.maxCols==1/0)r=n==0?e:void 0;else{if(e>=this.maxCols)return;r=n*this.nCols+e}return r<this.n?r:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}}function ct(t){return()=>t}const lt=class{static create(e,n,r,i){return new lt(ct(e),ct(n),ct(r),ct(i))}_offset(e,n){const r=this["_"+e];if(n===0)return r;switch(typeof n){case"number":return()=>r()+n;case"function":return()=>r()+n();default:throw new Error("Not a number of function")}}_passThrough(e){return this._offset(e,0)}constructor(e,n,r,i){this._x=e,this._y=n,this._width=r,this._height=i}get x(){return this._x()}get y(){return this._y()}get width(){return this._width()}get height(){return this._height()}get x2(){return this._x()+this._width()}get y2(){return this._y()+this._height()}equals(e){return e?this===e||this.x===e.x&&this.y===e.y&&this.width===e.width&&this.height===e.height:!1}modify(e){if(!Object.keys(e).length)return this;const n=r=>{const i=e[r];return typeof i=="number"?ct(i):typeof i=="function"?i:this._passThrough(r)};return new lt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new lt(this._offset("x",e),this._offset("y",n),this._passThrough("width"),this._passThrough("height"))}translateBy(e){return this.translate(e.x,e.y)}expand(e,n=1){return e.left==0&&e.top==0&&e.right==0&&e.bottom==0?this:new lt(e.left?this._offset("x",-e.left*n):this._passThrough("x"),e.top?this._offset("y",-e.top*n):this._passThrough("y"),e.width?this._offset("width",e.width*n):this._passThrough("width"),e.height?this._offset("height",e.height*n):this._passThrough("height"))}shrink(e){return this.expand(e,-1)}intersect(e){return this===e?this:new lt(()=>Math.max(this.x,e.x),()=>Math.max(this.y,e.y),()=>Math.min(this.x2,e.x2)-Math.max(this.x,e.x),()=>Math.min(this.y2,e.y2)-Math.max(this.y,e.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new lt(ct(this.x),ct(this.y),ct(this.width),ct(this.height))}containsPoint(e,n){return e>=this.x&&e<this.x2&&n>=this.y&&n<this.y2}normalizePoint(e,n){return{x:(e-this.x)/this.width,y:(n-this.y)/this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}};let On=lt;$h(On,"ZERO",lt.create(0,0,0,0));function bv(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class Gn extends J{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function Sh(t){var n,r;const e={...t.format};if((n=e.type)!=null||(e.type=Ev(t)&&wv(t.url)),(r=e.parse)!=null||(e.parse="auto"),!e.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(t));return e}function wv(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const Do=t=>typeof t!="object"?vv:Cv,vv=t=>({data:t}),Cv=t=>t;function Ev(t){return"url"in t}function Sv(t){return"dynamicCallbackSource"in t}class Dh extends Gn{constructor(e){super(),this.callback=e}loadSynchronously(){if(!this.callback)return;const e=this.callback();if(!e||typeof e[Symbol.iterator]!="function")throw new Error("Dynamic data callback didn't return iterable data!");this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=Do(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const Bh="chromosome_ticks_and_labels",Fh={x:"width",y:"height"};function Ja(t){return t=="x"?"y":"x"}const _a={x:["bottom","top"],y:["left","right"]},Mh=Object.fromEntries(Object.entries(_a).map(([t,e])=>e.map(n=>[n,t])).flat(1));function rn(t){return Mh[t]}class Dv extends nn{constructor(e,n,r,i){const o=n=="locus",s={...o?Mv:Ih,...Fv(n,e),...e};if(super(o?Iv(s):Th(s),r,i,`axis_${e.orient}`),this.axisProps=s,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new Dh(()=>this.ticks),o){const a=rn(this.axisProps.orient),u=this.getScaleResolution(a).getGenome();this.findChildByName(Bh).getDynamicDataSource=()=>new Dh(()=>u.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return Mh[this.axisProps.orient]=="x"?new tn(n,e):new tn(e,n)}getPerpendicularSize(){return $a(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=rn(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(rf(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=Bv(this.axisProps,n,this.axisLength,i);o!==i&&(this.ticks=o,this.tickSource.loadSynchronously()),this.axisUpdateRequested=!1}onBeforeRender(){super.onBeforeRender(),this._updateAxisData()}render(e,n,r={}){!this.isVisible()||(this.axisLength=n[Fh[rn(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function $a(t){const e=rn(t.orient);let n=t.ticks&&t.tickSize||0;return t.labels&&(n+=t.labelPadding,e=="x"?n+=t.labelFontSize:n+=30),t.title&&(n+=t.titlePadding+t.titleFontSize),n=Math.min(t.maxExtent||1/0,Math.max(t.minExtent||0,n)),n}function Bv(t,e,n,r=[]){const i=a=>25+60*bv(100,700,a);let o=me(t.tickCount)?t.tickCount:Math.round(n/i(n));o=sh(e,o,t.tickMinStep);const s=t.values?ah(e,t.values,o):Ow(e,o);if(bA(s,r,a=>a,a=>a.value))return r;{const a=Uw(e,o,t.format);return s.map(u=>({value:u,label:a(u)}))}}const Ih={values:null,minExtent:20,maxExtent:1/0,offset:0,domain:!0,domainWidth:1,domainColor:"gray",domainDash:null,domainDashOffset:0,domainCap:"square",ticks:!0,tickSize:5,tickWidth:1,tickColor:"gray",tickDash:null,tickDashOffset:0,tickCap:"square",tickCount:null,tickMinStep:null,labels:!0,labelAlign:"center",labelBaseline:"middle",labelPadding:4,labelFontSize:10,labelLimit:180,labelColor:"black",format:null,titleColor:"black",titleFont:"sans-serif",titleFontSize:10,titlePadding:3};function Fv(t,e){var a;const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",s=(a=e.labelAngle)!=null?a:(n=="top"||n=="bottom")&&r?-90:0;switch(n){case"left":i="right";break;case"right":i="left";break;case"top":case"bottom":Math.abs(s)>30?(i=s>0==(n=="bottom")?"left":"right",o="middle"):o=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:s,labelBaseline:o}}function Th(t){const e={...t,extent:$a(t)},n=rn(e.orient),r=Ja(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,s=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:o,size:e.domainWidth}}),a=()=>({name:"labels",mark:{type:"text",clip:!1,align:e.labelAlign,angle:e.labelAngle,baseline:e.labelBaseline,[r+"Offset"]:(e.tickSize+e.labelPadding)*i,[r]:o,size:e.labelFontSize,color:e.labelColor,minBufferSize:1500},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label"}}}),u=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300},encoding:{[r]:{value:o},[r+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),c=()=>({name:"title",data:{values:[0]},mark:{type:"text",clip:!1,align:"center",baseline:e.orient=="bottom"?"bottom":"top",angle:[0,90,0,-90][["top","right","bottom","left"].indexOf(e.orient)],text:e.title,color:e.titleColor,[n]:.5,[r]:1-o}}),f=()=>{const h={name:"ticks_and_labels",encoding:{[n]:{field:"value",type:"quantitative"}},layer:[]};return e.ticks&&h.layer.push(u()),e.labels&&h.layer.push(a()),h},l={[Fh[Ja(rn(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(s()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(c()),l}const Mv={...Ih,chromTicks:!0,chromTickSize:18,chromTickWidth:1,chromTickColor:"#989898",chromTickDash:[4,2],chromTickDashOffset:1,chromLabels:!0,chromLabelFontSize:13,chromLabelFontWeight:"normal",chromLabelFontStyle:"normal",chromLabelColor:"black",chromLabelAlign:"left",chromLabelPadding:7};function Iv(t){const e={...t,extent:$a(t)},n=rn(e.orient),r=Ja(n),i=e.orient=="bottom"||e.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:t.chromTickDash,strokeDashOffset:t.chromTickDashOffset,[r]:i,[r+"2"]:i-e.chromTickSize/e.extent*(i?1:-1),color:t.chromTickColor,size:e.chromTickWidth}}),s=()=>{let c;switch(e.orient){case"top":c={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":c={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":c={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":c={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:c={}}return{name:"chromosome_labels",mark:{type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,...c},encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name"}}}};let a;switch(e.orient){case"bottom":case"top":a={};break;case"left":a={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":a={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:a={}}const u=Th({...t,...a});if(t.chromTicks||t.chromLabels){const c={name:Bh,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&c.layer.push(o()),t.chromLabels){c.layer.push(s());let f;u.layer.filter(l=>l.name=="ticks_and_labels").forEach(l=>l.layer.filter(h=>h.name=="labels").forEach(h=>{f=h.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}u.layer.push(c)}return u}const Ph={anchor:"middle",frame:"group",offset:10,orient:"top",align:void 0,angle:0,baseline:"alphabetic",dx:0,dy:0,color:void 0,font:void 0,fontSize:12,fontStyle:"normal",fontWeight:"normal"},Tv={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},Pv={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},Lv={start:0,middle:.5,end:1},Rv={start:"left",middle:"center",end:"right"};function kv(t){var c,f,l;if(!t)return;const e=Z(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n=(c={"track-title":Tv,overlay:Pv}[e.style])!=null?c:{},r={...Ph,...n,...e};let i={},o={x:0,y:0};const s=Lv[(f=r.anchor)!=null?f:"middle"];switch(r.orient){case"top":o={x:s,y:1},i={baseline:"alphabetic",angle:0};break;case"right":o={x:1,y:1-s},i={baseline:"alphabetic",angle:90};break;case"bottom":o={x:s,y:0},i={baseline:"top",angle:0};break;case"left":o={x:0,y:s},i={baseline:"alphabetic",angle:-90};break}const a={...Ph,...i,...n,...e},u={xOffset:0,yOffset:0};switch(r.orient){case"top":u.yOffset=-a.offset;break;case"right":u.xOffset=a.offset;break;case"bottom":u.yOffset=a.offset;break;case"left":u.xOffset=-a.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...o,...u,text:a.text,align:(l=a.align)!=null?l:Rv[a.anchor],angle:a.angle,baseline:a.baseline,dx:a.dx,dy:a.dy,color:a.color,font:a.font,size:a.fontSize,fontStyle:a.fontStyle,fontWeight:a.fontWeight}}}function Nv(t,e,n,r){if(t.type=="wheel"){t.uiEvent.preventDefault();const i=t.uiEvent,o=i.deltaMode?120:1;let{x:s,y:a}=t.point;if(r){const u=r.mark.encoders;u.x&&!u.x2&&(s=+u.x(r.datum)*e.width+e.x),u.y&&!u.y2&&(a=(1-+u.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:s,y:a,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300}):n({x:s,y:a,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})}else if(t.type=="mousedown"&&t.uiEvent.button===0){const i=t.uiEvent;i.preventDefault();let o=i;const s=u=>{n({x:o.clientX,y:o.clientY,xDelta:u.clientX-o.clientX,yDelta:u.clientY-o.clientY,zDelta:0}),o=u},a=u=>{document.removeEventListener("mousemove",s),document.removeEventListener("mouseup",a)};document.addEventListener("mouseup",a,!1),document.addEventListener("mousemove",s,!1)}}class Lh extends Nn{constructor(n,r,i,o,s){var a;super(n,r,i,o);he(this,_r);he(this,$e);he(this,Fo);he(this,Mo);he(this,on);he(this,$r);he(this,ei);he(this,ti);he(this,Io);he(this,Un,1/0);he(this,Hn,10);he(this,Re,[]);he(this,Qn,0);this.spec=n,Yn(this,Hn,(a=n.spacing)!=null?a:10),Yn(this,Un,s),Yn(this,Re,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){var r;(r=n.parent)!=null||(n.parent=this),V(this,Re).push(ue(this,_r,fu).call(this,n)),ed(this,Qn)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=V(this,Re).findIndex(o=>o.view==n);if(i>=0)V(this,Re)[i]=ue(this,_r,fu).call(this,r);else throw new Error("Not my child view!")}get children(){return V(this,Re).map(n=>n.view)}get childCount(){return V(this,Re).length}onScalesResolved(){super.onScalesResolved(),ue(this,Mo,nd).call(this)}*[Symbol.iterator](){for(const n of V(this,Re)){n.background&&(yield n.background);for(const r of Object.values(n.axes))r&&(yield r);yield n.view,n.title&&(yield n.title)}}getOverhang(){const n=ue(this,on,ri).call(this,"column"),r=ue(this,on,ri).call(this,"row");return!n.length||!r.length?je.zero():new je(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return new tn(ue(this,ei,du).call(this,"column"),ue(this,ei,du).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding())}render(n,r,i={}){var c;if(!this.isVisible())return;r=r.shrink(this.getPadding()),n.pushView(this,r);const o={devicePixelRatio:this.context.glHelper.dpr},s=eh(ue(this,$r,hu).call(this,"column"),r.width,o),a=eh(ue(this,$r,hu).call(this,"row"),r.height,o),u=new Eh(V(this,$e,Mt).length,(c=V(this,Un))!=null?c:1/0);for(const[f,l]of V(this,$e,Mt).entries()){const{view:h,axes:p,background:d,title:g}=l,[A,m]=u.getCellCoords(f),b=s[ue(this,ti,pu).call(this,"column",A)],y=a[ue(this,ti,pu).call(this,"row",m)],w=h.getSize(),E=h.getPadding().subtract(h.getOverhang()),C=b.location+E.left,B=y.location+E.top,I=(w.width.grow?b.size:w.width.px)-E.width,P=(w.height.grow?y.size:w.height.px)-E.height,U=new On(()=>r.x+C,()=>r.y+B,()=>I,()=>P);l.coords=U,d==null||d.render(n,U,i);const M=Gv(h);M&&h.render(n,U,i);for(const[ve,oe]of Object.entries(p)){const Se=oe.axisProps;let et;const De=oe.getPerpendicularSize();ve=="bottom"?et=U.translate(0,U.height+Se.offset).modify({height:De}):ve=="top"?et=U.translate(0,-De-Se.offset).modify({height:De}):ve=="left"?et=U.translate(-De-Se.offset,0).modify({width:De}):ve=="right"&&(et=U.translate(U.width+Se.offset,0).modify({width:De})),oe.render(n,et)}M||h.render(n,U,i),g==null||g.render(n,U,{...i,clipRect:void 0})}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=V(this,$e,Mt).find(o=>o.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof we||i instanceof nn)&&Nv(n,r.coords,o=>ue(this,Io,rd).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}Un=new WeakMap,Hn=new WeakMap,Re=new WeakMap,Qn=new WeakMap,_r=new WeakSet,fu=function(n){var i;const r={view:n,background:void 0,axes:{},coords:On.ZERO};if(n instanceof we||n instanceof nn){const o=(i=n.spec)==null?void 0:i.view;if((o==null?void 0:o.fill)||(o==null?void 0:o.stroke)){const a=new we(zv(o),this.context,n,"background"+V(this,Qn));a.blockEncodingInheritance=!0,r.background=a}const s=kv(n.spec.title);if(s){const a=new we(s,this.context,n,"title"+V(this,Qn));a.blockEncodingInheritance=!0,r.title=a}}return r},$e=new WeakSet,Mt=function(){return V(this,Re).filter(n=>n.view.isVisible())},Fo=new WeakSet,td=function(){var n;return new Eh(V(this,$e,Mt).length,(n=V(this,Un))!=null?n:1/0)},Mo=new WeakSet,nd=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of V(this,Re)){const{view:r,axes:i}=n,o=(s,a,u)=>{var f;const c=s.getAxisProps();if(c!==null){if(!c.orient){for(const l of _a[a])if(!i[l]){c.orient=l;break}if(!c.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if((f=c.title)!=null||(c.title=s.getTitle()),!_a[a].includes(c.orient))throw new Error(`Invalid axis orientation "${c.orient}" on channel "${a}"!`);if(i[c.orient])throw new Error(`An axis with the orient "${c.orient}" already exists!`);i[c.orient]=new Dv(c,s.scaleResolution.type,this.context,u)}};if(r instanceof we||r instanceof nn)for(const s of["x","y"]){const a=r.resolutions.axis[s];!a||o(a,s,r)}if(r instanceof nn){for(const s of r.children)for(const[a,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&c.orient&&o(u,a,s)}for(const s of r.children)for(const[a,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&!c.orient&&o(u,a,s)}}}},on=new WeakSet,ri=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",o=(s,a)=>s.map(u=>{const c=V(this,$e,Mt)[u].axes[r[a]];if(c)return Math.max(c.getPerpendicularSize()+c.axisProps.offset,0);const f=V(this,$e,Mt)[u].view.getOverhang();return n=="column"?a?f.right:f.left:a?f.bottom:f.top}).reduce((u,c)=>Math.max(u,c),0);return V(this,Fo,td)[n=="column"?"colIndices":"rowIndices"].map(s=>({axisBefore:o(s,0),axisAfter:o(s,1),view:Tw(s.map(a=>V(this,$e,Mt)[a].view.getSize()[i]))}))},$r=new WeakSet,hu=function(n){const r=ue(this,on,ri).call(this,n),i=[];i.push(Zr);for(const[o,s]of r.entries())o>0&&i.push({px:V(this,Hn),grow:0}),(o==0||this.wrappingFacet)&&i.push(Zr),i.push({px:s.axisBefore,grow:0}),i.push(s.view),i.push({px:s.axisAfter,grow:0}),(o==r.length-1||this.wrappingFacet)&&i.push(Zr);return i},ei=new WeakSet,du=function(n){var a,u,c;let r=0,i=0;const o=(a=n=="row"&&this.spec.height)!=null?a:n=="column"&&this.spec.width;if(o||o===0)return th(o);const s=ue(this,on,ri).call(this,n);for(const[f,l]of s.entries())f>0&&(i+=V(this,Hn)),(f==0||this.wrappingFacet)&&(i+=0),i+=l.axisBefore,i+=(u=l.view.px)!=null?u:0,r+=(c=l.view.grow)!=null?c:0,i+=l.axisAfter,(f==s.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},ti=new WeakSet,pu=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Io=new WeakSet,rd=function(n,r,i){for(const[o,s]of Object.entries(Ov(r))){if(s.size<=0)continue;const a=n.normalizePoint(i.x,i.y),u=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),c={x:u.x-a.x,y:u.y-a.y};for(const f of s)f.zoom(2**i.zDelta,o=="y"?1-a[o]:a[o],o=="x"?c.x:-c.y)}this.context.animator.requestRender()};function zv(t){return{configurableVisibility:!1,data:{values:[{}]},mark:{fill:null,strokeWidth:1,fillOpacity:t.fill?1:0,...t,type:"rect",clip:!1,tooltip:null}}}function Ov(t){const e={x:new Set,y:new Set};return t.visit(n=>{for(const[r,i]of Object.entries(e)){const o=n.getScaleResolution(r);o&&o.isZoomable()&&i.add(o)}}),e}function Gv(t){let e=!0;return t.visit(n=>{n instanceof we&&e&&(e=n.mark.properties.clip)}),e}class eu extends Lh{constructor(e,n,r,i){super(e,n,r,i,iu(e)?e.columns:ru(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=iu(e)?e.concat:ru(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class Uv{constructor(){this.types=[];const e=n=>(r,i,o,s)=>{var a;return new n(r,i,o,(a=r.name)!=null?a:s)};this.addViewType(Hv,e(Ch)),this.addViewType(nu,e(nn)),this.addViewType(tu,e(we)),this.addViewType(ru,e(eu)),this.addViewType(Qv,e(eu)),this.addViewType(iu,e(eu))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const o=this.types.find(s=>s.specGuard(e));if(o)return o.factory(e,n,r,i!=null?i:"unnamed");throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){const n=this.types.filter(r=>r.specGuard(e));if(n.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return n.length==1}}function tu(t){return"mark"in t&&(Z(t.mark)||ke(t.mark))}function nu(t){return"layer"in t&&ke(t.layer)}function Rh(t){return t&&(tu(t)||nu(t))&&"aggregateSamples"in t}function Hv(t){return"import"in t}function ru(t){return"vconcat"in t&&Me(t.vconcat)}function Qv(t){return"hconcat"in t&&Me(t.hconcat)}function iu(t){return"concat"in t&&Me(t.concat)}const jv={point:Aw,rect:lw,rule:bw,link:Ew,text:Iw};class we extends Nn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=jv[this.getMarkType()];if(o)this.mark=new o(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.sampleAggregateViews=[],this._initializeAggregateViews(),this.coords=void 0}*[Symbol.iterator](){for(const e of this.sampleAggregateViews)yield e}replaceChild(e,n){const r=this.sampleAggregateViews.indexOf(e);if(r>=0)this.sampleAggregateViews[r]=n;else throw new Error("Not my child view!")}render(e,n,r={}){!this.isVisible()||(this.coords=n,e.pushView(this,n),e.renderMark(this.mark,r),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}resolve(e){var r;const n=this.mark.encoding;for(const[i,o]of Object.entries(n)){if(!Le(o))continue;let s=En((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!Nr(s))continue;let a=this;for(;a.parent instanceof Nn&&["shared","excluded"].includes(a.parent.getConfiguredOrDefaultResolution(s,e))&&a.getConfiguredOrDefaultResolution(s,e)!="excluded";)a=a.parent;a.resolutions[e][s]||(a.resolutions[e][s]=e=="scale"?new gv(s):new yv(s)),Nr(i)?a.resolutions[e][s].pushUnitView(this,i):e=="scale"&&a.resolutions[e][s].pushUnitView(this,i)}}getAccessor(e){return this._cache("accessor/"+e,()=>{const n=this.mark.encoding;if(n&&n[e])return this.context.accessorFactory.createAccessor(n[e])})}getFacetAccessor(e){const n=this.getAccessor("sample");return n||super.getFacetAccessor(this)}getCollector(){return this.context.dataFlow.findCollectorByKey(this)}_validateDomainQuery(e){if(zr(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Le(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){var i,o;const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const s=this.getScaleResolution((i=n.resolutionChannel)!=null?i:e);return xh((o=n.type)!=null?o:"nominal",s.fromComplexInterval(r))}}extractDataDomain(e){var a;const r=(a=this._validateDomainQuery(e).type)!=null?a:"nominal",i=u=>{let c;const f=this.mark.encoding[u];if(f){const l=this.context.accessorFactory.createAccessor(f);if(l)if(c=xh(r),l.constant)c.extend(l({}));else{const h=this.getCollector();h!=null&&h.completed&&h.visitData(p=>c.extend(l(p)))}}return c};let o=i(e);const s=ca[e];if(s){const u=i(s);u&&o.extendAll(u)}return o}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return kr.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(Rh(this.spec))for(const r of this.spec.aggregateSamples){const i=(e=r.transform)!=null?e:[];i.length&&Cn(i).type!="collect"&&i.push({type:"collect"}),i.push({type:"mergeFacets"}),r.transform=i,r.encoding={...(n=r.encoding)!=null?n:{},sample:null};const o=this.context.createView(r,this,"summaryView");o.getFacetFields=s=>{},this.sampleAggregateViews.push(o)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*ou(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of ou(r,[...e,n]))yield i;else yield[[...e,n],r]}class su extends J{constructor(e){super(),this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new Pt([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){pw(e)&&(this._data=[],this.facetBatches.set(Ke(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?yu(e.field,e.order):void 0,r=s=>{n&&s.sort(n)};if((o=this.params.groupby)!=null&&o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const s=this.params.groupby.map(u=>H(u)),a=di(this._data,...s);this.facetBatches.clear();for(const[u,c]of ou(a))this.facetBatches.set(u,c)}for(const s of this.facetBatches.values())r(s);if(this.children.length)for(const[s,a]of this.facetBatches.entries()){if(s){const u={type:"facet",facetId:s};for(const c of this.children)c.beginBatch(u)}for(const u of a)this._propagate(u)}super.complete();for(const s of this.observers)s(this)}getData(){switch(this._checkStatus(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{const e=this.facetBatches;return{[Symbol.iterator]:function*(){for(const r of e.values())for(let i=0;i<r.length;i++)yield r[i]}}}}}visitData(e){this._checkStatus();for(const n of this.facetBatches.values())for(let r=0;r<n.length;r++)e(n[r])}getItemCount(){let e=0;for(const n of this.facetBatches.values())e+=n.length;return e}_checkStatus(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")}}class Bo{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(;r>0;){const i=r-1>>1,o=this.values[i];if(n>=o)break;this.ids[r]=this.ids[i],this.values[r]=o,r=i}this.ids[r]=e,this.values[r]=n}pop(){if(this.length===0)return;const e=this.ids[0];if(this.length--,this.length>0){const n=this.ids[0]=this.ids[this.length],r=this.values[0]=this.values[this.length],i=this.length>>1;let o=0;for(;o<i;){let s=(o<<1)+1;const a=s+1;let u=this.ids[s],c=this.values[s];const f=this.values[a];if(a<this.length&&f<c&&(s=a,u=this.ids[a],c=f),c>=r)break;this.ids[o]=u,this.values[o]=c,o=s}this.ids[o]=n,this.values[o]=r}return e}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}shrink(){this.ids.length=this.values.length=this.length}}class Vv extends J{get behavior(){return ut}constructor(e){super(),this.params=e,this.startAccessor=H(e.start),this.endAccessor=H(e.end),this.chromAccessor=e.chrom?H(e.chrom):n=>{},this.weightAccessor=e.weight?H(e.weight):n=>1,this.as={coverage:e.as||"coverage",start:e.asStart||e.start,end:e.asEnd||e.end,chrom:e.asChrom||e.chrom},this.createSegment=new Function("start","end","coverage","chrom","return {"+Object.entries(this.as).filter(([n,r])=>r).map(([n,r])=>`${JSON.stringify(r)}: ${n}`).join(", ")+"};"),this.ends=new Bo}reset(){super.reset(),this.initialize()}initialize(){const e=this.as.coverage,n=this.as.end,r=this.as.chrom,i=this.startAccessor,o=this.endAccessor,s=this.chromAccessor,a=this.weightAccessor;let u,c,f,l=0,h;const p=this.ends;p.clear();const d=(A,m,b)=>{if(A==m)return;let y=!1;u&&(u[e]===b?(u[n]=m,y=!0):u[e]!=0&&this._propagate(u)),y||(u=this.createSegment(A,m,b,f))},g=()=>{let A;for(;(A=p.peekValue())!==void 0;)d(h,A,l),h=A,l-=p.pop();h=void 0,u&&(this._propagate(u),u=void 0)};this.handle=A=>{const m=i(A);let b;for(;(b=p.peekValue())!==void 0&&b<m;)d(h,b,l),h=b,l-=p.pop();if(r){let w=s(A);w!==c&&(g(),f=w,c=f)}h!==void 0&&d(h,m,l),h=m;const y=a(A);l+=y,p.push(y,o(A))},this.complete=()=>{g(),super.complete()}}}function Yv(t,e,n=0,r=t.length){const i=new Bo,o=r-n;let s;for(s=0;s<e&&s<o;s++)i.push(s,t[n+s]);for(;s<o;s++){const c=t[n+s];c>=i.peekValue()&&(i.push(s,c),i.pop())}const a=[];let u;for(;(u=i.pop())!==void 0;)a.push(n+u);return a.reverse()}class Wv{constructor(e,n=-1/0,r=1/0){this.maxSize=e,this.lowerLimit=n,this.upperLimit=r;const i=this.maxSize*2+1;this.lowerLimits=new Float64Array(i),this.upperLimits=new Float64Array(i),this.lowerChildren=new Int32Array(i),this.upperChildren=new Int32Array(i),this.reset()}reset(){this.lowerLimits.fill(0),this.upperLimits.fill(0),this.lowerChildren.fill(0),this.upperChildren.fill(0),this.n=1,this.lowerLimits[0]=this.lowerLimit,this.upperLimits[0]=this.upperLimit}_findSlot(e,n,r=0){if(e>=this.lowerLimits[r]&&n<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const o=this._findSlot(e,n,i);return o>=0?o:this._findSlot(e,n,this.upperChildren[r])}else return r}else return-1}reserve(e,n){if(n-e<=0)throw new Error("Cannot reserve an empty or negative-size slot!");if(this.n+1>this.lowerLimits.length)return!1;const r=this._findSlot(e,n);if(r<0)return!1;const i=this.n++,o=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=e,this.lowerLimits[o]=n,this.upperLimits[o]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=o,!0}}class Xv extends J{constructor(e,n){var i,o;if(super(),this.params=e,this._data=[],this.channel=(i=e.channel)!=null?i:"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=H(this.params.pos),this.posBisector=hi(this.posAccessor),this.scoreAccessor=H(this.params.score),this.widthAccessor=H(this.params.width),this.laneAccessor=this.params.lane?H(this.params.lane):s=>0,this.padding=(o=this.params.padding)!=null?o:0,this.reservationMaps=new Map,this.resolution=n.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>n.context.animator.requestTransition(r),this.resolution.addEventListener("domain",s=>this.schedule()),n._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const e=this.posAccessor;this._data.sort((n,r)=>e(n)-e(r)),this._scores=this._data.map(this.scoreAccessor);for(const n of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(n,new Wv(200));this.schedule(),super.complete()}_filterAndPropagate(){var s;super.reset();const e=this.resolution.getScale(),n=(s=this.resolution.members[0].view.coords)==null?void 0:s[this.channel=="x"?"width":"height"];if(!n)return;for(const a of this.reservationMaps.values())a.reset();const r=e.domain(),i=70,o=Yv(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const a of o){const u=this._data[a],c=e(this.posAccessor(u))*n,f=this.widthAccessor(u)/2+this.padding;this.reservationMaps.get(this.laneAccessor(u)).reserve(c-f,c+f)&&this._propagate(u)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class Zv extends J{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=sa(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const Kv="0".charCodeAt(0);function*qv(t,e=","){const n=e.charCodeAt(0);let r=0;for(let i=0;i<t.length;i++){const o=t.charCodeAt(i);o==n?(yield r,r=0):r=r*10+o-Kv}yield r}class Jv extends J{get behavior(){return ut}constructor(e){var s,a;super();const n=H((s=e.exons)!=null?s:"exons"),r=H((a=e.start)!=null?a:"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=u=>{let c=r(u),f=c,l=!0;const h=n(u);for(const p of qv(h)){if(l)f=c+p;else{c=f+p;const d=Object.assign({},u);d[i]=f,d[o]=c,this._propagate(d)}l=!l}}}}class _v extends J{get behavior(){return ut}constructor(e){super();const n=Ke(e.field).map(o=>H(o)),r=Ke(e.separator),i=Ke(e.as||e.field);if(n.length!==r.length||n.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${n.length}), and "as" (${i.length}) do not match!`);this.handle=o=>{if(n.some(u=>!u(o)))return;const s=n.map((u,c)=>u(o).split(r[c]));$v(s,o);const a=s[0].length;for(let u=0;u<a;u++){const c=Object.assign({},o);for(let f=0;f<n.length;f++)c[i[f]]=s[f][u];this._propagate(c)}}}}function $v(t,e){const n=t.map(r=>r.length);if(!n.every(r=>r==n[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(e))}class eC extends J{get behavior(){return Ft}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=sa(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class kh extends J{get behavior(){return Ft}constructor(e,n){var d;super();const r=(d=e.channel)!=null?d:"x";if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=n.getScaleResolution(r).getGenome();if(!i)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=H(e.chrom),s=Ke(e.pos).map(g=>H(g)),a=Ke(e.as);if(s.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const u=Ke(e.offset);let c;if(u.length==0)c=new Array(s.length).fill(0);else if(u.length==1)c=new Array(s.length).fill(u[0]);else if(u.length==s.length)c=u;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",a.map((g,A)=>`datum[${JSON.stringify(g)}] = chromOffset + +posAccessors[${A}](datum) - ${c[A]};`).join(`
148
- `));let l,h=0;const p=g=>{if(g!==l){if(h=i.cumulativeChromPositions.get(g),h===void 0)throw new Error("Unknown chromosome/contig: "+g);l=g}return h};this.handle=g=>{f(g,p(o(g)),s),this._propagate(g)}}}const Nh={pages:["Lato-Regular.png"],chars:[{id:87,width:53,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:43.491,chnl:15,x:0,y:0,page:0},{id:124,width:17,height:50,xoffset:0,yoffset:-32.193000000000005,xadvance:10.521,chnl:15,x:0,y:42,page:0},{id:40,width:20,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:94,page:0},{id:41,width:19,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:145,page:0},{id:36,width:32,height:49,xoffset:0,yoffset:-34.419000000000004,xadvance:24.360000000000003,chnl:15,x:0,y:196,page:0},{id:125,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:247,page:0},{id:91,width:22,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:297,page:0},{id:93,width:19,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:347,page:0},{id:123,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:397,page:0},{id:106,width:19,height:48,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:0,y:447,page:0},{id:81,width:43,height:47,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:21,y:447,page:0},{id:77,width:45,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:38.997,chnl:15,x:66,y:447,page:0},{id:64,width:43,height:44,xoffset:0,yoffset:-28.539,xadvance:35.133,chnl:15,x:23,y:397,page:0},{id:92,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:68,y:397,page:0},{id:47,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:98,y:397,page:0},{id:109,width:42,height:32,xoffset:0,yoffset:-21.609,xadvance:34.545,chnl:15,x:113,y:447,page:0},{id:119,width:42,height:31,xoffset:0,yoffset:-21.315,xadvance:32.991,chnl:15,x:157,y:447,page:0},{id:42,width:25,height:42,xoffset:0,yoffset:-31.626,xadvance:17.85,chnl:15,x:128,y:397,page:0},{id:37,width:42,height:41,xoffset:0,yoffset:-30.387,xadvance:33.663000000000004,chnl:15,x:155,y:397,page:0},{id:79,width:42,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534000000000002,xadvance:14.721,chnl:15,x:243,y:397,page:0},{id:100,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:269,y:397,page:0},{id:98,width:32,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:302,y:397,page:0},{id:56,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:29.904000000000003,chnl:15,x:370,y:397,page:0},{id:108,width:17,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:9.912,chnl:15,x:412,y:397,page:0},{id:107,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:21.336000000000002,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:18.795,chnl:15,x:94,y:347,page:0},{id:105,width:18,height:41,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:123,y:347,page:0},{id:51,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:143,y:347,page:0},{id:104,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.436,chnl:15,x:177,y:347,page:0},{id:67,width:37,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:28.056,chnl:15,x:210,y:347,page:0},{id:88,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.258000000000003,chnl:15,x:249,y:347,page:0},{id:68,width:40,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:31.941000000000003,chnl:15,x:288,y:347,page:0},{id:70,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:23.751,chnl:15,x:330,y:347,page:0},{id:34,width:23,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:15.561000000000002,chnl:15,x:364,y:347,page:0},{id:72,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:389,y:347,page:0},{id:73,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.760000000000002,chnl:15,x:429,y:347,page:0},{id:74,width:24,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:17.745,chnl:15,x:449,y:347,page:0},{id:75,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.825000000000003,chnl:15,x:24,y:297,page:0},{id:76,width:31,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:21.567,chnl:15,x:475,y:347,page:0},{id:66,width:35,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.153000000000002,chnl:15,x:64,y:297,page:0},{id:78,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:101,y:297,page:0},{id:33,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.298,chnl:15,x:141,y:297,page:0},{id:80,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.221,chnl:15,x:161,y:297,page:0},{id:65,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:197,y:297,page:0},{id:82,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.313000000000002,chnl:15,x:237,y:297,page:0},{id:35,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:275,y:297,page:0},{id:84,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.801000000000002,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891000000000002,chnl:15,x:346,y:297,page:0},{id:86,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:385,y:297,page:0},{id:39,width:16,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:8.568000000000001,chnl:15,x:425,y:297,page:0},{id:69,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.255000000000003,chnl:15,x:443,y:297,page:0},{id:89,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.208000000000002,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284000000000002,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156000000000002,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:128,y:247,page:0},{id:94,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:162,y:247,page:0},{id:96,width:21,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:16.8,chnl:15,x:196,y:247,page:0},{id:55,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:219,y:247,page:0},{id:54,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:254,y:247,page:0},{id:53,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:289,y:247,page:0},{id:52,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:323,y:247,page:0},{id:103,width:31,height:39,xoffset:0,yoffset:-21.630000000000003,xadvance:21.84,chnl:15,x:358,y:247,page:0},{id:112,width:32,height:39,xoffset:0,yoffset:-21.651,xadvance:23.541,chnl:15,x:391,y:247,page:0},{id:113,width:31,height:39,xoffset:0,yoffset:-21.651,xadvance:23.520000000000003,chnl:15,x:425,y:247,page:0},{id:116,width:25,height:39,xoffset:0,yoffset:-28.182000000000002,xadvance:15.057,chnl:15,x:458,y:247,page:0},{id:121,width:31,height:38,xoffset:0,yoffset:-21.273,xadvance:21.651,chnl:15,x:34,y:196,page:0},{id:59,width:18,height:36,xoffset:0,yoffset:-20.706,xadvance:10.983,chnl:15,x:485,y:247,page:0},{id:43,width:32,height:34,xoffset:0,yoffset:-24.486,xadvance:24.360000000000003,chnl:15,x:67,y:196,page:0},{id:60,width:30,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:101,y:196,page:0},{id:62,width:31,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:133,y:196,page:0},{id:117,width:30,height:32,xoffset:0,yoffset:-21.273,xadvance:23.415000000000003,chnl:15,x:166,y:196,page:0},{id:99,width:29,height:32,xoffset:0,yoffset:-21.609,xadvance:20.055,chnl:15,x:198,y:196,page:0},{id:110,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:23.436,chnl:15,x:229,y:196,page:0},{id:111,width:32,height:32,xoffset:0,yoffset:-21.609,xadvance:23.814,chnl:15,x:262,y:196,page:0},{id:126,width:32,height:26,xoffset:0,yoffset:-16.128,xadvance:24.360000000000003,chnl:15,x:201,y:447,page:0},{id:101,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:22.176000000000002,chnl:15,x:296,y:196,page:0},{id:114,width:25,height:32,xoffset:0,yoffset:-21.651,xadvance:15.288,chnl:15,x:329,y:196,page:0},{id:115,width:27,height:32,xoffset:0,yoffset:-21.609,xadvance:18.186,chnl:15,x:356,y:196,page:0},{id:97,width:28,height:32,xoffset:0,yoffset:-21.651,xadvance:20.874000000000002,chnl:15,x:385,y:196,page:0},{id:118,width:31,height:31,xoffset:0,yoffset:-21.273,xadvance:21.672,chnl:15,x:415,y:196,page:0},{id:61,width:31,height:29,xoffset:0,yoffset:-19.089000000000002,xadvance:24.360000000000003,chnl:15,x:448,y:196,page:0},{id:120,width:30,height:31,xoffset:0,yoffset:-21.273,xadvance:20.916,chnl:15,x:21,y:145,page:0},{id:58,width:18,height:31,xoffset:0,yoffset:-20.706,xadvance:10.5,chnl:15,x:53,y:145,page:0},{id:122,width:28,height:31,xoffset:0,yoffset:-21.273,xadvance:18.984,chnl:15,x:73,y:145,page:0},{id:95,width:28,height:16,xoffset:0,yoffset:0,xadvance:19.278000000000002,chnl:15,x:235,y:447,page:0},{id:45,width:23,height:24,xoffset:0,yoffset:-14.175,xadvance:15.603000000000002,chnl:15,x:481,y:196,page:0},{id:44,width:17,height:21,xoffset:0,yoffset:-4.956,xadvance:9.534,chnl:15,x:103,y:145,page:0},{id:46,width:18,height:15,xoffset:0,yoffset:-4.956,xadvance:9.912,chnl:15,x:0,y:497,page:0},{id:32,width:0,height:0,xoffset:0,yoffset:0,xadvance:10.752,chnl:15,x:20,y:497,page:0}],info:{face:"Lato Regular",size:42,bold:0,italic:0,charset:[" ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"],unicode:1,stretchH:100,smooth:1,aa:1,padding:[0,0,0,0],spacing:[2,2]},common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0},kernings:[]};class tC extends J{get behavior(){return Ft}constructor(e){super();const n=Va(Nh),r=H(e.field),i=e.as,o=e.fontSize;this.handle=s=>{const a=r(s);a!==void 0?s[i]=n.measureWidth(a,o):s[i]=0,this._propagate(s)}}}const nC=65536;class rC extends J{get behavior(){return Ft}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=me(e.spacing)?e.spacing:1,i=H(e.start),o=H(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const s=new Float64Array(nC),a=H(e.preference),u=e.preferredOrder;let c=1/0;this.handle=f=>{const l=i(f);l<c&&s.fill(-1/0),c=l;const h=u.indexOf(a(f));let p=-1;if(h>=0&&s[h]<l)p=h;else{const d=i(f);for(p=0;p<s.length&&!(s[p]<d);p++);if(p>=s.length)throw new Error("Out of lanes!")}s[p]=o(f)+r,f[n]=p,this._propagate(f)}}else{const s=new Bo,a=new Bo;let u=-1/0,c=0;this.handle=f=>{const l=i(f);for(;s.length&&(s.peekValue()<=l||l<u);){const p=s.pop();a.push(p,p)}u=l;let h=a.pop();h===void 0&&(h=c++),f[n]=h,this._propagate(f),s.push(h,o(f)+r)}}}}class iC extends J{get behavior(){return ut}constructor(e){if(super(),e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>H(i)),r=e.as?e.as:n.map(K);this.handle=i=>{const o={};for(let s=0;s<n.length;s++)o[r[s]]=n[s](i);this._propagate(o)}}}class oC extends J{get behavior(){return Ft}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=H(e.field);this.handle=o=>{const s=i(o);if(Z(s)){const a=s.match(n);if(a){if(a.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let u=0;u<r.length;u++)o[r[u]]=a[u+1]}else if(e.skipInvalidInput)for(let u=0;u<r.length;u++)o[r[u]]=void 0;else throw new Error(`"${s}" does not match the given regex: ${n.toString()}`)}else if(!e.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof s}, field content: "${s}".`);this._propagate(o)}}}class sC extends J{get behavior(){return ut}constructor(e){super();const n=Ke(e.columnRegex).map(h=>new RegExp(h)),r=Ke(e.asValue);if(n.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=e.skipRegex?new RegExp(e.skipRegex):void 0,o=e.asKey||"sample";let s,a,u;const c=h=>{var A;const p=Object.keys(h),d=new Map;for(const[m,b]of n.entries())for(const y of p){const w=(A=b.exec(y))==null?void 0:A[1];if(w!==void 0){let E=d.get(w);E||(E=[],d.set(w,E)),E[m]=y}}s=[...d.entries()],a=p.filter(m=>!n.some(b=>b.test(m))&&!(i&&i.test(m)));const g=[...a.map(m=>JSON.stringify(m)+": datum["+JSON.stringify(m)+"]"),JSON.stringify(o)+": sampleId",...r.map(m=>JSON.stringify(m)+": null")];u=new Function("datum","sampleId",`return {
147
+ */const Ww="locus",Xw="index";var Zw=5;function Kw(t){const e=t.type;return!t.bins&&(e===yn||e===br||e===wr)}function uh(t){return Te(t)&&![Ze,Xw,Ww].includes(t)}function ch(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var qw=li(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma","zoom","fp64","name"]);function lh(t,e,n){n=ch(n);for(const r in t)if(!qw[r]){if(r==="padding"&&uh(e.type))continue;ge(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}iv(e,t,rv(e,t,ev(e,t,n)))}function Jw(t,e){const n=_w(t),r=N(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return lh(t,i,e),i}function _w(t){var e=t.type,n="",r;return e===Ze?Ze+"-"+yn:($w(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?Ze+"-":r===3?bn+"-":""),(n+e||yn).toLowerCase())}function $w(t){const e=t.type;return Te(e)&&e!==Vl&&e!==Yl&&(t.scheme||t.range&&t.range.length&&t.range.every(W))}function ev(t,e,n){if(!t.domain)return 0;n=ch(n);var r=tv(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,s=e.zero||e.zero===void 0&&Kw(t),a,u;return i?(uh(o)&&e.padding&&i[0]!==ke(i)&&(i=nv(o,i,e.range,e.padding,e.exponent,e.constant)),(s||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(a=(i=i.slice()).length-1||1,s&&(i[0]>0&&(i[0]=0),i[a]<0&&(i[a]=0)),e.domainMin!=null&&(i[0]=e.domainMin),e.domainMax!=null&&(i[a]=e.domainMax),e.domainMid!=null&&(u=e.domainMid,(u<i[0]||u>i[a])&&n.warn("Scale domainMid exceeds domain min or max.",u),i.splice(a,0,u))),t.domain(fh(o,i,n)),o===Xs&&t.unknown(e.domainImplicit?ps:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&sh(t,e.nice)||null),i.length):0}function tv(t,e,n){return e?(t.domain(fh(t.type,e,n)),e.length):-1}function nv(t,e,n,r,i,o){var s=Math.abs(ke(n)-n[0]),a=s/(s-2*r),u=t===yt?xu(e,null,a):t===wr?Po(e,null,a,.5):t===br?Po(e,null,a,i||1):t===Ui?dd(e,null,a,o||1):Au(e,null,a);return e=e.slice(),e[0]=u[0],e[e.length-1]=u[1],e}function fh(t,e,n){if(_l(t)){var r=Math.abs(e.reduce(function(i,o){return i+(o<0?-1:o>0?1:0)},0));r!==e.length&&n.warn("Log scale domain includes zero: "+ci(e))}return e}function rv(t,e,n){let r=e.bins;if(r&&!Fe(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,s=r.stop==null?ke(i):r.stop,a=r.step;a||Y("Scale bins parameter missing step property."),r=Kn(o,s+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===Ks&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function iv(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=ov(r,e,n);else if(e.scheme&&(o=sv(r,e,n),ge(o))){if(t.interpolator)return t.interpolator(o);Y(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&Qi(r))return t.interpolator(ji(Za(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate($l(e.interpolate,e.interpolateGamma)):ge(t.round)?t.round(i):ge(t.rangeRound)&&t.interpolate(i?xr:At),o&&t.range(Za(o,e.reverse))}function ov(t,e,n){t!==Zl&&t!==Zs&&Y("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===Zs?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*Ys(n,i,r)]}function sv(t,e,n){var r=e.schemeExtent,i,o;return Fe(e.scheme)?o=ji(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=Js(i),o||Y(`Unrecognized scheme name: ${e.scheme}`)),n=t===Xl?n+1:t===Ks?n-1:t===Ws||t===Wl?+e.schemeCount||Zw:n,Qi(t)?hh(o,r,e.reverse):ge(o)?mA(hh(o,r),n):t===Xs?o:o.slice(0,n)}function hh(t,e,n){return ge(t)&&(e||n)?gA(t,Za(e||[0,1],n)):t}function Za(t,e){return e?t.slice().reverse():t}const dh=oe(",d");function av(t,e){return t.chrom+":"+dh(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+dh(Math.ceil(e.pos))}const uv="https://genomespy.app/data/genomes/";class cv{constructor(e){if(this.config=e,!this.config.contigs&&typeof this.config.name!="string")throw new Error("No name has been defined for the genome assembly!");this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,this.config.contigs&&this.setChromSizes(this.config.contigs)}get name(){return this.config.name}async load(e){if(!this.config.contigs){this.config.baseUrl?this.baseUrl=/^http(s)?/.test(this.config.baseUrl)?this.config.baseUrl:e+"/"+this.config.baseUrl:this.baseUrl=uv;try{this.setChromSizes(lv(await Si({baseURL:this.baseUrl}).load(`${this.config.name}/${this.name}.chrom.sizes`)))}catch(n){throw new Error(`Could not load chrom sizes: ${n.message}`)}}}setChromSizes(e){let n=0;this.startByIndex=[0];for(let r=0;r<e.length;r++){this.startByIndex.push(n);const i=e[r].size,o={...e[r],continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)};this.chromosomes.push(o);const s=o.name.replace(/^chr/i,"");for(const a of["chr"+s,"CHR"+s,"Chr"+s,o.number,""+o.number,s,o.name])this.cumulativeChromPositions.set(a,n),this.chromosomesByName.set(a,o);n+=o.size}this.totalSize=n}getExtent(){return[0,this.totalSize]}toContinuous(e,n){let r=this.cumulativeChromPositions.get(e);if(r===void 0)throw new Error("Unknown chromosome/contig: "+e);return r+ +n}toChromosome(e){if(e>=this.totalSize)return;e=Math.floor(e);const n=sn(this.startByIndex,e)-1;if(n>0&&n<=this.chromosomes.length)return this.chromosomes[n-1]}toChromosomal(e){const n=this.toChromosome(e);if(n)return{chrom:n.name,pos:Math.floor(e)-n.continuousStart}}getChromosome(e){return this.chromosomesByName.get(e)}formatInterval(e){return av(...this.toChromosomalInterval(e))}toChromosomalInterval(e){const n=this.toChromosomal(e[0]+.5),r=this.toChromosomal(e[1]-.5);return r.pos+=1,[n,r]}toContinuousInterval(e){var i;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,n.pos??0),this.toContinuous(r.chrom,r.pos??((i=this.chromosomesByName.get(r.chrom))==null?void 0:i.size))]}parseInterval(e){const n=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(n){const r=n[1];if(n.slice(2).every(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),s=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):o;return[this.toContinuous(r,o-1),this.toContinuous(i,s)]}}}function lv(t){return Pd(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function ph(t){return Le(t)&&"chrom"in t}function fv(t){return t.every(ph)}class Kr extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof Kr&&e.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${e.type}`);for(const n of e)this.extend(n);return this}extendAllWithAccessor(e,n){for(const r of e)this.extend(n(r));return this}}class Ka extends Kr{constructor(){super(),this.type="quantitative"}extend(e){return e==null||Number.isNaN(e)?this:(e=+e,this.length?e<this[0]?this[0]=e:e>this[1]&&(this[1]=e):(this.push(e),this.push(e)),this)}}class gh extends Kr{constructor(){super(),this.type="ordinal",this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)?this:(this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this)}}class mh extends gh{constructor(){super(),this.type="nominal"}}class hv extends Kr{constructor(e){super();let n=0;for(let r=1;r<e.length;r++)n+=Math.sign(e[r]-e[r-1]);if(Math.abs(n)!=e.length-1)throw new Error("Piecewise domain must be strictly increasing or decreasing: "+JSON.stringify(e));e.forEach(r=>this.push(r))}extend(e){if(this.includes(e))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const Ah={quantitative:Ka,index:Ka,locus:Ka,nominal:mh,ordinal:gh};function xh(t,e){if(t=="quantitative"&&dv(e)){const n=new hv(e);return n.type=t,n}else if(Ah[t]){const n=new Ah[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function dv(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function pv(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}const yh="quantitative",bh="ordinal",wh="nominal",vh="locus",gv="index";class mv{constructor(e){this.channel=e,this.members=[],this.type=null,this._zoomExtent=void 0,this._domainListeners=new Set,this.name=void 0,this._scale=void 0}addEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.add(n)}removeEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.delete(n)}_notifyDomainListeners(){for(const e of this._domainListeners.values())e({type:"domain",scaleResolution:this})}pushUnitView(e,n){var s;const r=aa(e,n),i=r.type,o=(s=r==null?void 0:r.scale)==null?void 0:s.name;if(o){if(this.name!==void 0&&o!=this.name)throw new Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!this.type)this.type=i;else if(i!==this.type&&!Nr(n))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${i}. Use "resolve: independent" for channel ${this.channel}`);this.members.push({view:e,channel:n})}isExplicitDomain(){return!!this.getConfiguredDomain()}_getMergedScaleProps(){return Ln(this,"mergedScaleProps",()=>{const e=this.members.map(n=>aa(n.view,n.channel).scale).filter(n=>n!==void 0);return Eo(e,"scale",["domain"])})}getScaleProps(){return Ln(this,"scaleProps",()=>{const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n={...this._getDefaultScaleProperties(this.type),...e};n.type||(n.type=Av(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Yt(n.type)&&(n.domain=new mh),!n.domain&&n.domainMid!==void 0&&(n.domain=[n.domainMin??0,n.domainMax??1]),this.channel=="y"&&Yt(n.type)&&n.reverse==null&&(n.reverse=!0),n.range&&n.scheme&&delete n.scheme,!("zoom"in n)&&["index","locus"].includes(n.type)&&(n.zoom=!0),xv(n,this.channel),n})}getInitialDomain(){return this.getConfiguredDomain()??(this.type==vh?this.getGenome().getExtent():this.getDataDomain())}getConfiguredDomain(){return this._reduceDomains(e=>Nr(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>Nr(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){V0(this,"scaleProps");const e=this.getScaleProps();lh(e,this._scale),Te(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=Jw(e);return this._scale=n,rm(n)&&n.genome(this.getGenome()),Te(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e;return((e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))??this.getDomain()}isZoomed(){return this.isZoomable()&&rf(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!yf(this.channel))return!1;const e=this.getScale().type;return["linear","locus","index","log","pow","sqrt"].includes(e)?!!this.getScaleProps().zoom:!1}zoom(e,n,r){if(!this.isZoomable())return!1;const i=this.getScale(),o=i.domain();let s=[...o],a=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(a+=i.align()),i.type){case"linear":case"index":case"locus":s=ld(s,r||0),s=Au(s,a,e);break;case"log":s=fd(s,r||0),s=xu(s,a,e);break;case"pow":case"sqrt":{const u=i;s=hd(s,r||0,u.exponent()),s=Po(s,a,e,u.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(s=pd(s,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(u=>s[u]!=o[u])?(i.domain(s),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var a;if(ai(n)&&(n=n?700:0),!this.isZoomable())throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(e),i=(a=this.members[0])==null?void 0:a.view.context.animator,o=this.getScale(),s=o.domain();if(n>0&&s.length==2){const u=s[1]-s[0],c=s[0]+u/2,f=r[1]-r[0],l=r[0]+f/2,h=yl([c,0,u],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*h.duration,easingFunction:pv,onUpdate:p=>{const[d,,g]=h(p);o.domain([d-g/2,d+g/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}resetZoom(){if(!this.isZoomable())throw new Error("Not a zoomable scale!");const e=this.getDomain(),n=this.getInitialDomain();return[0,1].some(r=>n[r]!=e[r])?(this._scale.domain(n),this._notifyDomainListeners(),!0):!1}getZoomLevel(){return this.isZoomable()?ui(this._zoomExtent)/ui(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(yv(n)&&Fe(n.extent))return this.fromComplexInterval(n.extent);if(n)return e.type=="locus"?this.getGenome().getExtent():this._scale.domain()}_getDefaultScaleProperties(e){const n=this.channel,r={};return this.isExplicitDomain()&&(r.zero=!1),kr(n)?r.nice=!this.isExplicitDomain():Kt(n)?r.scheme=e==wh?"tableau10":e==bh?"blues":"viridis":qi(n)?r.range=wf(n):n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}getGenome(){var n;if(this.type!=="locus")return;const e=(n=this.members[0].view.context.genomeStore)==null?void 0:n.getGenome();if(!e)throw new Error("No genome has been defined!");return e}invertToComplex(e){const n=this.getScale();if("invert"in n){const r=n.invert(e);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(e){const n=this.getGenome();return n?n.toChromosomal(e):e}fromComplex(e){return ph(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&fv(e)?this.getGenome().toContinuousInterval(e):e}_getViewPaths(){return this.members.map(e=>e.view.getPathString()).join(", ")}_reduceDomains(e){const n=this.members.map(e).filter(r=>!!r);if(n.length)return n.reduce((r,i)=>r.extendAll(i))}}function Av(t,e){if(e==gv||e==vh){if(yf(t))return e;throw new Error(`${t} does not support ${e} data type. Only positional channels do.`)}const n={x:["band","band","linear"],y:["band","band","linear"],size:[void 0,"point","linear"],opacity:[void 0,"point","linear"],fillOpacity:[void 0,"point","linear"],strokeOpacity:[void 0,"point","linear"],color:["ordinal","ordinal","linear"],fill:["ordinal","ordinal","linear"],stroke:["ordinal","ordinal","linear"],strokeWidth:[void 0,void 0,"linear"],shape:["ordinal","ordinal",void 0],dx:[void 0,void 0,"null"],dy:[void 0,void 0,"null"],angle:[void 0,void 0,"linear"]},i=["uniqueId","facetIndex","semanticScore","search","text","sample"].includes(t)?"null":n[t]?n[t][[wh,bh,yh].indexOf(e)]:e==yh?"linear":"ordinal";if(i===void 0)throw new Error(`Channel "${t}" is not compatible with "${e}" data type. Use of a proper scale may be needed.`);return i}function xv(t,e){kr(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Te(t.type)&&(t.clamp=!0)}function yv(t){return Le(t)}function qa(...t){for(const e of t)if(e!==void 0)return e}class bv{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=vn(this.members))==null?void 0:e.view.getScaleResolution(this.channel)}pushUnitView(e,n){const r=e.getScaleResolution(this.channel);if(!r)throw new Error("Cannot find a scale resolution!");if(this.scaleResolution&&r!==this.scaleResolution)throw new Error("Shared axes must have a shared scale!");this.members.push({view:e,channel:n})}getAxisProps(){return Ln(this,"axisProps",()=>{const e=this.members.map(n=>{const r=n.view.mark.encoding[n.channel];return"axis"in r&&r.axis});return e.length>0&&e.some(n=>n===null)?null:Eo(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var a;const s=aa(o.view,o.channel);if(!Ge(s))return{member:o,explicitTitle:qa((a=s.axis)==null?void 0:a.title,s.title),implicitTitle:qa(Pr(s)?s.field:void 0,ua(s)?s.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var s;if(Nr(o.member.channel)&&!o.explicitTitle){const a=Cn(o.member.channel);return((s=n.find(u=>u.member.view==o.member.view&&u.member.channel==a))==null?void 0:s.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>qa(o.explicitTitle,o.implicitTitle)).filter(W));return i.size?[...i].join(", "):null}}class Ch extends ih{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class tn extends kn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,s)=>{if(nu(o)||tu(o))return n.createView(o,this,"layer"+s);throw new Error("LayerView accepts only unit or layer specs as children!")})}*[Symbol.iterator](){for(const e of this.children)yield e}render(e,n,r={}){if(this.isVisible()){e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),this.children.length&&this.children.at(-1).propagateInteractionEvent(e),!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}}class Eh{constructor(e,n){this.n=e,this.maxCols=n??1/0}get nRows(){return this.maxCols==1/0?1:Math.ceil(this.n/this.maxCols)}get nCols(){return Math.min(this.n,this.maxCols)}get rowIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<r;i++){const o=[];e.push(o);for(let s=0;s<n;s++){const a=i*n+s;a<this.n&&o.push(a)}}return e}get colIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<n;i++){const o=[];e.push(o);for(let s=0;s<r;s++){const a=s*n+i;a<this.n&&o.push(a)}}return e}getCellIndex(e,n){let r=0;if(this.maxCols==1/0)r=n==0?e:void 0;else{if(e>=this.maxCols)return;r=n*this.nCols+e}return r<this.n?r:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}}function ut(t){return()=>t}const ct=class{static create(e,n,r,i){return new ct(ut(e),ut(n),ut(r),ut(i))}_offset(e,n){const r=this["_"+e];if(n===0)return r;switch(typeof n){case"number":return()=>r()+n;case"function":return()=>r()+n();default:throw new Error("Not a number of function")}}_passThrough(e){return this._offset(e,0)}constructor(e,n,r,i){this._x=e,this._y=n,this._width=r,this._height=i}get x(){return this._x()}get y(){return this._y()}get width(){return this._width()}get height(){return this._height()}get x2(){return this._x()+this._width()}get y2(){return this._y()+this._height()}equals(e){return e?this===e||this.x===e.x&&this.y===e.y&&this.width===e.width&&this.height===e.height:!1}modify(e){if(!Object.keys(e).length)return this;const n=r=>{const i=e[r];return typeof i=="number"?ut(i):typeof i=="function"?i:this._passThrough(r)};return new ct(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new ct(this._offset("x",e),this._offset("y",n),this._passThrough("width"),this._passThrough("height"))}translateBy(e){return this.translate(e.x,e.y)}expand(e,n=1){return e.left==0&&e.top==0&&e.right==0&&e.bottom==0?this:new ct(e.left?this._offset("x",-e.left*n):this._passThrough("x"),e.top?this._offset("y",-e.top*n):this._passThrough("y"),e.width?this._offset("width",e.width*n):this._passThrough("width"),e.height?this._offset("height",e.height*n):this._passThrough("height"))}shrink(e){return this.expand(e,-1)}intersect(e){return this===e?this:new ct(()=>Math.max(this.x,e.x),()=>Math.max(this.y,e.y),()=>Math.min(this.x2,e.x2)-Math.max(this.x,e.x),()=>Math.min(this.y2,e.y2)-Math.max(this.y,e.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new ct(ut(this.x),ut(this.y),ut(this.width),ut(this.height))}containsPoint(e,n){return e>=this.x&&e<this.x2&&n>=this.y&&n<this.y2}normalizePoint(e,n){return{x:(e-this.x)/this.width,y:(n-this.y)/this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}};let zn=ct;$h(zn,"ZERO",ct.create(0,0,0,0));function wv(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class On extends q{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function Sh(t){const e={...t.format};if(e.type??(e.type=Sv(t)&&vv(t.url)),e.parse??(e.parse="auto"),!e.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(t));return e}function vv(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const So=t=>typeof t!="object"?Cv:Ev,Cv=t=>({data:t}),Ev=t=>t;function Sv(t){return"url"in t}function Dv(t){return"dynamicCallbackSource"in t}class Dh extends On{constructor(e){super(),this.callback=e}loadSynchronously(){if(!this.callback)return;const e=this.callback();if(!e||typeof e[Symbol.iterator]!="function")throw new Error("Dynamic data callback didn't return iterable data!");this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=So(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const Bh="chromosome_ticks_and_labels",Fh={x:"width",y:"height"};function Ja(t){return t=="x"?"y":"x"}const _a={x:["bottom","top"],y:["left","right"]},Mh=Object.fromEntries(Object.entries(_a).map(([t,e])=>e.map(n=>[n,t])).flat(1));function nn(t){return Mh[t]}class Bv extends tn{constructor(e,n,r,i){const o=n=="locus",s={...o?Iv:Ih,...Mv(n,e),...e};if(super(o?Tv(s):Th(s),r,i,`axis_${e.orient}`),this.axisProps=s,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new Dh(()=>this.ticks),o){const a=nn(this.axisProps.orient),u=this.getScaleResolution(a).getGenome();this.findChildByName(Bh).getDynamicDataSource=()=>new Dh(()=>u.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return Mh[this.axisProps.orient]=="x"?new en(n,e):new en(e,n)}getPerpendicularSize(){return $a(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=nn(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(rf(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=Fv(this.axisProps,n,this.axisLength,i);o!==i&&(this.ticks=o,this.tickSource.loadSynchronously()),this.axisUpdateRequested=!1}onBeforeRender(){super.onBeforeRender(),this._updateAxisData()}render(e,n,r={}){this.isVisible()&&(this.axisLength=n[Fh[nn(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function $a(t){const e=nn(t.orient);let n=t.ticks&&t.tickSize||0;return t.labels&&(n+=t.labelPadding,e=="x"?n+=t.labelFontSize:n+=30),t.title&&(n+=t.titlePadding+t.titleFontSize),n=Math.min(t.maxExtent||1/0,Math.max(t.minExtent||0,n)),n}function Fv(t,e,n,r=[]){const i=a=>25+60*wv(100,700,a);let o=me(t.tickCount)?t.tickCount:Math.round(n/i(n));o=sh(e,o,t.tickMinStep);const s=t.values?ah(e,t.values,o):Gw(e,o);if(wA(s,r,a=>a,a=>a.value))return r;{const a=Hw(e,o,t.format);return s.map(u=>({value:u,label:a(u)}))}}const Ih={values:null,minExtent:20,maxExtent:1/0,offset:0,domain:!0,domainWidth:1,domainColor:"gray",domainDash:null,domainDashOffset:0,domainCap:"square",ticks:!0,tickSize:5,tickWidth:1,tickColor:"gray",tickDash:null,tickDashOffset:0,tickCap:"square",tickCount:null,tickMinStep:null,labels:!0,labelAlign:"center",labelBaseline:"middle",labelPadding:4,labelFontSize:10,labelLimit:180,labelColor:"black",format:null,titleColor:"black",titleFont:"sans-serif",titleFontSize:10,titlePadding:3};function Mv(t,e){const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",s=e.labelAngle??((n=="top"||n=="bottom")&&r?-90:0);switch(n){case"left":i="right";break;case"right":i="left";break;case"top":case"bottom":Math.abs(s)>30?(i=s>0==(n=="bottom")?"left":"right",o="middle"):o=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:s,labelBaseline:o}}function Th(t){const e={...t,extent:$a(t)},n=nn(e.orient),r=Ja(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,s=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:o,size:e.domainWidth}}),a=()=>({name:"labels",mark:{type:"text",clip:!1,align:e.labelAlign,angle:e.labelAngle,baseline:e.labelBaseline,[r+"Offset"]:(e.tickSize+e.labelPadding)*i,[r]:o,size:e.labelFontSize,color:e.labelColor,minBufferSize:1500},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label"}}}),u=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300},encoding:{[r]:{value:o},[r+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),c=()=>({name:"title",data:{values:[0]},mark:{type:"text",clip:!1,align:"center",baseline:e.orient=="bottom"?"bottom":"top",angle:[0,90,0,-90][["top","right","bottom","left"].indexOf(e.orient)],text:e.title,color:e.titleColor,[n]:.5,[r]:1-o}}),f=()=>{const h={name:"ticks_and_labels",encoding:{[n]:{field:"value",type:"quantitative"}},layer:[]};return e.ticks&&h.layer.push(u()),e.labels&&h.layer.push(a()),h},l={[Fh[Ja(nn(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(s()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(c()),l}const Iv={...Ih,chromTicks:!0,chromTickSize:18,chromTickWidth:1,chromTickColor:"#989898",chromTickDash:[4,2],chromTickDashOffset:1,chromLabels:!0,chromLabelFontSize:13,chromLabelFontWeight:"normal",chromLabelFontStyle:"normal",chromLabelColor:"black",chromLabelAlign:"left",chromLabelPadding:7};function Tv(t){const e={...t,extent:$a(t)},n=nn(e.orient),r=Ja(n),i=e.orient=="bottom"||e.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:t.chromTickDash,strokeDashOffset:t.chromTickDashOffset,[r]:i,[r+"2"]:i-e.chromTickSize/e.extent*(i?1:-1),color:t.chromTickColor,size:e.chromTickWidth}}),s=()=>{let c;switch(e.orient){case"top":c={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":c={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":c={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":c={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:c={}}return{name:"chromosome_labels",mark:{type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,...c},encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name"}}}};let a;switch(e.orient){case"bottom":case"top":a={};break;case"left":a={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":a={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:a={}}const u=Th({...t,...a});if(t.chromTicks||t.chromLabels){const c={name:Bh,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&c.layer.push(o()),t.chromLabels){c.layer.push(s());let f;u.layer.filter(l=>l.name=="ticks_and_labels").forEach(l=>l.layer.filter(h=>h.name=="labels").forEach(h=>{f=h.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}u.layer.push(c)}return u}const Ph={anchor:"middle",frame:"group",offset:10,orient:"top",align:void 0,angle:0,baseline:"alphabetic",dx:0,dy:0,color:void 0,font:void 0,fontSize:12,fontStyle:"normal",fontWeight:"normal"},Pv={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},Rv={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},Lv={start:0,middle:.5,end:1},kv={start:"left",middle:"center",end:"right"};function Nv(t){if(!t)return;const e=W(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n={"track-title":Pv,overlay:Rv}[e.style]??{},r={...Ph,...n,...e};let i={},o={x:0,y:0};const s=Lv[r.anchor??"middle"];switch(r.orient){case"top":o={x:s,y:1},i={baseline:"alphabetic",angle:0};break;case"right":o={x:1,y:1-s},i={baseline:"alphabetic",angle:90};break;case"bottom":o={x:s,y:0},i={baseline:"top",angle:0};break;case"left":o={x:0,y:s},i={baseline:"alphabetic",angle:-90};break}const a={...Ph,...i,...n,...e},u={xOffset:0,yOffset:0};switch(r.orient){case"top":u.yOffset=-a.offset;break;case"right":u.xOffset=a.offset;break;case"bottom":u.yOffset=a.offset;break;case"left":u.xOffset=-a.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...o,...u,text:a.text,align:a.align??kv[a.anchor],angle:a.angle,baseline:a.baseline,dx:a.dx,dy:a.dy,color:a.color,font:a.font,size:a.fontSize,fontStyle:a.fontStyle,fontWeight:a.fontWeight}}}function zv(t,e,n,r){if(t.type=="wheel"){t.uiEvent.preventDefault();const i=t.uiEvent,o=i.deltaMode?120:1;let{x:s,y:a}=t.point;if(r){const u=r.mark.encoders;u.x&&!u.x2&&(s=+u.x(r.datum)*e.width+e.x),u.y&&!u.y2&&(a=(1-+u.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:s,y:a,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300}):n({x:s,y:a,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})}else if(t.type=="mousedown"&&t.uiEvent.button===0){const i=t.uiEvent;i.preventDefault();let o=i;const s=u=>{n({x:o.clientX,y:o.clientY,xDelta:u.clientX-o.clientX,yDelta:u.clientY-o.clientY,zDelta:0}),o=u},a=u=>{document.removeEventListener("mousemove",s),document.removeEventListener("mouseup",a)};document.addEventListener("mouseup",a,!1),document.addEventListener("mousemove",s,!1)}}class Rh extends kn{constructor(n,r,i,o,s){super(n,r,i,o);he(this,Jr);he(this,$e);he(this,Bo);he(this,Fo);he(this,rn);he(this,_r);he(this,$r);he(this,ei);he(this,Mo);he(this,Gn,1/0);he(this,Un,10);he(this,Re,[]);he(this,Hn,0);this.spec=n,Yn(this,Un,n.spacing??10),Yn(this,Gn,s),Yn(this,Re,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){n.parent??(n.parent=this),Q(this,Re).push(ue(this,Jr,fu).call(this,n)),ed(this,Hn)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=Q(this,Re).findIndex(o=>o.view==n);if(i>=0)Q(this,Re)[i]=ue(this,Jr,fu).call(this,r);else throw new Error("Not my child view!")}get children(){return Q(this,Re).map(n=>n.view)}get childCount(){return Q(this,Re).length}onScalesResolved(){super.onScalesResolved(),ue(this,Fo,rd).call(this)}*[Symbol.iterator](){for(const n of Q(this,Re)){n.background&&(yield n.background);for(const r of Object.values(n.axes))r&&(yield r);yield n.view,n.title&&(yield n.title)}}getOverhang(){const n=ue(this,rn,ni).call(this,"column"),r=ue(this,rn,ni).call(this,"row");return!n.length||!r.length?Qe.zero():new Qe(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new en(ue(this,$r,du).call(this,"column"),ue(this,$r,du).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding()))}render(n,r,i={}){if(!this.isVisible())return;r=r.shrink(this.getPadding()),n.pushView(this,r);const o={devicePixelRatio:this.context.glHelper.dpr},s=eh(ue(this,_r,hu).call(this,"column"),r.width,o),a=eh(ue(this,_r,hu).call(this,"row"),r.height,o),u=new Eh(Q(this,$e,Ft).length,Q(this,Gn)??1/0);for(const[c,f]of Q(this,$e,Ft).entries()){const{view:l,axes:h,background:p,title:d}=f,[g,m]=u.getCellCoords(c),A=s[ue(this,ei,pu).call(this,"column",g)],y=a[ue(this,ei,pu).call(this,"row",m)],b=l.getSize(),C=l.getPadding().subtract(l.getOverhang()),B=A.location+C.left,E=y.location+C.top,w=(b.width.grow?A.size:b.width.px)-C.width,X=(b.height.grow?y.size:b.height.px)-C.height,H=new zn(()=>r.x+B,()=>r.y+E,()=>w,()=>X);f.coords=H,p==null||p.render(n,H,i);const ae=Uv(l);ae&&l.render(n,H,i);for(const[M,Se]of Object.entries(h)){const _=Se.axisProps;let ve;const je=Se.getPerpendicularSize();M=="bottom"?ve=H.translate(0,H.height+_.offset).modify({height:je}):M=="top"?ve=H.translate(0,-je-_.offset).modify({height:je}):M=="left"?ve=H.translate(-je-_.offset,0).modify({width:je}):M=="right"&&(ve=H.translate(H.width+_.offset,0).modify({width:je})),Se.render(n,ve)}ae||l.render(n,H,i),d==null||d.render(n,H,{...i,clipRect:void 0})}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=Q(this,$e,Ft).find(o=>o.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof we||i instanceof tn)&&zv(n,r.coords,o=>ue(this,Mo,id).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}Gn=new WeakMap,Un=new WeakMap,Re=new WeakMap,Hn=new WeakMap,Jr=new WeakSet,fu=function(n){var i;const r={view:n,background:void 0,axes:{},coords:zn.ZERO};if(n instanceof we||n instanceof tn){const o=(i=n.spec)==null?void 0:i.view;if(o!=null&&o.fill||o!=null&&o.stroke){const a=new we(Ov(o),this.context,n,"background"+Q(this,Hn));a.blockEncodingInheritance=!0,r.background=a}const s=Nv(n.spec.title);if(s){const a=new we(s,this.context,n,"title"+Q(this,Hn));a.blockEncodingInheritance=!0,r.title=a}}return r},$e=new WeakSet,Ft=function(){return Q(this,Re).filter(n=>n.view.isVisible())},Bo=new WeakSet,nd=function(){return new Eh(Q(this,$e,Ft).length,Q(this,Gn)??1/0)},Fo=new WeakSet,rd=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of Q(this,Re)){const{view:r,axes:i}=n,o=(s,a,u)=>{const c=s.getAxisProps();if(c!==null){if(!c.orient){for(const f of _a[a])if(!i[f]){c.orient=f;break}if(!c.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if(c.title??(c.title=s.getTitle()),!_a[a].includes(c.orient))throw new Error(`Invalid axis orientation "${c.orient}" on channel "${a}"!`);if(i[c.orient])throw new Error(`An axis with the orient "${c.orient}" already exists!`);i[c.orient]=new Bv(c,s.scaleResolution.type,this.context,u)}};if(r instanceof we||r instanceof tn)for(const s of["x","y"]){const a=r.resolutions.axis[s];a&&o(a,s,r)}if(r instanceof tn){for(const s of r.children)for(const[a,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&c.orient&&o(u,a,s)}for(const s of r.children)for(const[a,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&!c.orient&&o(u,a,s)}}}},rn=new WeakSet,ni=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",o=(s,a)=>s.map(u=>{const c=Q(this,$e,Ft)[u].axes[r[a]];if(c)return Math.max(c.getPerpendicularSize()+c.axisProps.offset,0);const f=Q(this,$e,Ft)[u].view.getOverhang();return n=="column"?a?f.right:f.left:a?f.bottom:f.top}).reduce((u,c)=>Math.max(u,c),0);return Q(this,Bo,nd)[n=="column"?"colIndices":"rowIndices"].map(s=>({axisBefore:o(s,0),axisAfter:o(s,1),view:Pw(s.map(a=>Q(this,$e,Ft)[a].view.getSize()[i]))}))},_r=new WeakSet,hu=function(n){const r=ue(this,rn,ni).call(this,n),i=[];i.push(Xr);for(const[o,s]of r.entries())o>0&&i.push({px:Q(this,Un),grow:0}),(o==0||this.wrappingFacet)&&i.push(Xr),i.push({px:s.axisBefore,grow:0}),i.push(s.view),i.push({px:s.axisAfter,grow:0}),(o==r.length-1||this.wrappingFacet)&&i.push(Xr);return i},$r=new WeakSet,du=function(n){let r=0,i=0;const o=(n=="row"&&this.spec.height)??(n=="column"&&this.spec.width);if(o||o===0)return th(o);const s=ue(this,rn,ni).call(this,n);for(const[a,u]of s.entries())a>0&&(i+=Q(this,Un)),(a==0||this.wrappingFacet)&&(i+=0),i+=u.axisBefore,i+=u.view.px??0,r+=u.view.grow??0,i+=u.axisAfter,(a==s.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},ei=new WeakSet,pu=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Mo=new WeakSet,id=function(n,r,i){for(const[o,s]of Object.entries(Gv(r))){if(s.size<=0)continue;const a=n.normalizePoint(i.x,i.y),u=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),c={x:u.x-a.x,y:u.y-a.y};for(const f of s)f.zoom(2**i.zDelta,o=="y"?1-a[o]:a[o],o=="x"?c.x:-c.y)}this.context.animator.requestRender()};function Ov(t){return{configurableVisibility:!1,data:{values:[{}]},mark:{fill:null,strokeWidth:1,fillOpacity:t.fill?1:0,...t,type:"rect",clip:!1,tooltip:null}}}function Gv(t){const e={x:new Set,y:new Set};return t.visit(n=>{for(const[r,i]of Object.entries(e)){const o=n.getScaleResolution(r);o&&o.isZoomable()&&i.add(o)}}),e}function Uv(t){let e=!0;return t.visit(n=>{n instanceof we&&e&&(e=n.mark.properties.clip)}),e}class eu extends Rh{constructor(e,n,r,i){super(e,n,r,i,iu(e)?e.columns:ru(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=iu(e)?e.concat:ru(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class Hv{constructor(){this.types=[];const e=n=>(r,i,o,s)=>new n(r,i,o,r.name??s);this.addViewType(Qv,e(Ch)),this.addViewType(nu,e(tn)),this.addViewType(tu,e(we)),this.addViewType(ru,e(eu)),this.addViewType(jv,e(eu)),this.addViewType(iu,e(eu))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const o=this.types.find(s=>s.specGuard(e));if(o)return o.factory(e,n,r,i??"unnamed");throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){const n=this.types.filter(r=>r.specGuard(e));if(n.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return n.length==1}}function tu(t){return"mark"in t&&(W(t.mark)||Le(t.mark))}function nu(t){return"layer"in t&&Le(t.layer)}function Lh(t){return t&&(tu(t)||nu(t))&&"aggregateSamples"in t}function Qv(t){return"import"in t}function ru(t){return"vconcat"in t&&Fe(t.vconcat)}function jv(t){return"hconcat"in t&&Fe(t.hconcat)}function iu(t){return"concat"in t&&Fe(t.concat)}const Vv={point:xw,rect:fw,rule:ww,link:Sw,text:Tw};class we extends kn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=Vv[this.getMarkType()];if(o)this.mark=new o(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.sampleAggregateViews=[],this._initializeAggregateViews(),this.coords=void 0}*[Symbol.iterator](){for(const e of this.sampleAggregateViews)yield e}replaceChild(e,n){const r=this.sampleAggregateViews.indexOf(e);if(r>=0)this.sampleAggregateViews[r]=n;else throw new Error("Not my child view!")}render(e,n,r={}){this.isVisible()&&(this.coords=n,e.pushView(this,n),e.renderMark(this.mark,r),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}resolve(e){const n=this.mark.encoding;for(const[r,i]of Object.entries(n)){if(!Pe(i))continue;let o=Cn(i.resolutionChannel??r);if(e=="axis"&&!kr(o))continue;let s=this;for(;s.parent instanceof kn&&["shared","excluded"].includes(s.parent.getConfiguredOrDefaultResolution(o,e))&&s.getConfiguredOrDefaultResolution(o,e)!="excluded";)s=s.parent;s.resolutions[e][o]||(s.resolutions[e][o]=e=="scale"?new mv(o):new bv(o)),kr(r)?s.resolutions[e][o].pushUnitView(this,r):e=="scale"&&s.resolutions[e][o].pushUnitView(this,r)}}getAccessor(e){return this._cache("accessor/"+e,()=>{const n=this.mark.encoding;if(n&&n[e])return this.context.accessorFactory.createAccessor(n[e])})}getFacetAccessor(e){const n=this.getAccessor("sample");return n||super.getFacetAccessor(this)}getCollector(){return this.context.dataFlow.findCollectorByKey(this)}_validateDomainQuery(e){if(Nr(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Pe(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const i=this.getScaleResolution(n.resolutionChannel??e);return xh(n.type??"nominal",i.fromComplexInterval(r))}}extractDataDomain(e){const r=this._validateDomainQuery(e).type??"nominal",i=a=>{let u;const c=this.mark.encoding[a];if(c){const f=this.context.accessorFactory.createAccessor(c);if(f)if(u=xh(r),f.constant)u.extend(f({}));else{const l=this.getCollector();l!=null&&l.completed&&l.visitData(h=>u.extend(f(h)))}}return u};let o=i(e);const s=ca[e];if(s){const a=i(s);a&&o.extendAll(a)}return o}getZoomLevel(){const e=n=>{var r;return((r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())??1};return Lr.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){if(Lh(this.spec))for(const e of this.spec.aggregateSamples){const n=e.transform??[];n.length&&vn(n).type!="collect"&&n.push({type:"collect"}),n.push({type:"mergeFacets"}),e.transform=n,e.encoding={...e.encoding??{},sample:null};const r=this.context.createView(e,this,"summaryView");r.getFacetFields=i=>{},this.sampleAggregateViews.push(r)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*ou(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of ou(r,[...e,n]))yield i;else yield[[...e,n],r]}class su extends q{constructor(e){super(),this.params=e??{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new Tt([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){gw(e)&&(this._data=[],this.facetBatches.set(Ke(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?yu(e.field,e.order):void 0,r=s=>{n&&s.sort(n)};if((o=this.params.groupby)!=null&&o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const s=this.params.groupby.map(u=>O(u)),a=hi(this._data,...s);this.facetBatches.clear();for(const[u,c]of ou(a))this.facetBatches.set(u,c)}for(const s of this.facetBatches.values())r(s);if(this.children.length)for(const[s,a]of this.facetBatches.entries()){if(s){const u={type:"facet",facetId:s};for(const c of this.children)c.beginBatch(u)}for(const u of a)this._propagate(u)}super.complete();for(const s of this.observers)s(this)}getData(){switch(this._checkStatus(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{const e=this.facetBatches;return{[Symbol.iterator]:function*(){for(const r of e.values())for(let i=0;i<r.length;i++)yield r[i]}}}}}visitData(e){this._checkStatus();for(const n of this.facetBatches.values())for(let r=0;r<n.length;r++)e(n[r])}getItemCount(){let e=0;for(const n of this.facetBatches.values())e+=n.length;return e}_checkStatus(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")}}class Do{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(;r>0;){const i=r-1>>1,o=this.values[i];if(n>=o)break;this.ids[r]=this.ids[i],this.values[r]=o,r=i}this.ids[r]=e,this.values[r]=n}pop(){if(this.length===0)return;const e=this.ids[0];if(this.length--,this.length>0){const n=this.ids[0]=this.ids[this.length],r=this.values[0]=this.values[this.length],i=this.length>>1;let o=0;for(;o<i;){let s=(o<<1)+1;const a=s+1;let u=this.ids[s],c=this.values[s];const f=this.values[a];if(a<this.length&&f<c&&(s=a,u=this.ids[a],c=f),c>=r)break;this.ids[o]=u,this.values[o]=c,o=s}this.ids[o]=n,this.values[o]=r}return e}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}shrink(){this.ids.length=this.values.length=this.length}}class Yv extends q{get behavior(){return at}constructor(e){super(),this.params=e,this.startAccessor=O(e.start),this.endAccessor=O(e.end),this.chromAccessor=e.chrom?O(e.chrom):n=>{},this.weightAccessor=e.weight?O(e.weight):n=>1,this.as={coverage:e.as||"coverage",start:e.asStart||e.start,end:e.asEnd||e.end,chrom:e.asChrom||e.chrom},this.createSegment=new Function("start","end","coverage","chrom","return {"+Object.entries(this.as).filter(([n,r])=>r).map(([n,r])=>`${JSON.stringify(r)}: ${n}`).join(", ")+"};"),this.ends=new Do}reset(){super.reset(),this.initialize()}initialize(){const e=this.as.coverage,n=this.as.end,r=this.as.chrom,i=this.startAccessor,o=this.endAccessor,s=this.chromAccessor,a=this.weightAccessor;let u,c,f,l=0,h;const p=this.ends;p.clear();const d=(m,A,y)=>{if(m==A)return;let b=!1;u&&(u[e]===y?(u[n]=A,b=!0):u[e]!=0&&this._propagate(u)),b||(u=this.createSegment(m,A,y,f))},g=()=>{let m;for(;(m=p.peekValue())!==void 0;)d(h,m,l),h=m,l-=p.pop();h=void 0,u&&(this._propagate(u),u=void 0)};this.handle=m=>{const A=i(m);let y;for(;(y=p.peekValue())!==void 0&&y<A;)d(h,y,l),h=y,l-=p.pop();if(r){let C=s(m);C!==c&&(g(),f=C,c=f)}h!==void 0&&d(h,A,l),h=A;const b=a(m);l+=b,p.push(b,o(m))},this.complete=()=>{g(),super.complete()}}}function Wv(t,e,n=0,r=t.length){const i=new Do,o=r-n;let s;for(s=0;s<e&&s<o;s++)i.push(s,t[n+s]);for(;s<o;s++){const c=t[n+s];c>=i.peekValue()&&(i.push(s,c),i.pop())}const a=[];let u;for(;(u=i.pop())!==void 0;)a.push(n+u);return a.reverse()}class Xv{constructor(e,n=-1/0,r=1/0){this.maxSize=e,this.lowerLimit=n,this.upperLimit=r;const i=this.maxSize*2+1;this.lowerLimits=new Float64Array(i),this.upperLimits=new Float64Array(i),this.lowerChildren=new Int32Array(i),this.upperChildren=new Int32Array(i),this.reset()}reset(){this.lowerLimits.fill(0),this.upperLimits.fill(0),this.lowerChildren.fill(0),this.upperChildren.fill(0),this.n=1,this.lowerLimits[0]=this.lowerLimit,this.upperLimits[0]=this.upperLimit}_findSlot(e,n,r=0){if(e>=this.lowerLimits[r]&&n<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const o=this._findSlot(e,n,i);return o>=0?o:this._findSlot(e,n,this.upperChildren[r])}else return r}else return-1}reserve(e,n){if(n-e<=0)throw new Error("Cannot reserve an empty or negative-size slot!");if(this.n+1>this.lowerLimits.length)return!1;const r=this._findSlot(e,n);if(r<0)return!1;const i=this.n++,o=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=e,this.lowerLimits[o]=n,this.upperLimits[o]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=o,!0}}class Zv extends q{constructor(e,n){if(super(),this.params=e,this._data=[],this.channel=e.channel??"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=O(this.params.pos),this.posBisector=fi(this.posAccessor),this.scoreAccessor=O(this.params.score),this.widthAccessor=O(this.params.width),this.laneAccessor=this.params.lane?O(this.params.lane):i=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=n.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>n.context.animator.requestTransition(r),this.resolution.addEventListener("domain",i=>this.schedule()),n._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const e=this.posAccessor;this._data.sort((n,r)=>e(n)-e(r)),this._scores=this._data.map(this.scoreAccessor);for(const n of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(n,new Xv(200));this.schedule(),super.complete()}_filterAndPropagate(){var s;super.reset();const e=this.resolution.getScale(),n=(s=this.resolution.members[0].view.coords)==null?void 0:s[this.channel=="x"?"width":"height"];if(!n)return;for(const a of this.reservationMaps.values())a.reset();const r=e.domain(),i=70,o=Wv(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const a of o){const u=this._data[a],c=e(this.posAccessor(u))*n,f=this.widthAccessor(u)/2+this.padding;this.reservationMaps.get(this.laneAccessor(u)).reserve(c-f,c+f)&&this._propagate(u)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class Kv extends q{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=sa(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const qv="0".charCodeAt(0);function*Jv(t,e=","){const n=e.charCodeAt(0);let r=0;for(let i=0;i<t.length;i++){const o=t.charCodeAt(i);o==n?(yield r,r=0):r=r*10+o-qv}yield r}class _v extends q{get behavior(){return at}constructor(e){super();const n=O(e.exons??"exons"),r=O(e.start??"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=s=>{let a=r(s),u=a,c=!0;const f=n(s);for(const l of Jv(f)){if(c)u=a+l;else{a=u+l;const h=Object.assign({},s);h[i]=u,h[o]=a,this._propagate(h)}c=!c}}}}class $v extends q{get behavior(){return at}constructor(e){super();const n=Ke(e.field).map(o=>O(o)),r=Ke(e.separator),i=Ke(e.as||e.field);if(n.length!==r.length||n.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${n.length}), and "as" (${i.length}) do not match!`);this.handle=o=>{if(n.some(u=>!u(o)))return;const s=n.map((u,c)=>u(o).split(r[c]));eC(s,o);const a=s[0].length;for(let u=0;u<a;u++){const c=Object.assign({},o);for(let f=0;f<n.length;f++)c[i[f]]=s[f][u];this._propagate(c)}}}}function eC(t,e){const n=t.map(r=>r.length);if(!n.every(r=>r==n[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(e))}class tC extends q{get behavior(){return Bt}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=sa(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class kh extends q{get behavior(){return Bt}constructor(e,n){super();const r=e.channel??"x";if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=n.getScaleResolution(r).getGenome();if(!i)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=O(e.chrom),s=Ke(e.pos).map(d=>O(d)),a=Ke(e.as);if(s.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const u=Ke(e.offset);let c;if(u.length==0)c=new Array(s.length).fill(0);else if(u.length==1)c=new Array(s.length).fill(u[0]);else if(u.length==s.length)c=u;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",a.map((d,g)=>`datum[${JSON.stringify(d)}] = chromOffset + +posAccessors[${g}](datum) - ${c[g]};`).join(`
148
+ `));let l,h=0;const p=d=>{if(d!==l){if(h=i.cumulativeChromPositions.get(d),h===void 0)throw new Error("Unknown chromosome/contig: "+d);l=d}return h};this.handle=d=>{f(d,p(o(d)),s),this._propagate(d)}}}const Nh={pages:["Lato-Regular.png"],chars:[{id:87,width:53,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:43.491,chnl:15,x:0,y:0,page:0},{id:124,width:17,height:50,xoffset:0,yoffset:-32.193000000000005,xadvance:10.521,chnl:15,x:0,y:42,page:0},{id:40,width:20,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:94,page:0},{id:41,width:19,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:145,page:0},{id:36,width:32,height:49,xoffset:0,yoffset:-34.419000000000004,xadvance:24.360000000000003,chnl:15,x:0,y:196,page:0},{id:125,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:247,page:0},{id:91,width:22,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:297,page:0},{id:93,width:19,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:347,page:0},{id:123,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:397,page:0},{id:106,width:19,height:48,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:0,y:447,page:0},{id:81,width:43,height:47,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:21,y:447,page:0},{id:77,width:45,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:38.997,chnl:15,x:66,y:447,page:0},{id:64,width:43,height:44,xoffset:0,yoffset:-28.539,xadvance:35.133,chnl:15,x:23,y:397,page:0},{id:92,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:68,y:397,page:0},{id:47,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:98,y:397,page:0},{id:109,width:42,height:32,xoffset:0,yoffset:-21.609,xadvance:34.545,chnl:15,x:113,y:447,page:0},{id:119,width:42,height:31,xoffset:0,yoffset:-21.315,xadvance:32.991,chnl:15,x:157,y:447,page:0},{id:42,width:25,height:42,xoffset:0,yoffset:-31.626,xadvance:17.85,chnl:15,x:128,y:397,page:0},{id:37,width:42,height:41,xoffset:0,yoffset:-30.387,xadvance:33.663000000000004,chnl:15,x:155,y:397,page:0},{id:79,width:42,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534000000000002,xadvance:14.721,chnl:15,x:243,y:397,page:0},{id:100,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:269,y:397,page:0},{id:98,width:32,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:302,y:397,page:0},{id:56,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:29.904000000000003,chnl:15,x:370,y:397,page:0},{id:108,width:17,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:9.912,chnl:15,x:412,y:397,page:0},{id:107,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:21.336000000000002,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:18.795,chnl:15,x:94,y:347,page:0},{id:105,width:18,height:41,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:123,y:347,page:0},{id:51,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:143,y:347,page:0},{id:104,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.436,chnl:15,x:177,y:347,page:0},{id:67,width:37,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:28.056,chnl:15,x:210,y:347,page:0},{id:88,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.258000000000003,chnl:15,x:249,y:347,page:0},{id:68,width:40,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:31.941000000000003,chnl:15,x:288,y:347,page:0},{id:70,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:23.751,chnl:15,x:330,y:347,page:0},{id:34,width:23,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:15.561000000000002,chnl:15,x:364,y:347,page:0},{id:72,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:389,y:347,page:0},{id:73,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.760000000000002,chnl:15,x:429,y:347,page:0},{id:74,width:24,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:17.745,chnl:15,x:449,y:347,page:0},{id:75,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.825000000000003,chnl:15,x:24,y:297,page:0},{id:76,width:31,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:21.567,chnl:15,x:475,y:347,page:0},{id:66,width:35,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.153000000000002,chnl:15,x:64,y:297,page:0},{id:78,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:101,y:297,page:0},{id:33,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.298,chnl:15,x:141,y:297,page:0},{id:80,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.221,chnl:15,x:161,y:297,page:0},{id:65,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:197,y:297,page:0},{id:82,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.313000000000002,chnl:15,x:237,y:297,page:0},{id:35,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:275,y:297,page:0},{id:84,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.801000000000002,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891000000000002,chnl:15,x:346,y:297,page:0},{id:86,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:385,y:297,page:0},{id:39,width:16,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:8.568000000000001,chnl:15,x:425,y:297,page:0},{id:69,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.255000000000003,chnl:15,x:443,y:297,page:0},{id:89,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.208000000000002,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284000000000002,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156000000000002,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:128,y:247,page:0},{id:94,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:162,y:247,page:0},{id:96,width:21,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:16.8,chnl:15,x:196,y:247,page:0},{id:55,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:219,y:247,page:0},{id:54,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:254,y:247,page:0},{id:53,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:289,y:247,page:0},{id:52,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:323,y:247,page:0},{id:103,width:31,height:39,xoffset:0,yoffset:-21.630000000000003,xadvance:21.84,chnl:15,x:358,y:247,page:0},{id:112,width:32,height:39,xoffset:0,yoffset:-21.651,xadvance:23.541,chnl:15,x:391,y:247,page:0},{id:113,width:31,height:39,xoffset:0,yoffset:-21.651,xadvance:23.520000000000003,chnl:15,x:425,y:247,page:0},{id:116,width:25,height:39,xoffset:0,yoffset:-28.182000000000002,xadvance:15.057,chnl:15,x:458,y:247,page:0},{id:121,width:31,height:38,xoffset:0,yoffset:-21.273,xadvance:21.651,chnl:15,x:34,y:196,page:0},{id:59,width:18,height:36,xoffset:0,yoffset:-20.706,xadvance:10.983,chnl:15,x:485,y:247,page:0},{id:43,width:32,height:34,xoffset:0,yoffset:-24.486,xadvance:24.360000000000003,chnl:15,x:67,y:196,page:0},{id:60,width:30,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:101,y:196,page:0},{id:62,width:31,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:133,y:196,page:0},{id:117,width:30,height:32,xoffset:0,yoffset:-21.273,xadvance:23.415000000000003,chnl:15,x:166,y:196,page:0},{id:99,width:29,height:32,xoffset:0,yoffset:-21.609,xadvance:20.055,chnl:15,x:198,y:196,page:0},{id:110,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:23.436,chnl:15,x:229,y:196,page:0},{id:111,width:32,height:32,xoffset:0,yoffset:-21.609,xadvance:23.814,chnl:15,x:262,y:196,page:0},{id:126,width:32,height:26,xoffset:0,yoffset:-16.128,xadvance:24.360000000000003,chnl:15,x:201,y:447,page:0},{id:101,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:22.176000000000002,chnl:15,x:296,y:196,page:0},{id:114,width:25,height:32,xoffset:0,yoffset:-21.651,xadvance:15.288,chnl:15,x:329,y:196,page:0},{id:115,width:27,height:32,xoffset:0,yoffset:-21.609,xadvance:18.186,chnl:15,x:356,y:196,page:0},{id:97,width:28,height:32,xoffset:0,yoffset:-21.651,xadvance:20.874000000000002,chnl:15,x:385,y:196,page:0},{id:118,width:31,height:31,xoffset:0,yoffset:-21.273,xadvance:21.672,chnl:15,x:415,y:196,page:0},{id:61,width:31,height:29,xoffset:0,yoffset:-19.089000000000002,xadvance:24.360000000000003,chnl:15,x:448,y:196,page:0},{id:120,width:30,height:31,xoffset:0,yoffset:-21.273,xadvance:20.916,chnl:15,x:21,y:145,page:0},{id:58,width:18,height:31,xoffset:0,yoffset:-20.706,xadvance:10.5,chnl:15,x:53,y:145,page:0},{id:122,width:28,height:31,xoffset:0,yoffset:-21.273,xadvance:18.984,chnl:15,x:73,y:145,page:0},{id:95,width:28,height:16,xoffset:0,yoffset:0,xadvance:19.278000000000002,chnl:15,x:235,y:447,page:0},{id:45,width:23,height:24,xoffset:0,yoffset:-14.175,xadvance:15.603000000000002,chnl:15,x:481,y:196,page:0},{id:44,width:17,height:21,xoffset:0,yoffset:-4.956,xadvance:9.534,chnl:15,x:103,y:145,page:0},{id:46,width:18,height:15,xoffset:0,yoffset:-4.956,xadvance:9.912,chnl:15,x:0,y:497,page:0},{id:32,width:0,height:0,xoffset:0,yoffset:0,xadvance:10.752,chnl:15,x:20,y:497,page:0}],info:{face:"Lato Regular",size:42,bold:0,italic:0,charset:[" ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"],unicode:1,stretchH:100,smooth:1,aa:1,padding:[0,0,0,0],spacing:[2,2]},common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0},kernings:[]};class nC extends q{get behavior(){return Bt}constructor(e){super();const n=Va(Nh),r=O(e.field),i=e.as,o=e.fontSize;this.handle=s=>{const a=r(s);a!==void 0?s[i]=n.measureWidth(a,o):s[i]=0,this._propagate(s)}}}const rC=65536;class iC extends q{get behavior(){return Bt}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=me(e.spacing)?e.spacing:1,i=O(e.start),o=O(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const s=new Float64Array(rC),a=O(e.preference),u=e.preferredOrder;let c=1/0;this.handle=f=>{const l=i(f);l<c&&s.fill(-1/0),c=l;const h=u.indexOf(a(f));let p=-1;if(h>=0&&s[h]<l)p=h;else{const d=i(f);for(p=0;p<s.length&&!(s[p]<d);p++);if(p>=s.length)throw new Error("Out of lanes!")}s[p]=o(f)+r,f[n]=p,this._propagate(f)}}else{const s=new Do,a=new Do;let u=-1/0,c=0;this.handle=f=>{const l=i(f);for(;s.length&&(s.peekValue()<=l||l<u);){const p=s.pop();a.push(p,p)}u=l;let h=a.pop();h===void 0&&(h=c++),f[n]=h,this._propagate(f),s.push(h,o(f)+r)}}}}class oC extends q{get behavior(){return at}constructor(e){if(super(),e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>O(i)),r=e.as?e.as:n.map(Z);this.handle=i=>{const o={};for(let s=0;s<n.length;s++)o[r[s]]=n[s](i);this._propagate(o)}}}class sC extends q{get behavior(){return Bt}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=O(e.field);this.handle=o=>{const s=i(o);if(W(s)){const a=s.match(n);if(a){if(a.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let u=0;u<r.length;u++)o[r[u]]=a[u+1]}else if(e.skipInvalidInput)for(let u=0;u<r.length;u++)o[r[u]]=void 0;else throw new Error(`"${s}" does not match the given regex: ${n.toString()}`)}else if(!e.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof s}, field content: "${s}".`);this._propagate(o)}}}class aC extends q{get behavior(){return at}constructor(e){super();const n=Ke(e.columnRegex).map(h=>new RegExp(h)),r=Ke(e.asValue);if(n.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=e.skipRegex?new RegExp(e.skipRegex):void 0,o=e.asKey||"sample";let s,a,u;const c=h=>{var m;const p=Object.keys(h),d=new Map;for(const[A,y]of n.entries())for(const b of p){const C=(m=y.exec(b))==null?void 0:m[1];if(C!==void 0){let B=d.get(C);B||(B=[],d.set(C,B)),B[A]=b}}s=[...d.entries()],a=p.filter(A=>!n.some(y=>y.test(A))&&!(i&&i.test(A)));const g=[...a.map(A=>JSON.stringify(A)+": datum["+JSON.stringify(A)+"]"),JSON.stringify(o)+": sampleId",...r.map(A=>JSON.stringify(A)+": null")];u=new Function("datum","sampleId",`return {
149
149
  `+g.join(`,
150
150
  `)+`
151
- };`)},f=h=>{s||c(h);for(const[p,d]of s){const g=u(h,p);for(let A=0;A<d.length;A++)g[r[A]]=h[d[A]];this._propagate(g)}},l=h=>{c(h),f(h),this.handle=f};this.handle=l,this.beginBatch=h=>{_0(h)&&(this.handle=l),super.beginBatch(h)}}}class aC extends J{get behavior(){return Ft}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){var f;const e=this.params,n=e.as||["y0","y1"],r=e.sort?yu(e.sort.field,e.sort.order):void 0,i=e.field?H(e.field):()=>1,o=e.groupby.map(l=>H(l)),s=Wd(this.buffer,l=>o.map(h=>h(l)).join()).map(l=>l[1]);let a=l=>!0;if(e.baseField){const l=H(e.baseField);a=h=>l(h)!==null}let u,c;switch(e.offset){case"normalize":u=(l,h)=>l/h,c=(l,h)=>gi(l,h);break;case"center":u=(l,h)=>l-h/2,c=(l,h)=>gi(l,h);break;case"information":{const l=Math.log2((f=e.cardinality)!=null?f:4);u=(h,p)=>h/p,c=(h,p)=>{const g=gi(h,y=>+!a(y)),A=gi(h,p),m=A-g;let b=0;for(let y=0;y<h.length;y++){const w=h[y];if(a(w)){const E=p(w)/m;b-=E*Math.log2(E)}}return m/(l-(b+0))*(m/A)}}break;default:u=(l,h)=>l,c=(l,h)=>1}for(const l of s){r&&l.sort(r);const h=c(l,i);let p=0;for(const d of l){const g=p+i(d);a(d)&&(d[n[0]]=u(p,h),d[n[1]]=u(g,h),this._propagate(d),p=g)}}super.complete()}}class uC extends J{get behavior(){return ut}constructor(e){var o,s;super();const n=H((o=e.field)!=null?o:"sequence"),[r,i]=(s=e.as)!=null?s:["pos","sequence"];this.handle=a=>{const u=Object.assign({},a,{[i]:"",[r]:0}),c=n(a);for(let f=0;f<c.length;f++){const l=Object.assign({},u);l[r]=f,l[i]=c.charAt(f),this._propagate(l)}}}}class cC extends J{get behavior(){return ut}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const n=this.params.groupby,r=n.map(o=>H(o)),i=di(this.buffer,...r);for(const[o,s]of ou(i)){const a={count:s.length};for(let u=0;u<n.length;u++)a[n[u]]=o[u];this._propagate(a)}super.complete()}}const lC="_uniqueId",zh=1e4,Oh=[null];class Gh extends J{get behavior(){return Ft}constructor(e){var n;super(),this.params=e,this.as=(n=e.as)!=null?n:lC,this._blocks=[],this._usedBlocks=0,this._id=-1}initialize(){}reset(){super.reset(),this._usedBlocks=0,this._id=-1}handle(e){e[this.as]=this._nextId(),this._propagate(e)}_nextId(){return++this._id%zh==0&&(this._id=this._getBlock()*zh),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Oh.length;return Oh[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const fC={aggregate:cC,collect:su,coverage:Vv,filterScoredLabels:Xv,filter:Zv,flattenCompressedExons:Jv,flattenDelimited:_v,flattenSequence:uC,formula:eC,identifier:Gh,linearizeGenomicCoordinate:kh,measureText:tC,pileup:rC,project:iC,regexExtract:oC,regexFold:sC,sample:$0,stack:aC};function hC(t,e){const n=fC[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function dC(t){return"values"in t}class pC extends Gn{constructor(e){var n;if(super(),this.params=e,typeof e.values=="string"&&!((n=e==null?void 0:e.format)!=null&&n.type))throw new Error("Data format type (csv, dsv, ...) must be specified if a string is provided!")}loadSynchronously(){const e=this.params.values;let n=[],r=i=>i;if(Array.isArray(e))e.length>0&&(n=e,r=Do(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=Ec(e,Sh(this.params));else throw new Error('"values" in data configuration is not an array, object, or a string!');this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}function gC(t){return"url"in t}class mC extends Gn{constructor(e,n){super(),this.params=e,this.baseUrl=n}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}async load(){const e=this.params.url,n=Array.isArray(e)?e:[e],r=async o=>Di({baseURL:this.baseUrl}).load(o).catch(s=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${s.message}`)}),i=(o,s)=>{try{const a=Ec(o,Sh(this.params));this.beginBatch({type:"file",url:s});for(const u of a)this._propagate(u)}catch(a){throw new Error(`Cannot parse: ${s}: ${a.message}`)}};this.reset(),await Promise.all(n.map(o=>r(o).then(i))),this.complete()}}function AC(t){return"sequence"in t}class xC extends Gn{constructor(e){if(super(),this.sequence=e.sequence,!("start"in this.sequence))throw new Error("'start' is missing from sequence parameters!");if(!("stop"in this.sequence))throw new Error("'stop' is missing from sequence parameters!")}loadSynchronously(){const e=this.sequence.as||"data",n=this.sequence.step||1,r=this.sequence.stop;this.reset(),this.beginBatch({type:"file"});for(let i=this.sequence.start;i<r;i+=n)this._propagate({[e]:i});this.complete()}async load(){this.loadSynchronously()}}function yC(t){return"dynamicSource"in t}class bC extends Gn{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=Do(r)),this._propagate(n(r));this.complete()}async load(){}}function wC(t,e){if(dC(t))return new pC(t);if(gC(t))return new mC(t,e);if(AC(t))return new xC(t);if(yC(t))return new bC;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function vC(t){const e=Object.keys(t).filter(r=>typeof r=="string"),n=new Function("source","return { "+e.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
152
- `)+" };");return n.properties=e,n}class Uh extends J{get behavior(){return ut}constructor(){super();const e=n=>{const r=vC(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{_0(n)&&(this.handle=e),super.beginBatch(n)}}}function CC(t){return"name"in t}class Hh extends Gn{constructor(n,r){super();he(this,ni,void 0);this.provider=r,this.params=n}get identifier(){return this.params.name}updateDynamicData(n){Yn(this,ni,n),this.loadSynchronously()}loadSynchronously(){var i,o;const n=(o=(i=V(this,ni))!=null?i:this.provider(this.params.name))!=null?o:[];let r=s=>s;if(Array.isArray(n))n.length>0&&(r=Do(n[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const s of n)this._propagate(r(s));this.complete()}async load(){this.loadSynchronously()}}ni=new WeakMap;class Qh{constructor(){this._dataSourcesByHost=new Map,this._collectorsByHost=new Map,this._observers=new Map}get dataSources(){return[...new Set(this._dataSourcesByHost.values()).values()]}get collectors(){return[...this._collectorsByHost.values()]}addObserver(e,n){let r=this._observers.get(n);r||(r=[],this._observers.set(n,r)),r.push(e)}_relayObserverCallback(e,n){const r=this._observers.get(n);if(r)for(const i of r)i(e)}addDataSource(e,n){this._dataSourcesByHost.set(n,e)}findDataSourceByKey(e){return this._dataSourcesByHost.get(e)}findNamedDataSource(e){let n,r=[];for(const[i,o]of this._dataSourcesByHost.entries())if(o instanceof Hh&&e==o.identifier){if(n&&n!==o)throw new Error(`Found multiple instances of named data: ${e}. Data flow optimization is broken (it's a bug).`);n=o,r.push(i)}if(n)return{dataSource:n,hosts:r}}addCollector(e,n){this._collectorsByHost.set(n,e),e.observers.push(r=>this._relayObserverCallback(r,n))}findCollectorByKey(e){return this._collectorsByHost.get(e)}initialize(){for(const e of this.dataSources)e.visit(n=>n.initialize())}}function EC(t,e){const n=[];let r;const i=e!=null?e:new Qh,o=[];function s(f,l=()=>{}){if(!r)throw l()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(f),r=f,f}function a(f,l){return s(f,()=>new Error(`Cannot append a transform because no (inherited) data are available! ${l?JSON.stringify(l):""}`))}function u(f,l){for(const h of f){let p;try{p=hC(h,l)}catch(d){throw console.warn(d),new Error(`Cannot initialize "${h.type}" transform: ${d}`)}p.behavior&Ft&&a(new Uh),a(p)}}const c=f=>{if(n.push(r),f.spec.data){const l=Sv(f.spec.data)?f.getDynamicDataSource():CC(f.spec.data)?new Hh(f.spec.data,f.context.getNamedDataFromProvider):wC(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&u(f.spec.transform,f),f instanceof we){if(!r)throw new Error("A unit view has no (inherited) data source");const l=SC(f);if(l){o.push(l.rewrite);for(const p of l.transforms)a(p)}f.mark.isPickingParticipant()&&a(new Gh({type:"identifier"}));const h=new su({type:"collect",groupby:f.getFacetFields(),sort:DC(f,l==null?void 0:l.rewrittenEncoding)});s(h),i.addCollector(h,f)}Rh(f.spec)};return c.postOrder=f=>{r=n.pop()},t.visit(c),o.forEach(f=>f()),i}function SC(t){var o,s,a,u;const e=[],n={},r=[];for(const[c,f]of Object.entries(t.getEncoding())){const l=c;Nr(l)&&xf(f)&&r.push({channel:l,chromPosDef:f})}const i=di(r,c=>En(c.channel),c=>c.chromPosDef.chrom);for(const[c,f]of i.entries())for(const[l,h]of f.entries()){const p=[],d=[],g=[];for(const{channel:A,chromPosDef:m}of h){const b=E=>E.replace(/[^A-Za-z0-9_]/g,""),y=["_linearized_",b(m.chrom),"_",b(m.pos)].join(""),w={...(a=(s=(o=t.spec.encoding)==null?void 0:o[A])!=null?s:t.getEncoding()[A])!=null?a:{},field:y};delete w.chrom,delete w.pos,!w.type&&m.type&&(w.type=m.type),n[A]=w,p.push(m.pos),g.push((u=m.offset)!=null?u:0),d.push(y)}e.push(new kh({type:"linearizeGenomicCoordinate",channel:c,chrom:l,pos:p,offset:g,as:d},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding={...t.spec.encoding,...n},V0(t.mark,"encoding")}}:void 0}function DC(t,e){var r;const n={...t.getEncoding(),...e}.x;if(Le(n)&&(r=t.getScaleResolution("x"))!=null&&r.isZoomable()){if(Lr(n))return{field:n.field};if(!Rr(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function jh(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!jh(n,t))return!1;return!0}function au(t,e=!1){if(t instanceof su&&(e=!0),t instanceof Uh)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&au(n,e);return}t.behavior&ut&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)au(t.children[n],e||n<r-1)}function BC(t){const e=[...t._dataSourcesByHost.entries()],n=new Map;for(const r of e){const i=r[1];i.identifier&&!n.has(i.identifier)&&n.set(i.identifier,i)}t._dataSourcesByHost.clear();for(let[r,i]of e){const o=n.get(i.identifier);o&&(o.adoptChildrenOf(i),i=o),t.addDataSource(i,r)}}function FC(t){if(au(t),!jh(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function MC(t){for(const e of t.dataSources)FC(e);BC(t)}function IC(t){t.visit(n=>{n instanceof we&&n.resolve("scale")});const e=new Set;t.visit(n=>{for(const r of Object.values(n.resolutions.scale)){const i=r.name;if(i&&e.has(i))throw new Error(`The same scale name "${i}" occurs in multiple scale resolutions!`);e.add(i)}}),t.visit(n=>{n instanceof we&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function TC(t){for(const e of kr){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}async function PC(t,e,n){var s;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=Di({baseURL:e}),i=t.import.url,o=JSON.parse(await r.load(i).catch(a=>{throw new Error(`Could not load imported view spec: ${i}
153
- Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]*\//))==null?void 0:s[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function Vh(t){const e=[];t.visit(n=>{if(n instanceof Ch)return e.push(n),nh});for(const n of e){const r=n.context,i=await PC(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await Vh(o)}}class Yh{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Wh extends Yh{constructor(e,n){super(e),this.webGLHelper=n,this.buffer=[],this.coords=void 0,this.views=new Set}pushView(e,n){this.views.add(e),this.coords=n}renderMark(e,n){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const r=e.render(n);r&&this.buffer.push({mark:e,callback:r,coords:this.coords,clipRect:n.clipRect})}renderDeferred(){if(this.batch||this._buildBatch(),this.batch.length==0)return;const e=this.webGLHelper.gl,n=this.globalOptions.picking;e.bindFramebuffer(e.FRAMEBUFFER,n?this.webGLHelper._pickingBufferInfo.framebuffer:null),this.webGLHelper.clearAll();for(const r of this.views)r.onBeforeRender();for(const r of this.batch)r();n&&e.bindFramebuffer(e.FRAMEBUFFER,null)}_buildBatch(){this.batch=[];let e=!0,n=!0;const r=s=>()=>{e&&s()},i=s=>()=>{e&&n&&s()},o=di(this.buffer,s=>s.mark);for(const[s,a]of o.entries()){if(!s.isReady())continue;this.batch.push(()=>{e=s.unitView.getEffectiveOpacity()>0}),this.batch.push(...s.prepareRender(this.globalOptions).map(c=>r(c)));let u;for(const c of a){const f=c.coords;f.equals(u)||this.batch.push(r(()=>{n=s.setViewport(f,c.clipRect)})),this.batch.push(i(c.callback)),u=c.coords}}}}class LC extends Yh{constructor(...e){super({}),this.contexts=e}pushView(e,n){for(const r of this.contexts)r.pushView(e,n)}popView(e){for(const n of this.contexts)n.popView(e)}renderMark(e,n){for(const r of this.contexts)r.renderMark(e,n)}}class RC{constructor(e,n){this.point=e,this.uiEvent=n,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}}class kC{constructor(e,n){this.x=e,this.y=n}equals(e){return e?e===this||e.x===this.x&&e.y===this.y:!1}}const NC=t=>new Promise(e=>setTimeout(e,t));function zC(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n!=null&&n.aborted)return o("aborted");const s=performance.now(),a=s+(t.duration||1e3),u=typeof t.from=="number"?t.from:0,c=typeof t.to=="number"?t.to:1,f=t.easingFunction||(g=>g),l=g=>(g-s)/(a-s),h=g=>g*(c-u)+u,p=g=>Math.max(0,Math.min(1,g)),d=g=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(h(f(p(l(g))))),g<a?e(d):(t.onUpdate(h(f(1))),i()))};e(d)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):NC(t.delay).then(r):r()}class OC{constructor(e){this._renderCallback=e,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(e){this.cancelTransition(e),this.transitions.push(e),this.requestRender()}cancelTransition(e){const n=this.transitions.indexOf(e);n>=0&&this.transitions.splice(n,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;const n=this.transitions;this.transitions=[];let r;for(;r=n.shift();)r(e);this._renderCallback(e)}))}transition(e){return zC({requestAnimationFrame:n=>this.requestTransition(n),...e})}}function Xh(){const t=e=>e;return t.invert=e=>e,t.copy=Xh,t.invertRange=()=>{},t}class GC{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new uv(e);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.genomeSpy.spec.baseUrl)))}getGenome(e){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(e){const n=this.genomes.get(e);if(!n)throw new Error(`No genome with the name ${e} has been configured!`);return n}else{if(this.genomes.size>1)throw new Error("Cannot pick a default genome! More than one have been configured!");return this.genomes.values().next().value}}}const UC="data:image/png;base64,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",HC={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class QC{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Pt([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Va(Nh),texture:this._createTextureNow(UC)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(Z(r)&&(r=HC[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:e,style:n,weight:r};let o=this._fonts.get(i);return o||(o={metrics:void 0,texture:void 0},this._fonts.set(i,o),this._promises.push(this._loadFontEntry(o,i))),o}async _loadFontEntry(e,n){try{const r=await this._loadMetadata(n.family),i=VC(r,n),o=this.fontRepository+Zh(n.family)+"/"+i.replace(/\.\w+/,""),s=this._createTexture(o+".png"),a=this._loadFont(o+".json");e.texture=await s,e.metrics=await a}catch(r){console.log("Cannot load font. Using default.",r),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let n=this._fontPromises.get(e);return n||(n=fetch(e).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>Va(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=Zh(e);let r=this._metadataPromises.get(n);return r||(r=fetch(this.fontRepository+n+"/METADATA.pb").then(i=>{if(!i.ok)throw new Error("Could not load font metadata: "+i.status);return i}).then(i=>i.text()).then(i=>jC(i)).catch(i=>{console.warn(i)}),this._metadataPromises.set(n,r)),r}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){const n=this._webGLHelper.gl;return new Promise((r,i)=>{jr(n,{src:e,min:n.LINEAR},(o,s,a)=>{o?i(o):r(s)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((o,s)=>{r=jr(n,{src:e,min:n.LINEAR},(a,u,c)=>{a?s(a):o(u)})});return this._promises.push(i),r}}function Zh(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function jC(t){const e=t.split(`
154
- `),n=[];let r;for(const i of e)if(i.startsWith("fonts {")&&(r={name:void 0,style:void 0,weight:void 0,filename:void 0,post_script_name:void 0,full_name:void 0,copyright:void 0}),i.startsWith("}")&&(n.push(r),r=void 0),r){let o=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(o){const s=o[1];r[s]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const s=o[1];r[s]=+o[2]}}return n}function VC(t,e){let n,r=Number.POSITIVE_INFINITY;for(const i of t)if(e.family.localeCompare(i.name,void 0,{sensitivity:"accent"})==0&&e.style==i.style){const o=Math.abs(e.weight-i.weight);o<r&&(r=o,n=i)}return n==null?void 0:n.filename}function YC(t,e){const n=[];let r;for(const i of t.split(`
155
- `))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class WC{constructor(e,n){this.animator=e,this.disabled=!!n,this.damping=.015,this.acceleration=.3,this.accelerationThreshold=100,this.lowerLimit=.5,this.loop=!1,this.momentum=0,this.timestamp=0,this.callback=null,this._transitionCallback=this.animate.bind(this),this.clear()}clear(){this.momentum=0,this.timestamp=null,this.loop=null,this.callback=null}cancel(){this.loop&&(this.animator.cancelTransition(this._transitionCallback),this.clear())}setMomentum(e,n){if(this.disabled){n(e);return}e*this.momentum<0?this.momentum=0:Math.abs(e)>this.accelerationThreshold?this.momentum=vd([this.momentum,e],this.acceleration):this.momentum=e,this.callback=n,this.loop||this.animate()}animate(e){this.callback(this.momentum);const n=e-this.timestamp||0;this.timestamp=e;const r=Math.abs(this.momentum);this.momentum=Math.sign(this.momentum)*Math.max(0,r-((r*this.damping)**1.5+.04)*n),Math.abs(this.momentum)>this.lowerLimit?(this.loop=!0,this.animator.requestTransition(this._transitionCallback)):this.clear()}}function XC(t){const e={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in t){const o=i;!r.includes(i)&&n.includes(typeof t[o])&&(e[o]=t[o])}return e}function ZC(t,e,n=!0){let r,i=s=>{};return function(...a){return new Promise((u,c)=>{const f=()=>{clearTimeout(r),i=l=>{},u(t(...a))};n&&i("debounced"),clearTimeout(r),i=c,r=setTimeout(f,e)})}}const Kh=new Map;async function KC(t,e,n){var o;const r=t.symbol;let i=(o=Kh.get(r))!=null?o:await _C(t.symbol);return i?(Kh.set(r,i),rt`<div class="title"><strong>${i.name}</strong> ${i.description}</div><p class="summary">${i.summary}</p><p class="source">Source: NCBI RefSeq Gene</p>`):null}async function qC(t){console.log("Searching: "+t);const e={mode:"cors"},r=(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=${t}[GENE]&sort=relevance&retmode=json`,e).then(i=>i.json())).esearchresult.idlist[0];return r?(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gene&id=${r}&retmode=json`,e).then(s=>s.json())).result[r]:null}const JC=ZC(qC,500);function _C(t){return JC(t)}const $C=se(".4~r"),eE=se(".4~e");function tE(t){return t===null?rt`<span class="na">NA</span>`:Z(t)?t.substring(0,30):Number.isInteger(t)?""+t:me(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?eE(t):$C(t):ui(t)?t?"True":"False":"?"+typeof t+" "+t}async function nE(t,e,n){const r=(a,u)=>{var c;for(const[f,l]of Object.entries(e.encoders))if((c=l==null?void 0:l.accessor)!=null&&c.fields.includes(a))switch(f){case"color":case"fill":case"stroke":return rt`<span class="color-legend" style="${`background-color: ${l(u)}`}"></span>`}return""},i=rt`<table class="attributes">${Object.entries(t).filter(([a,u])=>!a.startsWith("_")).map(([a,u])=>rt`<tr><th>${a}</th><td>${tE(u)} ${r(a,t)}</td></tr>`)}</table>`,o=e.unitView.getTitleText(),s=o?rt`<div class="title"><strong>${o}</strong></div>`:"";return rt`${s}${i}`}class rE extends Lh{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}O("index",ds,["continuous"]),O("locus",tm,["continuous"]),O("null",Xh,[]),Cc("fasta",YC);class qh{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new Q1,this.viewFactory=new Uv,this.namedDataProviders=[],this.animator=new OC(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=o=>o.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new WC(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers={default:nE,refseqgene:KC,...(i=r.tooltipHandlers)!=null?i:{}},this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}updateNamedData(e,n){const r=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!r)throw new Error("No such named data source: "+e);r.dataSource.updateDynamicData(n);for(const i of r.hosts)i.visit(o=>{for(const s of Object.values(o.resolutions.scale))s.reconfigure()});this.animator.requestRender()}broadcast(e,n){const r={type:e,payload:n};this.viewRoot.visit(i=>i.handleBroadcast(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new rw(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize().addPadding(this.viewRoot.getOverhang()),n=r=>r.grow>0?void 0:r.px;return{width:n(e.width),height:n(e.height)}}}),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='<div class="message">Loading<span class="ellipsis">...</span></div>',this.container.appendChild(this.loadingMessageElement),this.tooltip=new wA(this.container),this.loadingMessageElement.querySelector(".message").addEventListener("transitionend",()=>{this.loadingMessageElement.style.display="none"})}destroy(){this.container.classList.remove("genome-spy"),this.container.classList.remove("loading");for(const[e,n]of this._keyboardListeners)for(const r of n)document.removeEventListener(e,r);for(this._glHelper.finalize();this.container.firstChild;)this.container.firstChild.remove()}async _prepareViewsAndData(){this.spec.genome&&(this.genomeStore=new GC(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Qh,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new QC(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(a,u)=>{document.addEventListener(a,u);let c=this._keyboardListeners.get(a);c||(c=[],this._keyboardListeners.set(a,c)),c.push(u)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:a=>e.viewFactory.isViewSpec(a),createView:function(a,u,c){return e.viewFactory.createView(a,n,u,c)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(a=>r.datasets[a]),this.viewRoot=n.createView(r,null,"viewRoot"),await Vh(this.viewRoot),(this.viewRoot instanceof we||this.viewRoot instanceof nn)&&(this.viewRoot=new rE(n,this.viewRoot)),IC(this.viewRoot),TC(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof we&&i.push(a)});const o=EC(this.viewRoot,n.dataFlow);MC(o),this.broadcast("dataFlowBuilt",o),o.dataSources.forEach(a=>console.log(a.subtreeToString())),i.forEach(a=>a.mark.initializeEncoders());const s=Promise.all(i.map(a=>a.mark.initializeGraphics()));for(const a of i)o.addObserver(u=>{a.mark.initializeData(),a.mark.updateGraphicsData()},a);await n.fontManager.waitUntilReady(),o.initialize(),await Promise.all(o.dataSources.map(a=>a.load())),this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))u.reconfigure()}),this.broadcast("dataLoaded"),await s,this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))this._glHelper.createRangeTexture(u)});for(const a of i)a.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(a=>vo(a,"size")),this._glHelper.invalidateSize()}async launch(){try{return this._prepareContainer(),await this._prepareViewsAndData(),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),this._glHelper.addEventListener("resize",()=>{this.computeLayout(),this.renderAll()}),!0}catch(e){const n=`${e.view?`At "${e.view.getPathString()}": `:""}${e.toString()}`;return console.error(e.stack),iE(this.container,n),!1}finally{this.container.classList.remove("loading"),window.setTimeout(()=>{this.loadingMessageElement.style.display="none"},2e3)}}registerMouseEvents(){const e=this._glHelper.canvas,n=r=>{var i;if(r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const o=e.getBoundingClientRect(),s=new kC(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=u=>{this.viewRoot.propagateInteractionEvent(new RC(s,u)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(s.x,s.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const u=r;if(Math.abs(u.deltaX)>Math.abs(u.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const c=XC(u);this._wheelInertia.setMomentum(u.deltaY*(u.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",{...c,deltaMode:0,deltaX:0,deltaY:f});a(l)}),u.preventDefault();return}}if(r.type=="click"){const u=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(c=>c.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(c=>c(u))}a(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>e.addEventListener(r,n)),e.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),e.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(e,n){var o;const r=this._glHelper.readPickingPixel(e,n),i=r[0]|r[1]<<8|r[2]<<16;if(i==0){this._currentHover=null;return}if(i!==((o=this._currentHover)==null?void 0:o.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(s=>{if(s instanceof we){if(s.mark.isPickingParticipant()){const a=s.mark.encoders.uniqueId.accessor;s.getCollector().visitData(u=>{a(u)==i&&(this._currentHover={mark:s.mark,datum:u,uniqueId:i})})}if(this._currentHover)return Kr}}),this._currentHover){const s=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async a=>{var c;if(!s.isPickingParticipant())return;const u=s.properties.tooltip;if(u!==null){const f=(c=u==null?void 0:u.handler)!=null?c:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(a,s,u==null?void 0:u.params)}})}}updateTooltip(e,n){if(!this._tooltipUpdateRequested||!e)this.tooltip.updateWithDatum(e,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const e=this.viewRoot;if(!e)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new Wh({picking:!1},this._glHelper),this._pickingContext=new Wh({picking:!0},this._glHelper),e.render(new LC(this._renderingContext,this._pickingContext),On.create(0,0,n.width,n.height)),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){!this._dirtyPickingBuffer||(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof we&&n.getAccessor("search")&&e.push(n)}),e}getNamedScaleResolutions(){const e=new Map;return this.viewRoot.visit(n=>{for(const r of Object.values(n.resolutions.scale))r.name&&e.set(r.name,r)}),e}}function iE(t,e){const n=document.createElement("div");n.className="message-box";const r=document.createElement("div");r.textContent=e,n.appendChild(r),t.appendChild(n)}const oE="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";async function sE(t,e,n={}){var o,s,a;let r;if(Z(t)){if(r=document.querySelector(t),!r)throw new Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)r=t;else throw new Error(`Invalid element: ${t}`);let i;try{const u=ke(e)?e:await Jh(e);if((o=u.baseUrl)!=null||(u.baseUrl=""),(s=u.width)!=null||(u.width="container"),(a=u.padding)!=null||(u.padding=10),r==document.body){const c=document.createElement("div");c.style.position="fixed",c.style.inset="0",c.style.overflow="hidden",r.appendChild(c),r=c}i=new qh(r,u,n),aE(i,n),await i.launch()}catch(u){r.innerText=u.toString(),console.error(u)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(u,c){const f=i._eventListeners;let l=f.get(u);l||(l=new Set,f.set(u,l)),l.add(c)},removeEventListener(u,c){var l;(l=i._eventListeners.get(u))==null||l.delete(c)},getScaleResolutionByName(u){return i.getNamedScaleResolutions().get(u)},updateNamedData:i.updateNamedData.bind(i)}}function aE(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function Jh(t){let e;try{e=JSON.parse(await Di().load(t))}catch(n){throw new Error(`Could not load or parse configuration: ${t}, reason: ${n.message}`)}if(!e.baseUrl){const n=t.match(/^[^?#]*\//);e.baseUrl=n&&n[0]||"./"}return e}R.GenomeSpy=qh,R.embed=sE,R.html=rt,R.icon=oE,R.loadSpec=Jh,Object.defineProperties(R,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
151
+ };`)},f=h=>{s||c(h);for(const[p,d]of s){const g=u(h,p);for(let m=0;m<d.length;m++)g[r[m]]=h[d[m]];this._propagate(g)}},l=h=>{c(h),f(h),this.handle=f};this.handle=l,this.beginBatch=h=>{_0(h)&&(this.handle=l),super.beginBatch(h)}}}class uC extends q{get behavior(){return Bt}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const e=this.params,n=e.as||["y0","y1"],r=e.sort?yu(e.sort.field,e.sort.order):void 0,i=e.field?O(e.field):()=>1,o=e.groupby.map(f=>O(f)),s=Xd(this.buffer,f=>o.map(l=>l(f)).join()).map(f=>f[1]);let a=f=>!0;if(e.baseField){const f=O(e.baseField);a=l=>f(l)!==null}let u,c;switch(e.offset){case"normalize":u=(f,l)=>f/l,c=(f,l)=>pi(f,l);break;case"center":u=(f,l)=>f-l/2,c=(f,l)=>pi(f,l);break;case"information":{const f=Math.log2(e.cardinality??4);u=(l,h)=>l/h,c=(l,h)=>{const d=pi(l,y=>+!a(y)),g=pi(l,h),m=g-d;let A=0;for(let y=0;y<l.length;y++){const b=l[y];if(a(b)){const C=h(b)/m;A-=C*Math.log2(C)}}return m/(f-(A+0))*(m/g)}}break;default:u=(f,l)=>f,c=(f,l)=>1}for(const f of s){r&&f.sort(r);const l=c(f,i);let h=0;for(const p of f){const d=h+i(p);a(p)&&(p[n[0]]=u(h,l),p[n[1]]=u(d,l),this._propagate(p),h=d)}}super.complete()}}class cC extends q{get behavior(){return at}constructor(e){super();const n=O(e.field??"sequence"),[r,i]=e.as??["pos","sequence"];this.handle=o=>{const s=Object.assign({},o,{[i]:"",[r]:0}),a=n(o);for(let u=0;u<a.length;u++){const c=Object.assign({},s);c[r]=u,c[i]=a.charAt(u),this._propagate(c)}}}}class lC extends q{get behavior(){return at}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const n=this.params.groupby,r=n.map(o=>O(o)),i=hi(this.buffer,...r);for(const[o,s]of ou(i)){const a={count:s.length};for(let u=0;u<n.length;u++)a[n[u]]=o[u];this._propagate(a)}super.complete()}}const fC="_uniqueId",zh=1e4,Oh=[null];class Gh extends q{get behavior(){return Bt}constructor(e){super(),this.params=e,this.as=e.as??fC,this._blocks=[],this._usedBlocks=0,this._id=-1}initialize(){}reset(){super.reset(),this._usedBlocks=0,this._id=-1}handle(e){e[this.as]=this._nextId(),this._propagate(e)}_nextId(){return++this._id%zh==0&&(this._id=this._getBlock()*zh),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Oh.length;return Oh[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const hC={aggregate:lC,collect:su,coverage:Yv,filterScoredLabels:Zv,filter:Kv,flattenCompressedExons:_v,flattenDelimited:$v,flattenSequence:cC,formula:tC,identifier:Gh,linearizeGenomicCoordinate:kh,measureText:nC,pileup:iC,project:oC,regexExtract:sC,regexFold:aC,sample:$0,stack:uC};function dC(t,e){const n=hC[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function pC(t){return"values"in t}class gC extends On{constructor(e){var n;if(super(),this.params=e,typeof e.values=="string"&&!((n=e==null?void 0:e.format)!=null&&n.type))throw new Error("Data format type (csv, dsv, ...) must be specified if a string is provided!")}loadSynchronously(){const e=this.params.values;let n=[],r=i=>i;if(Array.isArray(e))e.length>0&&(n=e,r=So(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=Ec(e,Sh(this.params));else throw new Error('"values" in data configuration is not an array, object, or a string!');this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}function mC(t){return"url"in t}class AC extends On{constructor(e,n){super(),this.params=e,this.baseUrl=n}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}async load(){const e=this.params.url,n=Array.isArray(e)?e:[e],r=async o=>Si({baseURL:this.baseUrl}).load(o).catch(s=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${s.message}`)}),i=(o,s)=>{try{const a=Ec(o,Sh(this.params));this.beginBatch({type:"file",url:s});for(const u of a)this._propagate(u)}catch(a){throw new Error(`Cannot parse: ${s}: ${a.message}`)}};this.reset(),await Promise.all(n.map(o=>r(o).then(i))),this.complete()}}function xC(t){return"sequence"in t}class yC extends On{constructor(e){if(super(),this.sequence=e.sequence,!("start"in this.sequence))throw new Error("'start' is missing from sequence parameters!");if(!("stop"in this.sequence))throw new Error("'stop' is missing from sequence parameters!")}loadSynchronously(){const e=this.sequence.as||"data",n=this.sequence.step||1,r=this.sequence.stop;this.reset(),this.beginBatch({type:"file"});for(let i=this.sequence.start;i<r;i+=n)this._propagate({[e]:i});this.complete()}async load(){this.loadSynchronously()}}function bC(t){return"dynamicSource"in t}class wC extends On{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=So(r)),this._propagate(n(r));this.complete()}async load(){}}function vC(t,e){if(pC(t))return new gC(t);if(mC(t))return new AC(t,e);if(xC(t))return new yC(t);if(bC(t))return new wC;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function CC(t){const e=Object.keys(t).filter(r=>typeof r=="string"),n=new Function("source","return { "+e.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
152
+ `)+" };");return n.properties=e,n}class Uh extends q{get behavior(){return at}constructor(){super();const e=n=>{const r=CC(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{_0(n)&&(this.handle=e),super.beginBatch(n)}}}function EC(t){return"name"in t}class Hh extends On{constructor(n,r){super();he(this,ti,void 0);this.provider=r,this.params=n}get identifier(){return this.params.name}updateDynamicData(n){Yn(this,ti,n),this.loadSynchronously()}loadSynchronously(){const n=Q(this,ti)??this.provider(this.params.name)??[];let r=i=>i;if(Array.isArray(n))n.length>0&&(r=So(n[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}ti=new WeakMap;class Qh{constructor(){this._dataSourcesByHost=new Map,this._collectorsByHost=new Map,this._observers=new Map}get dataSources(){return[...new Set(this._dataSourcesByHost.values()).values()]}get collectors(){return[...this._collectorsByHost.values()]}addObserver(e,n){let r=this._observers.get(n);r||(r=[],this._observers.set(n,r)),r.push(e)}_relayObserverCallback(e,n){const r=this._observers.get(n);if(r)for(const i of r)i(e)}addDataSource(e,n){this._dataSourcesByHost.set(n,e)}findDataSourceByKey(e){return this._dataSourcesByHost.get(e)}findNamedDataSource(e){let n,r=[];for(const[i,o]of this._dataSourcesByHost.entries())if(o instanceof Hh&&e==o.identifier){if(n&&n!==o)throw new Error(`Found multiple instances of named data: ${e}. Data flow optimization is broken (it's a bug).`);n=o,r.push(i)}if(n)return{dataSource:n,hosts:r}}addCollector(e,n){this._collectorsByHost.set(n,e),e.observers.push(r=>this._relayObserverCallback(r,n))}findCollectorByKey(e){return this._collectorsByHost.get(e)}initialize(){for(const e of this.dataSources)e.visit(n=>n.initialize())}}function SC(t,e){const n=[];let r;const i=e??new Qh,o=[];function s(f,l=()=>{}){if(!r)throw l()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(f),r=f,f}function a(f,l){return s(f,()=>new Error(`Cannot append a transform because no (inherited) data are available! ${l?JSON.stringify(l):""}`))}function u(f,l){for(const h of f){let p;try{p=dC(h,l)}catch(d){throw console.warn(d),new Error(`Cannot initialize "${h.type}" transform: ${d}`)}p.behavior&Bt&&a(new Uh),a(p)}}const c=f=>{if(n.push(r),f.spec.data){const l=Dv(f.spec.data)?f.getDynamicDataSource():EC(f.spec.data)?new Hh(f.spec.data,f.context.getNamedDataFromProvider):vC(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&u(f.spec.transform,f),f instanceof we){if(!r)throw new Error("A unit view has no (inherited) data source");const l=DC(f);if(l){o.push(l.rewrite);for(const p of l.transforms)a(p)}f.mark.isPickingParticipant()&&a(new Gh({type:"identifier"}));const h=new su({type:"collect",groupby:f.getFacetFields(),sort:BC(f,l==null?void 0:l.rewrittenEncoding)});s(h),i.addCollector(h,f)}Lh(f.spec)};return c.postOrder=f=>{r=n.pop()},t.visit(c),o.forEach(f=>f()),i}function DC(t){var o;const e=[],n={},r=[];for(const[s,a]of Object.entries(t.getEncoding())){const u=s;kr(u)&&xf(a)&&r.push({channel:u,chromPosDef:a})}const i=hi(r,s=>Cn(s.channel),s=>s.chromPosDef.chrom);for(const[s,a]of i.entries())for(const[u,c]of a.entries()){const f=[],l=[],h=[];for(const{channel:p,chromPosDef:d}of c){const g=y=>y.replace(/[^A-Za-z0-9_]/g,""),m=["_linearized_",g(d.chrom),"_",g(d.pos)].join(""),A={...((o=t.spec.encoding)==null?void 0:o[p])??t.getEncoding()[p]??{},field:m};delete A.chrom,delete A.pos,!A.type&&d.type&&(A.type=d.type),n[p]=A,f.push(d.pos),h.push(d.offset??0),l.push(m)}e.push(new kh({type:"linearizeGenomicCoordinate",channel:s,chrom:u,pos:f,offset:h,as:l},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding={...t.spec.encoding,...n},V0(t.mark,"encoding")}}:void 0}function BC(t,e){var r;const n={...t.getEncoding(),...e}.x;if(Pe(n)&&(r=t.getScaleResolution("x"))!=null&&r.isZoomable()){if(Pr(n))return{field:n.field};if(!Rr(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function jh(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!jh(n,t))return!1;return!0}function au(t,e=!1){if(t instanceof su&&(e=!0),t instanceof Uh)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&au(n,e);return}t.behavior&at&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)au(t.children[n],e||n<r-1)}function FC(t){const e=[...t._dataSourcesByHost.entries()],n=new Map;for(const r of e){const i=r[1];i.identifier&&!n.has(i.identifier)&&n.set(i.identifier,i)}t._dataSourcesByHost.clear();for(let[r,i]of e){const o=n.get(i.identifier);o&&(o.adoptChildrenOf(i),i=o),t.addDataSource(i,r)}}function MC(t){if(au(t),!jh(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function IC(t){for(const e of t.dataSources)MC(e);FC(t)}function TC(t){t.visit(n=>{n instanceof we&&n.resolve("scale")});const e=new Set;t.visit(n=>{for(const r of Object.values(n.resolutions.scale)){const i=r.name;if(i&&e.has(i))throw new Error(`The same scale name "${i}" occurs in multiple scale resolutions!`);e.add(i)}}),t.visit(n=>{n instanceof we&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function PC(t){for(const e of Lr){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}async function RC(t,e,n){var s;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=Si({baseURL:e}),i=t.import.url,o=JSON.parse(await r.load(i).catch(a=>{throw new Error(`Could not load imported view spec: ${i}
153
+ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]*\//))==null?void 0:s[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function Vh(t){const e=[];t.visit(n=>{if(n instanceof Ch)return e.push(n),nh});for(const n of e){const r=n.context,i=await RC(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await Vh(o)}}class Yh{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Wh extends Yh{constructor(e,n){super(e),this.webGLHelper=n,this.buffer=[],this.coords=void 0,this.views=new Set}pushView(e,n){this.views.add(e),this.coords=n}renderMark(e,n){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const r=e.render(n);r&&this.buffer.push({mark:e,callback:r,coords:this.coords,clipRect:n.clipRect})}renderDeferred(){if(this.batch||this._buildBatch(),this.batch.length==0)return;const e=this.webGLHelper.gl,n=this.globalOptions.picking;e.bindFramebuffer(e.FRAMEBUFFER,n?this.webGLHelper._pickingBufferInfo.framebuffer:null),this.webGLHelper.clearAll();for(const r of this.views)r.onBeforeRender();for(const r of this.batch)r();n&&e.bindFramebuffer(e.FRAMEBUFFER,null)}_buildBatch(){this.batch=[];let e=!0,n=!0;const r=s=>()=>{e&&s()},i=s=>()=>{e&&n&&s()},o=hi(this.buffer,s=>s.mark);for(const[s,a]of o.entries()){if(!s.isReady())continue;this.batch.push(()=>{e=s.unitView.getEffectiveOpacity()>0}),this.batch.push(...s.prepareRender(this.globalOptions).map(c=>r(c)));let u;for(const c of a){const f=c.coords;f.equals(u)||this.batch.push(r(()=>{n=s.setViewport(f,c.clipRect)})),this.batch.push(i(c.callback)),u=c.coords}}}}class LC extends Yh{constructor(...e){super({}),this.contexts=e}pushView(e,n){for(const r of this.contexts)r.pushView(e,n)}popView(e){for(const n of this.contexts)n.popView(e)}renderMark(e,n){for(const r of this.contexts)r.renderMark(e,n)}}class kC{constructor(e,n){this.point=e,this.uiEvent=n,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}}class NC{constructor(e,n){this.x=e,this.y=n}equals(e){return e?e===this||e.x===this.x&&e.y===this.y:!1}}const zC=t=>new Promise(e=>setTimeout(e,t));function OC(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n!=null&&n.aborted)return o("aborted");const s=performance.now(),a=s+(t.duration||1e3),u=typeof t.from=="number"?t.from:0,c=typeof t.to=="number"?t.to:1,f=t.easingFunction||(g=>g),l=g=>(g-s)/(a-s),h=g=>g*(c-u)+u,p=g=>Math.max(0,Math.min(1,g)),d=g=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(h(f(p(l(g))))),g<a?e(d):(t.onUpdate(h(f(1))),i()))};e(d)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):zC(t.delay).then(r):r()}class GC{constructor(e){this._renderCallback=e,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(e){this.cancelTransition(e),this.transitions.push(e),this.requestRender()}cancelTransition(e){const n=this.transitions.indexOf(e);n>=0&&this.transitions.splice(n,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;const n=this.transitions;this.transitions=[];let r;for(;r=n.shift();)r(e);this._renderCallback(e)}))}transition(e){return OC({requestAnimationFrame:n=>this.requestTransition(n),...e})}}function Xh(){const t=e=>e;return t.invert=e=>e,t.copy=Xh,t.invertRange=()=>{},t}class UC{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new cv(e);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.genomeSpy.spec.baseUrl)))}getGenome(e){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(e){const n=this.genomes.get(e);if(!n)throw new Error(`No genome with the name ${e} has been configured!`);return n}else{if(this.genomes.size>1)throw new Error("Cannot pick a default genome! More than one have been configured!");return this.genomes.values().next().value}}}const HC="data:image/png;base64,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",QC={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class jC{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Tt([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Va(Nh),texture:this._createTextureNow(HC)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(W(r)&&(r=QC[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:e,style:n,weight:r};let o=this._fonts.get(i);return o||(o={metrics:void 0,texture:void 0},this._fonts.set(i,o),this._promises.push(this._loadFontEntry(o,i))),o}async _loadFontEntry(e,n){try{const r=await this._loadMetadata(n.family),i=YC(r,n),o=this.fontRepository+Zh(n.family)+"/"+i.replace(/\.\w+/,""),s=this._createTexture(o+".png"),a=this._loadFont(o+".json");e.texture=await s,e.metrics=await a}catch(r){console.log("Cannot load font. Using default.",r),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let n=this._fontPromises.get(e);return n||(n=fetch(e).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>Va(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=Zh(e);let r=this._metadataPromises.get(n);return r||(r=fetch(this.fontRepository+n+"/METADATA.pb").then(i=>{if(!i.ok)throw new Error("Could not load font metadata: "+i.status);return i}).then(i=>i.text()).then(i=>VC(i)).catch(i=>{console.warn(i)}),this._metadataPromises.set(n,r)),r}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){const n=this._webGLHelper.gl;return new Promise((r,i)=>{Qr(n,{src:e,min:n.LINEAR},(o,s,a)=>{o?i(o):r(s)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((o,s)=>{r=Qr(n,{src:e,min:n.LINEAR},(a,u,c)=>{a?s(a):o(u)})});return this._promises.push(i),r}}function Zh(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function VC(t){const e=t.split(`
154
+ `),n=[];let r;for(const i of e)if(i.startsWith("fonts {")&&(r={name:void 0,style:void 0,weight:void 0,filename:void 0,post_script_name:void 0,full_name:void 0,copyright:void 0}),i.startsWith("}")&&(n.push(r),r=void 0),r){let o=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(o){const s=o[1];r[s]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const s=o[1];r[s]=+o[2]}}return n}function YC(t,e){let n,r=Number.POSITIVE_INFINITY;for(const i of t)if(e.family.localeCompare(i.name,void 0,{sensitivity:"accent"})==0&&e.style==i.style){const o=Math.abs(e.weight-i.weight);o<r&&(r=o,n=i)}return n==null?void 0:n.filename}function WC(t,e){const n=[];let r;for(const i of t.split(`
155
+ `))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class XC{constructor(e,n){this.animator=e,this.disabled=!!n,this.damping=.015,this.acceleration=.3,this.accelerationThreshold=100,this.lowerLimit=.5,this.loop=!1,this.momentum=0,this.timestamp=0,this.callback=null,this._transitionCallback=this.animate.bind(this),this.clear()}clear(){this.momentum=0,this.timestamp=null,this.loop=null,this.callback=null}cancel(){this.loop&&(this.animator.cancelTransition(this._transitionCallback),this.clear())}setMomentum(e,n){if(this.disabled){n(e);return}e*this.momentum<0?this.momentum=0:Math.abs(e)>this.accelerationThreshold?this.momentum=Cd([this.momentum,e],this.acceleration):this.momentum=e,this.callback=n,this.loop||this.animate()}animate(e){this.callback(this.momentum);const n=e-this.timestamp||0;this.timestamp=e;const r=Math.abs(this.momentum);this.momentum=Math.sign(this.momentum)*Math.max(0,r-((r*this.damping)**1.5+.04)*n),Math.abs(this.momentum)>this.lowerLimit?(this.loop=!0,this.animator.requestTransition(this._transitionCallback)):this.clear()}}function ZC(t){const e={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in t){const o=i;!r.includes(i)&&n.includes(typeof t[o])&&(e[o]=t[o])}return e}function KC(t,e,n=!0){let r,i=s=>{};return function(...a){return new Promise((u,c)=>{const f=()=>{clearTimeout(r),i=l=>{},u(t(...a))};n&&i("debounced"),clearTimeout(r),i=c,r=setTimeout(f,e)})}}const Kh=new Map;async function qC(t,e,n){const r=t.symbol;let i=Kh.get(r)??await $C(t.symbol);return i?(Kh.set(r,i),nt`<div class="title"><strong>${i.name}</strong> ${i.description}</div><p class="summary">${i.summary}</p><p class="source">Source: NCBI RefSeq Gene</p>`):null}async function JC(t){console.log("Searching: "+t);const e={mode:"cors"},r=(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=${t}[GENE]&sort=relevance&retmode=json`,e).then(i=>i.json())).esearchresult.idlist[0];return r?(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gene&id=${r}&retmode=json`,e).then(s=>s.json())).result[r]:null}const _C=KC(JC,500);function $C(t){return _C(t)}const eE=oe(".4~r"),tE=oe(".4~e");function nE(t){return t===null?nt`<span class="na">NA</span>`:W(t)?t.substring(0,30):Number.isInteger(t)?""+t:me(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?tE(t):eE(t):ai(t)?t?"True":"False":"?"+typeof t+" "+t}async function rE(t,e,n){const r=(a,u)=>{var c;for(const[f,l]of Object.entries(e.encoders))if((c=l==null?void 0:l.accessor)!=null&&c.fields.includes(a))switch(f){case"color":case"fill":case"stroke":return nt`<span class="color-legend" style="${`background-color: ${l(u)}`}"></span>`}return""},i=nt`<table class="attributes">${Object.entries(t).filter(([a,u])=>!a.startsWith("_")).map(([a,u])=>nt`<tr><th>${a}</th><td>${nE(u)} ${r(a,t)}</td></tr>`)}</table>`,o=e.unitView.getTitleText(),s=o?nt`<div class="title"><strong>${o}</strong></div>`:"";return nt`${s}${i}`}class iE extends Rh{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}N("index",ds,["continuous"]),N("locus",nm,["continuous"]),N("null",Xh,[]),Cc("fasta",WC);class qh{constructor(e,n,r={}){this.container=e,this.spec=n,this.accessorFactory=new j1,this.viewFactory=new Hv,this.namedDataProviders=[],this.animator=new GC(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=i=>i.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new XC(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers={default:rE,refseqgene:qC,...r.tooltipHandlers??{}},this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}updateNamedData(e,n){const r=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!r)throw new Error("No such named data source: "+e);r.dataSource.updateDynamicData(n);for(const i of r.hosts)i.visit(o=>{for(const s of Object.values(o.resolutions.scale))s.reconfigure()});this.animator.requestRender()}broadcast(e,n){const r={type:e,payload:n};this.viewRoot.visit(i=>i.handleBroadcast(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new iw(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize().addPadding(this.viewRoot.getOverhang()),n=r=>r.grow>0?void 0:r.px;return{width:n(e.width),height:n(e.height)}}}),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='<div class="message">Loading<span class="ellipsis">...</span></div>',this.container.appendChild(this.loadingMessageElement),this.tooltip=new vA(this.container),this.loadingMessageElement.querySelector(".message").addEventListener("transitionend",()=>{this.loadingMessageElement.style.display="none"})}destroy(){this.container.classList.remove("genome-spy"),this.container.classList.remove("loading");for(const[e,n]of this._keyboardListeners)for(const r of n)document.removeEventListener(e,r);for(this._glHelper.finalize();this.container.firstChild;)this.container.firstChild.remove()}async _prepareViewsAndData(){this.spec.genome&&(this.genomeStore=new UC(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Qh,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new jC(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(a,u)=>{document.addEventListener(a,u);let c=this._keyboardListeners.get(a);c||(c=[],this._keyboardListeners.set(a,c)),c.push(u)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:a=>e.viewFactory.isViewSpec(a),createView:function(a,u,c){return e.viewFactory.createView(a,n,u,c)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(a=>r.datasets[a]),this.viewRoot=n.createView(r,null,"viewRoot"),await Vh(this.viewRoot),(this.viewRoot instanceof we||this.viewRoot instanceof tn)&&(this.viewRoot=new iE(n,this.viewRoot)),TC(this.viewRoot),PC(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof we&&i.push(a)});const o=SC(this.viewRoot,n.dataFlow);IC(o),this.broadcast("dataFlowBuilt",o),o.dataSources.forEach(a=>console.log(a.subtreeToString())),i.forEach(a=>a.mark.initializeEncoders());const s=Promise.all(i.map(a=>a.mark.initializeGraphics()));for(const a of i)o.addObserver(u=>{a.mark.initializeData(),a.mark.updateGraphicsData()},a);await n.fontManager.waitUntilReady(),o.initialize(),await Promise.all(o.dataSources.map(a=>a.load())),this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))u.reconfigure()}),this.broadcast("dataLoaded"),await s,this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))this._glHelper.createRangeTexture(u)});for(const a of i)a.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(a=>wo(a,"size")),this._glHelper.invalidateSize()}async launch(){try{return this._prepareContainer(),await this._prepareViewsAndData(),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),this._glHelper.addEventListener("resize",()=>{this.computeLayout(),this.renderAll()}),!0}catch(e){const n=`${e.view?`At "${e.view.getPathString()}": `:""}${e.toString()}`;return console.error(e.stack),oE(this.container,n),!1}finally{this.container.classList.remove("loading"),window.setTimeout(()=>{this.loadingMessageElement.style.display="none"},2e3)}}registerMouseEvents(){const e=this._glHelper.canvas,n=r=>{var i;if(r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const o=e.getBoundingClientRect(),s=new NC(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=u=>{this.viewRoot.propagateInteractionEvent(new kC(s,u)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(s.x,s.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const u=r;if(Math.abs(u.deltaX)>Math.abs(u.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const c=ZC(u);this._wheelInertia.setMomentum(u.deltaY*(u.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",{...c,deltaMode:0,deltaX:0,deltaY:f});a(l)}),u.preventDefault();return}}if(r.type=="click"){const u=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(c=>c.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(c=>c(u))}a(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>e.addEventListener(r,n)),e.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),e.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(e,n){var o;const r=this._glHelper.readPickingPixel(e,n),i=r[0]|r[1]<<8|r[2]<<16;if(i==0){this._currentHover=null;return}if(i!==((o=this._currentHover)==null?void 0:o.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(s=>{if(s instanceof we){if(s.mark.isPickingParticipant()){const a=s.mark.encoders.uniqueId.accessor;s.getCollector().visitData(u=>{a(u)==i&&(this._currentHover={mark:s.mark,datum:u,uniqueId:i})})}if(this._currentHover)return Zr}}),this._currentHover){const s=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async a=>{if(!s.isPickingParticipant())return;const u=s.properties.tooltip;if(u!==null){const c=(u==null?void 0:u.handler)??"default",f=this.tooltipHandlers[c];if(!f)throw new Error("No such tooltip handler: "+c);return f(a,s,u==null?void 0:u.params)}})}}updateTooltip(e,n){if(!this._tooltipUpdateRequested||!e)this.tooltip.updateWithDatum(e,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const e=this.viewRoot;if(!e)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new Wh({picking:!1},this._glHelper),this._pickingContext=new Wh({picking:!0},this._glHelper),e.render(new LC(this._renderingContext,this._pickingContext),zn.create(0,0,n.width,n.height)),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){this._dirtyPickingBuffer&&(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof we&&n.getAccessor("search")&&e.push(n)}),e}getNamedScaleResolutions(){const e=new Map;return this.viewRoot.visit(n=>{for(const r of Object.values(n.resolutions.scale))r.name&&e.set(r.name,r)}),e}}function oE(t,e){const n=document.createElement("div");n.className="message-box";const r=document.createElement("div");r.textContent=e,n.appendChild(r),t.appendChild(n)}const sE="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";async function aE(t,e,n={}){let r;if(W(t)){if(r=document.querySelector(t),!r)throw new Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)r=t;else throw new Error(`Invalid element: ${t}`);let i;try{const o=Le(e)?e:await Jh(e);if(o.baseUrl??(o.baseUrl=""),o.width??(o.width="container"),o.padding??(o.padding=10),r==document.body){const s=document.createElement("div");s.style.position="fixed",s.style.inset="0",s.style.overflow="hidden",r.appendChild(s),r=s}i=new qh(r,o,n),uE(i,n),await i.launch()}catch(o){r.innerText=o.toString(),console.error(o)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(o,s){const a=i._eventListeners;let u=a.get(o);u||(u=new Set,a.set(o,u)),u.add(s)},removeEventListener(o,s){var u;(u=i._eventListeners.get(o))==null||u.delete(s)},getScaleResolutionByName(o){return i.getNamedScaleResolutions().get(o)},updateNamedData:i.updateNamedData.bind(i)}}function uE(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function Jh(t){let e;try{e=JSON.parse(await Si().load(t))}catch(n){throw new Error(`Could not load or parse configuration: ${t}, reason: ${n.message}`)}if(!e.baseUrl){const n=t.match(/^[^?#]*\//);e.baseUrl=n&&n[0]||"./"}return e}P.GenomeSpy=qh,P.embed=aE,P.html=nt,P.icon=sE,P.loadSpec=Jh,Object.defineProperty(P,Symbol.toStringTag,{value:"Module"})});