@genome-spy/app 0.18.1 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
- var dT=Object.defineProperty,pT=Object.defineProperties;var gT=Object.getOwnPropertyDescriptors;var ta=Object.getOwnPropertySymbols;var uy=Object.prototype.hasOwnProperty,ly=Object.prototype.propertyIsEnumerable;var cy=(Y,q,be)=>q in Y?dT(Y,q,{enumerable:!0,configurable:!0,writable:!0,value:be}):Y[q]=be,T=(Y,q)=>{for(var be in q||(q={}))uy.call(q,be)&&cy(Y,be,q[be]);if(ta)for(var be of ta(q))ly.call(q,be)&&cy(Y,be,q[be]);return Y},F=(Y,q)=>pT(Y,gT(q));var fy=(Y,q)=>{var be={};for(var Ve in Y)uy.call(Y,Ve)&&q.indexOf(Ve)<0&&(be[Ve]=Y[Ve]);if(Y!=null&&ta)for(var Ve of ta(Y))q.indexOf(Ve)<0&&ly.call(Y,Ve)&&(be[Ve]=Y[Ve]);return be};(function(Y,q){typeof exports=="object"&&typeof module!="undefined"?q(exports):typeof define=="function"&&define.amd?define(["exports"],q):(Y=typeof globalThis!="undefined"?globalThis:Y||self,q(Y.genomeSpyApp={}))})(this,function(Y){"use strict";function q(t,e,n){return t.fields=e||[],t.fname=n,t}function be(t){return t==null?null:t.fname}function Ve(t){return t==null?null:t.fields}function hy(t){return t.length===1?dy(t[0]):py(t)}const dy=t=>function(e){return e[t]},py=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function re(t){throw Error(t)}function gy(t){const e=[],n=t.length;let r=null,i=0,o="",s,a,c;t=t+"";function u(){e.push(o+t.substring(s,a)),o="",s=a+1}for(s=a=0;a<n;++a)if(c=t[a],c==="\\")o+=t.substring(s,a),o+=t.substring(++a,++a),s=a;else if(c===r)u(),r=null,i=-1;else{if(r)continue;s===i&&c==='"'||s===i&&c==="'"?(s=a+1,r=c):c==="."&&!i?a>s?u():s=a+1:c==="["?(a>s&&u(),i=s=a+1):c==="]"&&(i||re("Access path missing open bracket: "+t),i>0&&u(),i=0,s=a+1)}return i&&re("Access path missing closing bracket: "+t),r&&re("Access path missing closing quote: "+t),a>s&&(a++,u()),e}function no(t,e,n){const r=gy(t);return t=r.length===1?r[0]:t,q((n&&n.get||hy)(r),[t],e||t)}no("id");const ro=q(t=>t,[],"identity");q(()=>0,[],"zero"),q(()=>1,[],"one"),q(()=>!0,[],"true"),q(()=>!1,[],"false");var _e=Array.isArray;function ze(t){return t===Object(t)}function et(t){return t[t.length-1]}function Ir(t){return t==null||t===""?null:+t}const tf=t=>e=>t*Math.exp(e),nf=t=>e=>Math.log(t*e),my=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),yy=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,io=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function na(t,e,n,r){const i=n(t[0]),o=n(et(t)),s=(o-i)*e;return[r(i-s),r(o-s)]}function Ay(t,e){return na(t,e,Ir,ro)}function by(t,e){var n=Math.sign(t[0]);return na(t,e,nf(n),tf(n))}function xy(t,e,n){return na(t,e,io(n),io(1/n))}function oo(t,e,n,r,i){const o=r(t[0]),s=r(et(t)),a=e!=null?r(e):(o+s)/2;return[i(a+(o-a)*n),i(a+(s-a)*n)]}function so(t,e,n){return oo(t,e,n,Ir,ro)}function rf(t,e,n){const r=Math.sign(t[0]);return oo(t,e,n,nf(r),tf(r))}function ra(t,e,n,r){return oo(t,e,n,io(r),io(1/r))}function vy(t,e,n,r){return oo(t,e,n,my(r),yy(r))}function ia(t){return t!=null?_e(t)?t:[t]:[]}function wy(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 Te(t){return typeof t=="function"}const Ey="descending";function of(t,e,n){n=n||{},e=ia(e)||[];const r=[],i=[],o={},s=n.comparator||Sy;return ia(t).forEach((a,c)=>{a!=null&&(r.push(e[c]===Ey?-1:1),i.push(a=Te(a)?a:no(a,null,n)),(Ve(a)||[]).forEach(u=>o[u]=1))}),i.length===0?null:q(s(i,r),Object.keys(o))}const sf=(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),Sy=(t,e)=>t.length===1?Cy(t[0],e[0]):Dy(t,e,t.length),Cy=(t,e)=>function(n,r){return sf(t(n),t(r))*e},Dy=(t,e,n)=>(e.push(0),function(r,i){let o,s=0,a=-1;for(;s===0&&++a<n;)o=t[a],s=sf(o(r),o(i));return s*e[a]});function My(t){return Te(t)?t:()=>t}function oa(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 Iy=Object.prototype.hasOwnProperty;function dn(t,e){return Iy.call(t,e)}function ao(t){return typeof t=="boolean"}function Ty(t){return Object.prototype.toString.call(t)==="[object Date]"}function Ny(t){return t&&Te(t[Symbol.iterator])}function ae(t){return typeof t=="number"}function oe(t){return typeof t=="string"}function Ly(t,e){const n=t[0],r=et(t),i=+e;return i?i===1?r:n+i*(r-n):n}function co(t){return t&&et(t)-t[0]||0}function uo(t){return _e(t)?"["+t.map(uo)+"]":ze(t)||oe(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function ky(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const Oy=t=>ae(t)||Ty(t)?t:Date.parse(t);function By(t,e){return e=e||Oy,t==null||t===""?null:e(t)}function Py(t){return t==null||t===""?null:t+""}function lo(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var af={},sa={},aa=34,Tr=10,ca=13;function cf(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function Fy(t,e){var n=cf(t);return function(r,i){return e(n(r),i,t)}}function uf(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 Ne(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function zy(t){return t<0?"-"+Ne(-t,6):t>9999?"+"+Ne(t,6):Ne(t,4)}function Ry(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":zy(t.getUTCFullYear())+"-"+Ne(t.getUTCMonth()+1,2)+"-"+Ne(t.getUTCDate(),2)+(i?"T"+Ne(e,2)+":"+Ne(n,2)+":"+Ne(r,2)+"."+Ne(i,3)+"Z":r?"T"+Ne(e,2)+":"+Ne(n,2)+":"+Ne(r,2)+"Z":n||e?"T"+Ne(e,2)+":"+Ne(n,2)+"Z":"")}function lf(t){var e=new RegExp('["'+t+`
2
- \r]`),n=t.charCodeAt(0);function r(l,h){var d,p,g=i(l,function(m,y){if(d)return d(m,y-1);p=m,d=h?Fy(m,h):cf(m)});return g.columns=p||[],g}function i(l,h){var d=[],p=l.length,g=0,m=0,y,x=p<=0,v=!1;l.charCodeAt(p-1)===Tr&&--p,l.charCodeAt(p-1)===ca&&--p;function S(){if(x)return sa;if(v)return v=!1,af;var A,w=g,E;if(l.charCodeAt(w)===aa){for(;g++<p&&l.charCodeAt(g)!==aa||l.charCodeAt(++g)===aa;);return(A=g)>=p?x=!0:(E=l.charCodeAt(g++))===Tr?v=!0:E===ca&&(v=!0,l.charCodeAt(g)===Tr&&++g),l.slice(w+1,A-1).replace(/""/g,'"')}for(;g<p;){if((E=l.charCodeAt(A=g++))===Tr)v=!0;else if(E===ca)v=!0,l.charCodeAt(g)===Tr&&++g;else if(E!==n)continue;return l.slice(w,A)}return x=!0,l.slice(w,p)}for(;(y=S())!==sa;){for(var b=[];y!==af&&y!==sa;)b.push(y),y=S();h&&(b=h(b,m++))==null||d.push(b)}return d}function o(l,h){return l.map(function(d){return h.map(function(p){return f(d[p])}).join(t)})}function s(l,h){return h==null&&(h=uf(l)),[h.map(f).join(t)].concat(o(l,h)).join(`
3
- `)}function a(l,h){return h==null&&(h=uf(l)),o(l,h).join(`
1
+ var Nk=Object.defineProperty,Lk=Object.defineProperties;var Bk=Object.getOwnPropertyDescriptors;var _s=Object.getOwnPropertySymbols;var L2=Object.prototype.hasOwnProperty,B2=Object.prototype.propertyIsEnumerable;var td=(z,R,V)=>R in z?Nk(z,R,{enumerable:!0,configurable:!0,writable:!0,value:V}):z[R]=V,T=(z,R)=>{for(var V in R||(R={}))L2.call(R,V)&&td(z,V,R[V]);if(_s)for(var V of _s(R))B2.call(R,V)&&td(z,V,R[V]);return z},U=(z,R)=>Lk(z,Bk(R));var O2=(z,R)=>{var V={};for(var we in z)L2.call(z,we)&&R.indexOf(we)<0&&(V[we]=z[we]);if(z!=null&&_s)for(var we of _s(z))R.indexOf(we)<0&&B2.call(z,we)&&(V[we]=z[we]);return V};var P2=(z,R,V)=>(td(z,typeof R!="symbol"?R+"":R,V),V),nd=(z,R,V)=>{if(!R.has(z))throw TypeError("Cannot "+V)};var se=(z,R,V)=>(nd(z,R,"read from private field"),V?V.call(z):R.get(z)),Ne=(z,R,V)=>{if(R.has(z))throw TypeError("Cannot add the same private member more than once");R instanceof WeakSet?R.add(z):R.set(z,V)},Uo=(z,R,V,we)=>(nd(z,R,"write to private field"),we?we.call(z,V):R.set(z,V),V),F2=(z,R,V,we)=>({set _(Ws){Uo(z,R,Ws,V)},get _(){return se(z,R,we)}}),xe=(z,R,V)=>(nd(z,R,"access private method"),V);(function(z,R){typeof exports=="object"&&typeof module!="undefined"?R(exports):typeof define=="function"&&define.amd?define(["exports"],R):(z=typeof globalThis!="undefined"?globalThis:z||self,R(z.genomeSpyApp={}))})(this,function(z){var Bo,rd,ei,ti,tt,ni,Oo,id,Dt,Sn,Gs,z2,Hs,R2,cr,Go,Po,od,Fo,ad,zo,sd,Qs,j2,Vs,U2;"use strict";function R(t,e,n){return t.fields=e||[],t.fname=n,t}function V(t){return t==null?null:t.fname}function we(t){return t==null?null:t.fields}function Ws(t){return t.length===1?G2(t[0]):H2(t)}const G2=t=>function(e){return e[t]},H2=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function ce(t){throw Error(t)}function Q2(t){const e=[],n=t.length;let r=null,i=0,o="",a,s,c;t=t+"";function u(){e.push(o+t.substring(a,s)),o="",a=s+1}for(a=s=0;s<n;++s)if(c=t[s],c==="\\")o+=t.substring(a,s),o+=t.substring(++s,++s),a=s;else if(c===r)u(),r=null,i=-1;else{if(r)continue;a===i&&c==='"'||a===i&&c==="'"?(a=s+1,r=c):c==="."&&!i?s>a?u():a=s+1:c==="["?(s>a&&u(),i=a=s+1):c==="]"&&(i||ce("Access path missing open bracket: "+t),i>0&&u(),i=0,a=s+1)}return i&&ce("Access path missing closing bracket: "+t),r&&ce("Access path missing closing quote: "+t),s>a&&(s++,u()),e}function Ho(t,e,n){const r=Q2(t);return t=r.length===1?r[0]:t,R((n&&n.get||Ws)(r),[t],e||t)}Ho("id");const Qo=R(t=>t,[],"identity");R(()=>0,[],"zero"),R(()=>1,[],"one"),R(()=>!0,[],"true"),R(()=>!1,[],"false");var Xe=Array.isArray;function Ge(t){return t===Object(t)}function nt(t){return t[t.length-1]}function ri(t){return t==null||t===""?null:+t}const cd=t=>e=>t*Math.exp(e),ud=t=>e=>Math.log(t*e),V2=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),Y2=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,Vo=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function Xs(t,e,n,r){const i=n(t[0]),o=n(nt(t)),a=(o-i)*e;return[r(i-a),r(o-a)]}function _2(t,e){return Xs(t,e,ri,Qo)}function W2(t,e){var n=Math.sign(t[0]);return Xs(t,e,ud(n),cd(n))}function X2(t,e,n){return Xs(t,e,Vo(n),Vo(1/n))}function Yo(t,e,n,r,i){const o=r(t[0]),a=r(nt(t)),s=e!=null?r(e):(o+a)/2;return[i(s+(o-s)*n),i(s+(a-s)*n)]}function _o(t,e,n){return Yo(t,e,n,ri,Qo)}function ld(t,e,n){const r=Math.sign(t[0]);return Yo(t,e,n,ud(r),cd(r))}function Zs(t,e,n,r){return Yo(t,e,n,Vo(r),Vo(1/r))}function Z2(t,e,n,r){return Yo(t,e,n,V2(r),Y2(r))}function qs(t){return t!=null?Xe(t)?t:[t]:[]}function q2(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 Oe(t){return typeof t=="function"}const K2="descending";function fd(t,e,n){n=n||{},e=qs(e)||[];const r=[],i=[],o={},a=n.comparator||J2;return qs(t).forEach((s,c)=>{s!=null&&(r.push(e[c]===K2?-1:1),i.push(s=Oe(s)?s:Ho(s,null,n)),(we(s)||[]).forEach(u=>o[u]=1))}),i.length===0?null:R(a(i,r),Object.keys(o))}const dd=(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),J2=(t,e)=>t.length===1?$2(t[0],e[0]):ev(t,e,t.length),$2=(t,e)=>function(n,r){return dd(t(n),t(r))*e},ev=(t,e,n)=>(e.push(0),function(r,i){let o,a=0,s=-1;for(;a===0&&++s<n;)o=t[s],a=dd(o(r),o(i));return a*e[s]});function tv(t){return Oe(t)?t:()=>t}function Ks(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 nv=Object.prototype.hasOwnProperty;function En(t,e){return nv.call(t,e)}function Wo(t){return typeof t=="boolean"}function rv(t){return Object.prototype.toString.call(t)==="[object Date]"}function iv(t){return t&&Oe(t[Symbol.iterator])}function le(t){return typeof t=="number"}function re(t){return typeof t=="string"}function ov(t,e){const n=t[0],r=nt(t),i=+e;return i?i===1?r:n+i*(r-n):n}function Xo(t){return t&&nt(t)-t[0]||0}function Zo(t){return Xe(t)?"["+t.map(Zo)+"]":Ge(t)||re(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function av(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const sv=t=>le(t)||rv(t)?t:Date.parse(t);function cv(t,e){return e=e||sv,t==null||t===""?null:e(t)}function uv(t){return t==null||t===""?null:t+""}function qo(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var hd={},Js={},$s=34,ii=10,ec=13;function pd(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function lv(t,e){var n=pd(t);return function(r,i){return e(n(r),i,t)}}function md(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 Pe(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function fv(t){return t<0?"-"+Pe(-t,6):t>9999?"+"+Pe(t,6):Pe(t,4)}function dv(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":fv(t.getUTCFullYear())+"-"+Pe(t.getUTCMonth()+1,2)+"-"+Pe(t.getUTCDate(),2)+(i?"T"+Pe(e,2)+":"+Pe(n,2)+":"+Pe(r,2)+"."+Pe(i,3)+"Z":r?"T"+Pe(e,2)+":"+Pe(n,2)+":"+Pe(r,2)+"Z":n||e?"T"+Pe(e,2)+":"+Pe(n,2)+"Z":"")}function gd(t){var e=new RegExp('["'+t+`
2
+ \r]`),n=t.charCodeAt(0);function r(l,d){var h,p,m=i(l,function(g,y){if(h)return h(g,y-1);p=g,h=d?lv(g,d):pd(g)});return m.columns=p||[],m}function i(l,d){var h=[],p=l.length,m=0,g=0,y,x=p<=0,A=!1;l.charCodeAt(p-1)===ii&&--p,l.charCodeAt(p-1)===ec&&--p;function C(){if(x)return Js;if(A)return A=!1,hd;var v,w=m,E;if(l.charCodeAt(w)===$s){for(;m++<p&&l.charCodeAt(m)!==$s||l.charCodeAt(++m)===$s;);return(v=m)>=p?x=!0:(E=l.charCodeAt(m++))===ii?A=!0:E===ec&&(A=!0,l.charCodeAt(m)===ii&&++m),l.slice(w+1,v-1).replace(/""/g,'"')}for(;m<p;){if((E=l.charCodeAt(v=m++))===ii)A=!0;else if(E===ec)A=!0,l.charCodeAt(m)===ii&&++m;else if(E!==n)continue;return l.slice(w,v)}return x=!0,l.slice(w,p)}for(;(y=C())!==Js;){for(var b=[];y!==hd&&y!==Js;)b.push(y),y=C();d&&(b=d(b,g++))==null||h.push(b)}return h}function o(l,d){return l.map(function(h){return d.map(function(p){return f(h[p])}).join(t)})}function a(l,d){return d==null&&(d=md(l)),[d.map(f).join(t)].concat(o(l,d)).join(`
3
+ `)}function s(l,d){return d==null&&(d=md(l)),o(l,d).join(`
4
4
  `)}function c(l){return l.map(u).join(`
5
- `)}function u(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?Ry(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:c,formatRow:u,formatValue:f}}var Uy=lf(" "),jy=Uy.parseRows;function Gy(t){return t}function Hy(t){if(t==null)return Gy;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],s=t.translate[1];return function(a,c){c||(e=n=0);var u=2,f=a.length,l=new Array(f);for(l[0]=(e+=a[0])*r+o,l[1]=(n+=a[1])*i+s;u<f;)l[u]=a[u],++u;return l}}function Qy(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Vy(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return ff(t,n)})}:ff(t,e)}function ff(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=hf(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 hf(t,e){var n=Hy(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var h=r[f<0?~f:f],d=0,p=h.length;d<p;++d)l.push(n(h[d],d));f<0&&Qy(l,p)}function o(f){return n(f)}function s(f){for(var l=[],h=0,d=f.length;h<d;++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 c(f){return f.map(a)}function u(f){var l=f.type,h;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(u)};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=c(f.arcs);break;case"MultiPolygon":h=f.arcs.map(c);break;default:return null}return{type:l,coordinates:h}}return u(e)}function _y(t,e){var n={},r={},i={},o=[],s=-1;e.forEach(function(u,f){var l=t.arcs[u<0?~u:u],h;l.length<3&&!l[1][0]&&!l[1][1]&&(h=e[++s],e[s]=u,e[f]=h)}),e.forEach(function(u){var f=a(u),l=f[0],h=f[1],d,p;if(d=i[l])if(delete i[d.end],d.push(u),d.end=h,p=r[h]){delete r[p.start];var g=p===d?d:d.concat(p);r[g.start=d.start]=i[g.end=p.end]=g}else r[d.start]=i[d.end]=d;else if(d=r[h])if(delete r[d.start],d.unshift(u),d.start=l,p=i[l]){delete i[p.end];var m=p===d?d:p.concat(d);r[m.start=p.start]=i[m.end=d.end]=m}else r[d.start]=i[d.end]=d;else d=[u],r[d.start=l]=i[d.end=h]=d});function a(u){var f=t.arcs[u<0?~u:u],l=f[0],h;return t.transform?(h=[0,0],f.forEach(function(d){h[0]+=d[0],h[1]+=d[1]})):h=f[f.length-1],u<0?[h,l]:[l,h]}function c(u,f){for(var l in u){var h=u[l];delete f[h.start],delete h.start,delete h.end,h.forEach(function(d){n[d<0?~d:d]=1}),o.push(h)}}return c(i,r),c(r,i),e.forEach(function(u){n[u<0?~u:u]||o.push([u])}),o}function Yy(t){return hf(t,Wy.apply(this,arguments))}function Wy(t,e,n){var r,i,o;if(arguments.length>1)r=Xy(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:_y(t,r)}}function Xy(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 c(l){l.forEach(a)}function u(l){l.forEach(c)}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":c(l.arcs);break;case"MultiPolygon":u(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 jn(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function ua(t){let e=t,n=t;t.length===1&&(e=(s,a)=>t(s)-a,n=qy(t));function r(s,a,c,u){for(c==null&&(c=0),u==null&&(u=s.length);c<u;){const f=c+u>>>1;n(s[f],a)<0?c=f+1:u=f}return c}function i(s,a,c,u){for(c==null&&(c=0),u==null&&(u=s.length);c<u;){const f=c+u>>>1;n(s[f],a)>0?u=f:c=f+1}return c}function o(s,a,c,u){c==null&&(c=0),u==null&&(u=s.length);const f=r(s,a,c,u-1);return f>c&&e(s[f-1],a)>-e(s[f],a)?f-1:f}return{left:r,center:o,right:i}}function qy(t){return(e,n)=>jn(t(e),n)}function df(t){return t===null?NaN:+t}const la=ua(jn).right;ua(df).center;var Nr=la;class Zy extends Map{constructor(e,n=$y){super();if(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(pf(this,e))}has(e){return super.has(pf(this,e))}set(e,n){return super.set(Ky(this,e),n)}delete(e){return super.delete(Jy(this,e))}}function pf({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Ky({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Jy({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(n),t.delete(r)),n}function $y(t){return t!==null&&typeof t=="object"?t.valueOf():t}function gf(t){return t}function eA(t,...e){return tA(t,gf,gf,e)}function tA(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new Zy,c=r[s++];let u=-1;for(const f of o){const l=c(f,++u,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)}function nA(t,e){return Array.from(e,n=>t[n])}function rA(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[n=jn]=e;if(n.length===1||e.length>1){const r=Uint32Array.from(t,(i,o)=>o);return e.length>1?(e=e.map(i=>t.map(i)),r.sort((i,o)=>{for(const s of e){const a=jn(s[i],s[o]);if(a)return a}})):(n=t.map(n),r.sort((i,o)=>jn(n[i],n[o]))),nA(t,r)}return t.sort(n)}var fa=Math.sqrt(50),ha=Math.sqrt(10),da=Math.sqrt(2);function pa(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=mf(t,e,n))===0||!isFinite(a))return[];if(a>0){let c=Math.round(t/a),u=Math.round(e/a);for(c*a<t&&++c,u*a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)*a}else{a=-a;let c=Math.round(t*a),u=Math.round(e*a);for(c/a<t&&++c,u/a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)/a}return r&&s.reverse(),s}function mf(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>=fa?10:o>=ha?5:o>=da?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=fa?10:o>=ha?5:o>=da?2:1)}function fo(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>=fa?i*=10:o>=ha?i*=5:o>=da&&(i*=2),e<t?-i:i}function yf(t,e,n=df){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 ho(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 iA(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function po(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 Gn(t){return t=po(Math.abs(t)),t?t[1]:NaN}function oA(t,e){return function(n,r){for(var i=n.length,o=[],s=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(n.substring(i-=a,i+a)),!((c+=a+1)>r));)a=t[s=(s+1)%t.length];return o.reverse().join(e)}}function sA(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var aA=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Hn(t){if(!(e=aA.exec(t)))throw new Error("invalid format: "+t);var e;return new ga({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]})}Hn.prototype=ga.prototype;function ga(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+""}ga.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 cA(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 Af;function uA(t,e){var n=po(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Af=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")+po(t,Math.max(0,e+o-1))[0]}function bf(t,e){var n=po(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")}var xf={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:iA,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)=>bf(t*100,e),r:bf,s:uA,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function vf(t){return t}var wf=Array.prototype.map,Ef=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function lA(t){var e=t.grouping===void 0||t.thousands===void 0?vf:oA(wf.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?vf:sA(wf.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=Hn(l);var h=l.fill,d=l.align,p=l.sign,g=l.symbol,m=l.zero,y=l.width,x=l.comma,v=l.precision,S=l.trim,b=l.type;b==="n"?(x=!0,b="g"):xf[b]||(v===void 0&&(v=12),S=!0,b="g"),(m||h==="0"&&d==="=")&&(m=!0,h="0",d="=");var A=g==="$"?n:g==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",w=g==="$"?r:/[%p]/.test(b)?s:"",E=xf[b],B=/[defgprs%]/.test(b);v=v===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function O(D){var k=A,z=w,G,ue,Ae;if(b==="c")z=E(D)+z,D="";else{D=+D;var Ge=D<0||1/D<0;if(D=isNaN(D)?c:E(Math.abs(D),v),S&&(D=cA(D)),Ge&&+D==0&&p!=="+"&&(Ge=!1),k=(Ge?p==="("?p:a:p==="-"||p==="("?"":p)+k,z=(b==="s"?Ef[8+Af/3]:"")+z+(Ge&&p==="("?")":""),B){for(G=-1,ue=D.length;++G<ue;)if(Ae=D.charCodeAt(G),48>Ae||Ae>57){z=(Ae===46?i+D.slice(G+1):D.slice(G))+z,D=D.slice(0,G);break}}}x&&!m&&(D=e(D,1/0));var U=k.length+D.length+z.length,ie=U<y?new Array(y-U+1).join(h):"";switch(x&&m&&(D=e(ie+D,ie.length?y-z.length:1/0),ie=""),d){case"<":D=k+D+z+ie;break;case"=":D=k+ie+D+z;break;case"^":D=ie.slice(0,U=ie.length>>1)+k+D+z+ie.slice(U);break;default:D=ie+k+D+z;break}return o(D)}return O.toString=function(){return l+""},O}function f(l,h){var d=u((l=Hn(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(Gn(h)/3)))*3,g=Math.pow(10,-p),m=Ef[8+p/3];return function(y){return d(g*y)+m}}return{format:u,formatPrefix:f}}var go,Qn,ma;fA({thousands:",",grouping:[3],currency:["$",""]});function fA(t){return go=lA(t),Qn=go.format,ma=go.formatPrefix,go}function Sf(t){return Math.max(0,-Gn(Math.abs(t)))}function Cf(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Gn(e)/3)))*3-Gn(Math.abs(t)))}function Df(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Gn(e)-Gn(t))+1}var ya=new Date,Aa=new Date;function fe(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 c=[],u;if(o=i.ceil(o),a=a==null?1:Math.floor(a),!(o<s)||!(a>0))return c;do c.push(u=new Date(+o)),e(o,a),t(o);while(u<o&&o<s);return c},i.filter=function(o){return fe(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 ya.setTime(+o),Aa.setTime(+s),t(ya),t(Aa),Math.floor(n(ya,Aa))},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 ba=fe(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});ba.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?fe(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):ba};var xa=ba;const St=1e3,Ye=St*60,Ct=Ye*60,pn=Ct*24,va=pn*7,Mf=pn*30,wa=pn*365;var hA=fe(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*St)},function(t,e){return(e-t)/St},function(t){return t.getUTCSeconds()}),jt=hA,dA=fe(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*St)},function(t,e){t.setTime(+t+e*Ye)},function(t,e){return(e-t)/Ye},function(t){return t.getMinutes()}),Ea=dA,pA=fe(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*St-t.getMinutes()*Ye)},function(t,e){t.setTime(+t+e*Ct)},function(t,e){return(e-t)/Ct},function(t){return t.getHours()}),Sa=pA,gA=fe(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ye)/pn,t=>t.getDate()-1),gn=gA;function mn(t){return fe(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())*Ye)/va})}var mo=mn(0),Ca=mn(1);mn(2),mn(3);var Lr=mn(4);mn(5),mn(6);var mA=fe(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()}),yo=mA,If=fe(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()});If.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:fe(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)})};var Gt=If,yA=fe(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Ye)},function(t,e){return(e-t)/Ye},function(t){return t.getUTCMinutes()}),Da=yA,AA=fe(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*Ct)},function(t,e){return(e-t)/Ct},function(t){return t.getUTCHours()}),Ma=AA,bA=fe(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/pn},function(t){return t.getUTCDate()-1}),yn=bA;function An(t){return fe(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)/va})}var Ao=An(0),Ia=An(1);An(2),An(3);var kr=An(4);An(5),An(6);var xA=fe(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()}),bo=xA,Tf=fe(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()});Tf.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:fe(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)})};var Ht=Tf;function Nf(t,e,n,r,i,o){const s=[[jt,1,St],[jt,5,5*St],[jt,15,15*St],[jt,30,30*St],[o,1,Ye],[o,5,5*Ye],[o,15,15*Ye],[o,30,30*Ye],[i,1,Ct],[i,3,3*Ct],[i,6,6*Ct],[i,12,12*Ct],[r,1,pn],[r,2,2*pn],[n,1,va],[e,1,Mf],[e,3,3*Mf],[t,1,wa]];function a(u,f,l){const h=f<u;h&&([u,f]=[f,u]);const d=l&&typeof l.range=="function"?l:c(u,f,l),p=d?d.range(u,+f+1):[];return h?p.reverse():p}function c(u,f,l){const h=Math.abs(f-u)/l,d=ua(([,,m])=>m).right(s,h);if(d===s.length)return t.every(fo(u/wa,f/wa,l));if(d===0)return xa.every(Math.max(fo(u,f,l),1));const[p,g]=s[h/s[d-1][2]<s[d][2]/h?d-1:d];return p.every(g)}return[a,c]}const[vA,wA]=Nf(Ht,bo,Ao,yn,Ma,Da),[EA,SA]=Nf(Gt,yo,mo,gn,Sa,Ea),Or="year",Br="quarter",Pr="month",Fr="week",zr="date",xo="day",Ta="dayofyear",Rr="hours",Ur="minutes",jr="seconds",vo="milliseconds";[Or,Br,Pr,Fr,zr,xo,Ta,Rr,Ur,jr,vo].reduce((t,e,n)=>(t[e]=1+n,t),{});const CA={[Or]:Gt,[Br]:yo.every(3),[Pr]:yo,[Fr]:mo,[zr]:gn,[xo]:gn,[Ta]:gn,[Rr]:Sa,[Ur]:Ea,[jr]:jt,[vo]:xa},DA={[Or]:Ht,[Br]:bo.every(3),[Pr]:bo,[Fr]:Ao,[zr]:yn,[xo]:yn,[Ta]:yn,[Rr]:Ma,[Ur]:Da,[jr]:jt,[vo]:xa};function MA(t){return CA[t]}function IA(t){return DA[t]}function Na(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 La(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 Gr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Lf(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,s=t.shortDays,a=t.months,c=t.shortMonths,u=Hr(i),f=Qr(i),l=Hr(o),h=Qr(o),d=Hr(s),p=Qr(s),g=Hr(a),m=Qr(a),y=Hr(c),x=Qr(c),v={a:Ge,A:U,b:ie,B:eo,c:null,d:zf,e:zf,f:KA,g:a2,G:u2,H:XA,I:qA,j:ZA,L:Rf,m:JA,M:$A,p:to,q:ea,Q:Vf,s:_f,S:e2,u:t2,U:n2,V:r2,w:i2,W:o2,x:null,X:null,y:s2,Y:c2,Z:l2,"%":Qf},S={a:ef,A:cT,b:uT,B:lT,c:null,d:jf,e:jf,f:p2,g:S2,G:D2,H:f2,I:h2,j:d2,L:Gf,m:g2,M:m2,p:fT,q:hT,Q:Vf,s:_f,S:y2,u:A2,U:b2,V:x2,w:v2,W:w2,x:null,X:null,y:E2,Y:C2,Z:M2,"%":Qf},b={a:O,A:D,b:k,B:z,c:G,d:Pf,e:Pf,f:VA,g:Bf,G:Of,H:Ff,I:Ff,j:jA,L:QA,m:UA,M:GA,p:B,q:RA,Q:YA,s:WA,S:HA,u:OA,U:BA,V:PA,w:kA,W:FA,x:ue,X:Ae,y:Bf,Y:Of,Z:zA,"%":_A};v.x=A(n,v),v.X=A(r,v),v.c=A(e,v),S.x=A(n,S),S.X=A(r,S),S.c=A(e,S);function A(L,j){return function(V){var I=[],Fe=-1,K=0,He=L.length,Qe,Un,ay;for(V instanceof Date||(V=new Date(+V));++Fe<He;)L.charCodeAt(Fe)===37&&(I.push(L.slice(K,Fe)),(Un=kf[Qe=L.charAt(++Fe)])!=null?Qe=L.charAt(++Fe):Un=Qe==="e"?" ":"0",(ay=j[Qe])&&(Qe=ay(V,Un)),I.push(Qe),K=Fe+1);return I.push(L.slice(K,Fe)),I.join("")}}function w(L,j){return function(V){var I=Gr(1900,void 0,1),Fe=E(I,L,V+="",0),K,He;if(Fe!=V.length)return null;if("Q"in I)return new Date(I.Q);if("s"in I)return new Date(I.s*1e3+("L"in I?I.L:0));if(j&&!("Z"in I)&&(I.Z=0),"p"in I&&(I.H=I.H%12+I.p*12),I.m===void 0&&(I.m="q"in I?I.q:0),"V"in I){if(I.V<1||I.V>53)return null;"w"in I||(I.w=1),"Z"in I?(K=La(Gr(I.y,0,1)),He=K.getUTCDay(),K=He>4||He===0?Ia.ceil(K):Ia(K),K=yn.offset(K,(I.V-1)*7),I.y=K.getUTCFullYear(),I.m=K.getUTCMonth(),I.d=K.getUTCDate()+(I.w+6)%7):(K=Na(Gr(I.y,0,1)),He=K.getDay(),K=He>4||He===0?Ca.ceil(K):Ca(K),K=gn.offset(K,(I.V-1)*7),I.y=K.getFullYear(),I.m=K.getMonth(),I.d=K.getDate()+(I.w+6)%7)}else("W"in I||"U"in I)&&("w"in I||(I.w="u"in I?I.u%7:"W"in I?1:0),He="Z"in I?La(Gr(I.y,0,1)).getUTCDay():Na(Gr(I.y,0,1)).getDay(),I.m=0,I.d="W"in I?(I.w+6)%7+I.W*7-(He+5)%7:I.w+I.U*7-(He+6)%7);return"Z"in I?(I.H+=I.Z/100|0,I.M+=I.Z%100,La(I)):Na(I)}}function E(L,j,V,I){for(var Fe=0,K=j.length,He=V.length,Qe,Un;Fe<K;){if(I>=He)return-1;if(Qe=j.charCodeAt(Fe++),Qe===37){if(Qe=j.charAt(Fe++),Un=b[Qe in kf?j.charAt(Fe++):Qe],!Un||(I=Un(L,V,I))<0)return-1}else if(Qe!=V.charCodeAt(I++))return-1}return I}function B(L,j,V){var I=u.exec(j.slice(V));return I?(L.p=f.get(I[0].toLowerCase()),V+I[0].length):-1}function O(L,j,V){var I=d.exec(j.slice(V));return I?(L.w=p.get(I[0].toLowerCase()),V+I[0].length):-1}function D(L,j,V){var I=l.exec(j.slice(V));return I?(L.w=h.get(I[0].toLowerCase()),V+I[0].length):-1}function k(L,j,V){var I=y.exec(j.slice(V));return I?(L.m=x.get(I[0].toLowerCase()),V+I[0].length):-1}function z(L,j,V){var I=g.exec(j.slice(V));return I?(L.m=m.get(I[0].toLowerCase()),V+I[0].length):-1}function G(L,j,V){return E(L,e,j,V)}function ue(L,j,V){return E(L,n,j,V)}function Ae(L,j,V){return E(L,r,j,V)}function Ge(L){return s[L.getDay()]}function U(L){return o[L.getDay()]}function ie(L){return c[L.getMonth()]}function eo(L){return a[L.getMonth()]}function to(L){return i[+(L.getHours()>=12)]}function ea(L){return 1+~~(L.getMonth()/3)}function ef(L){return s[L.getUTCDay()]}function cT(L){return o[L.getUTCDay()]}function uT(L){return c[L.getUTCMonth()]}function lT(L){return a[L.getUTCMonth()]}function fT(L){return i[+(L.getUTCHours()>=12)]}function hT(L){return 1+~~(L.getUTCMonth()/3)}return{format:function(L){var j=A(L+="",v);return j.toString=function(){return L},j},parse:function(L){var j=w(L+="",!1);return j.toString=function(){return L},j},utcFormat:function(L){var j=A(L+="",S);return j.toString=function(){return L},j},utcParse:function(L){var j=w(L+="",!0);return j.toString=function(){return L},j}}}var kf={"-":"",_:" ","0":"0"},he=/^\s*\d+/,TA=/^%/,NA=/[\\^$*+?|[\]().{}]/g;function H(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 LA(t){return t.replace(NA,"\\$&")}function Hr(t){return new RegExp("^(?:"+t.map(LA).join("|")+")","i")}function Qr(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function kA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function OA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function BA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function PA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function FA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Of(t,e,n){var r=he.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Bf(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function zA(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 RA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function UA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Pf(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function jA(t,e,n){var r=he.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Ff(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function GA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function HA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function QA(t,e,n){var r=he.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function VA(t,e,n){var r=he.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function _A(t,e,n){var r=TA.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function YA(t,e,n){var r=he.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function WA(t,e,n){var r=he.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function zf(t,e){return H(t.getDate(),e,2)}function XA(t,e){return H(t.getHours(),e,2)}function qA(t,e){return H(t.getHours()%12||12,e,2)}function ZA(t,e){return H(1+gn.count(Gt(t),t),e,3)}function Rf(t,e){return H(t.getMilliseconds(),e,3)}function KA(t,e){return Rf(t,e)+"000"}function JA(t,e){return H(t.getMonth()+1,e,2)}function $A(t,e){return H(t.getMinutes(),e,2)}function e2(t,e){return H(t.getSeconds(),e,2)}function t2(t){var e=t.getDay();return e===0?7:e}function n2(t,e){return H(mo.count(Gt(t)-1,t),e,2)}function Uf(t){var e=t.getDay();return e>=4||e===0?Lr(t):Lr.ceil(t)}function r2(t,e){return t=Uf(t),H(Lr.count(Gt(t),t)+(Gt(t).getDay()===4),e,2)}function i2(t){return t.getDay()}function o2(t,e){return H(Ca.count(Gt(t)-1,t),e,2)}function s2(t,e){return H(t.getFullYear()%100,e,2)}function a2(t,e){return t=Uf(t),H(t.getFullYear()%100,e,2)}function c2(t,e){return H(t.getFullYear()%1e4,e,4)}function u2(t,e){var n=t.getDay();return t=n>=4||n===0?Lr(t):Lr.ceil(t),H(t.getFullYear()%1e4,e,4)}function l2(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+H(e/60|0,"0",2)+H(e%60,"0",2)}function jf(t,e){return H(t.getUTCDate(),e,2)}function f2(t,e){return H(t.getUTCHours(),e,2)}function h2(t,e){return H(t.getUTCHours()%12||12,e,2)}function d2(t,e){return H(1+yn.count(Ht(t),t),e,3)}function Gf(t,e){return H(t.getUTCMilliseconds(),e,3)}function p2(t,e){return Gf(t,e)+"000"}function g2(t,e){return H(t.getUTCMonth()+1,e,2)}function m2(t,e){return H(t.getUTCMinutes(),e,2)}function y2(t,e){return H(t.getUTCSeconds(),e,2)}function A2(t){var e=t.getUTCDay();return e===0?7:e}function b2(t,e){return H(Ao.count(Ht(t)-1,t),e,2)}function Hf(t){var e=t.getUTCDay();return e>=4||e===0?kr(t):kr.ceil(t)}function x2(t,e){return t=Hf(t),H(kr.count(Ht(t),t)+(Ht(t).getUTCDay()===4),e,2)}function v2(t){return t.getUTCDay()}function w2(t,e){return H(Ia.count(Ht(t)-1,t),e,2)}function E2(t,e){return H(t.getUTCFullYear()%100,e,2)}function S2(t,e){return t=Hf(t),H(t.getUTCFullYear()%100,e,2)}function C2(t,e){return H(t.getUTCFullYear()%1e4,e,4)}function D2(t,e){var n=t.getUTCDay();return t=n>=4||n===0?kr(t):kr.ceil(t),H(t.getUTCFullYear()%1e4,e,4)}function M2(){return"+0000"}function Qf(){return"%"}function Vf(t){return+t}function _f(t){return Math.floor(+t/1e3)}var Vn,ka,Yf,Oa,Wf;I2({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 I2(t){return Vn=Lf(t),ka=Vn.format,Yf=Vn.parse,Oa=Vn.utcFormat,Wf=Vn.utcParse,Vn}function Vr(t){const e={};return n=>e[n]||(e[n]=t(n))}function T2(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=N2(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 N2(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 L2(t){const e=Vr(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=Hn(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return T2(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=Hn(s==null?",f":s);const a=fo(r,i,o),c=Math.max(Math.abs(r),Math.abs(i));let u;if(s.precision==null)switch(s.type){case"s":return isNaN(u=Cf(a,c))||(s.precision=u),n(s,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=Df(a,c))||(s.precision=u-(s.type==="e"));break}case"f":case"%":{isNaN(u=Sf(a))||(s.precision=u-(s.type==="%")*2);break}}return e(s)}}}k2();function k2(){return L2({format:Qn,formatPrefix:ma})}function Xf(t,e,n){n=n||{},ze(n)||re("Invalid time multi-format specifier: ".concat(n));const r=e(jr),i=e(Ur),o=e(Rr),s=e(zr),a=e(Fr),c=e(Pr),u=e(Br),f=e(Or),l=t(n[vo]||".%L"),h=t(n[jr]||":%S"),d=t(n[Ur]||"%I:%M"),p=t(n[Rr]||"%I %p"),g=t(n[zr]||n[xo]||"%a %d"),m=t(n[Fr]||"%b %d"),y=t(n[Pr]||"%B"),x=t(n[Br]||"%B"),v=t(n[Or]||"%Y");return S=>(r(S)<S?l:i(S)<S?h:o(S)<S?d:s(S)<S?p:c(S)<S?a(S)<S?g:m:f(S)<S?u(S)<S?y:x:v)(S)}function qf(t){const e=Vr(t.format),n=Vr(t.utcFormat);return{timeFormat:r=>oe(r)?e(r):Xf(e,MA,r),utcFormat:r=>oe(r)?n(r):Xf(n,IA,r),timeParse:Vr(t.parse),utcParse:Vr(t.utcParse)}}let Ba;O2();function O2(){return Ba=qf({format:ka,parse:Yf,utcFormat:Oa,utcParse:Wf})}function B2(t){return qf(Lf(t))}function P2(t){return arguments.length?Ba=B2(t):Ba}const F2=/^(data:|([A-Za-z]+:)?\/\/)/,z2=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,R2=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Zf="file://";function U2(t,e){return n=>({options:n||{},sanitize:G2,load:j2,fileAccess:!!e,file:H2(e),http:V2(t)})}async function j2(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function G2(t,e){e=oa({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=z2.test(t.replace(R2,""));(t==null||typeof t!="string"||!a)&&re("Sanitize failure, invalid URI: "+uo(t));const c=F2.test(t);return(s=e.baseURL)&&!c&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(Zf))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(Zf.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 H2(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):Q2}async function Q2(){re("No file system access.")}function V2(t){return t?async function(e,n){const r=oa({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Te(o[i])?o[i]():o.text():re(o.status+""+o.statusText)}:_2}async function _2(){re("No HTTP fetch method available.")}const Y2=t=>t!=null&&t===t,W2=t=>t==="true"||t==="false"||t===!0||t===!1,X2=t=>!Number.isNaN(Date.parse(t)),Kf=t=>!Number.isNaN(+t)&&!(t instanceof Date),q2=t=>Kf(t)&&Number.isInteger(+t),Jf={boolean:ky,integer:Ir,number:Ir,date:By,string:Py,unknown:ro},wo=[W2,q2,Kf,X2],Z2=["boolean","integer","number","date"];function $f(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=wo.length,i=wo.map((o,s)=>s+1);for(let o=0,s=0,a,c;o<n;++o)for(c=e?t[o][e]:t[o],a=0;a<r;++a)if(i[a]&&Y2(c)&&!wo[a](c)&&(i[a]=0,++s,s===wo.length))return"string";return Z2[i.reduce((o,s)=>o===0?s:o,0)-1]}function K2(t,e){return e.reduce((n,r)=>(n[r]=$f(t,r),n),{})}function eh(t){const e=function(n,r){const i={delimiter:t};return Pa(n,r?oa(r,i):i)};return e.responseType="text",e}function Pa(t,e){return e.header&&(t=e.header.map(uo).join(e.delimiter)+`
6
- `+t),lf(e.delimiter).parse(t+"")}Pa.responseType="text";function J2(t){return typeof Buffer=="function"&&Te(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function Fa(t,e){const n=e&&e.property?no(e.property):ro;return ze(t)&&!J2(t)?$2(n(t),e):n(JSON.parse(t))}Fa.responseType="json";function $2(t,e){return!_e(t)&&Ny(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const eb={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function th(t,e){let n,r,i,o;return t=Fa(t,e),e&&e.feature?(n=Vy,i=e.feature):e&&e.mesh?(n=Yy,i=e.mesh,o=eb[e.filter]):re("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):re("Invalid TopoJSON object: "+i),r&&r.features||[r]}th.responseType="json";const za={dsv:Pa,csv:eh(","),tsv:eh(" "),json:Fa,topojson:th};function nh(t,e){return arguments.length>1?(za[t]=e,this):dn(za,t)?za[t]:null}function rh(t,e,n,r){e=e||{};const i=nh(e.type||"json");return i||re("Unknown data format type: "+e.type),t=i(t,e),e.parse&&tb(t,e.parse,n,r),dn(t,"columns")&&delete t.columns,t}function tb(t,e,n,r){if(!t.length)return;const i=P2();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),s,a,c,u,f,l;e==="auto"&&(e=K2(t,o)),o=Object.keys(e);const h=o.map(d=>{const p=e[d];let g,m;if(p&&(p.startsWith("date:")||p.startsWith("utc:")))return g=p.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(!Jf[p])throw Error("Illegal format pattern: "+d+":"+p);return Jf[p]});for(c=0,f=t.length,l=o.length;c<f;++c)for(s=t[c],u=0;u<l;++u)a=o[u],s[a]=h[u](s[a])}const _r=U2(typeof fetch!="undefined"&&fetch,null);function Ra(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Eo(t){let e=t,n=t,r=t;t.length!==2&&(e=(a,c)=>t(a)-c,n=Ra,r=(a,c)=>Ra(t(a),c));function i(a,c,u=0,f=a.length){if(u<f){if(n(c,c)!==0)return f;do{const l=u+f>>>1;r(a[l],c)<0?u=l+1:f=l}while(u<f)}return u}function o(a,c,u=0,f=a.length){if(u<f){if(n(c,c)!==0)return f;do{const l=u+f>>>1;r(a[l],c)<=0?u=l+1:f=l}while(u<f)}return u}function s(a,c,u=0,f=a.length){const l=i(a,c,u,f-1);return l>u&&e(a[l-1],c)>-e(a[l],c)?l-1:l}return{left:i,center:s,right:o}}function ih(t){return t===null?NaN:+t}const oh=Eo(Ra),nb=oh.right;oh.left,Eo(ih).center;var rb=nb;function ib(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 So extends Map{constructor(e,n=ab){super();if(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(sh(this,e))}has(e){return super.has(sh(this,e))}set(e,n){return super.set(ob(this,e),n)}delete(e){return super.delete(sb(this,e))}}function sh({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function ob({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function sb({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function ab(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Co(t){return t}function Do(t,...e){return Ua(t,Co,Co,e)}function cb(t,...e){return Ua(t,Array.from,Co,e)}function ub(t,e,...n){return Ua(t,Co,e,n)}function Ua(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new So,c=r[s++];let u=-1;for(const f of o){const l=c(f,++u,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 ja=Math.sqrt(50),Ga=Math.sqrt(10),Ha=Math.sqrt(2);function lb(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=fb(t,e,n))===0||!isFinite(a))return[];if(a>0){let c=Math.round(t/a),u=Math.round(e/a);for(c*a<t&&++c,u*a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)*a}else{a=-a;let c=Math.round(t*a),u=Math.round(e*a);for(c/a<t&&++c,u/a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)/a}return r&&s.reverse(),s}function fb(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>=ja?10:o>=Ga?5:o>=Ha?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=ja?10:o>=Ga?5:o>=Ha?2:1)}function Qa(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>=ja?i*=10:o>=Ga?i*=5:o>=Ha&&(i*=2),e<t?-i:i}function hb(t,e,n=ih){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 Mo(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 Io(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 db(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function To(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 pb(t){return t=To(Math.abs(t)),t?t[1]:NaN}function gb(t,e){return function(n,r){for(var i=n.length,o=[],s=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(n.substring(i-=a,i+a)),!((c+=a+1)>r));)a=t[s=(s+1)%t.length];return o.reverse().join(e)}}function mb(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var yb=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function No(t){if(!(e=yb.exec(t)))throw new Error("invalid format: "+t);var e;return new Va({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]})}No.prototype=Va.prototype;function Va(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+""}Va.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 Ab(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 ah;function bb(t,e){var n=To(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(ah=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")+To(t,Math.max(0,e+o-1))[0]}function ch(t,e){var n=To(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")}var uh={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:db,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)=>ch(t*100,e),r:ch,s:bb,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function lh(t){return t}var fh=Array.prototype.map,hh=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function xb(t){var e=t.grouping===void 0||t.thousands===void 0?lh:gb(fh.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?lh:mb(fh.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=No(l);var h=l.fill,d=l.align,p=l.sign,g=l.symbol,m=l.zero,y=l.width,x=l.comma,v=l.precision,S=l.trim,b=l.type;b==="n"?(x=!0,b="g"):uh[b]||(v===void 0&&(v=12),S=!0,b="g"),(m||h==="0"&&d==="=")&&(m=!0,h="0",d="=");var A=g==="$"?n:g==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",w=g==="$"?r:/[%p]/.test(b)?s:"",E=uh[b],B=/[defgprs%]/.test(b);v=v===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function O(D){var k=A,z=w,G,ue,Ae;if(b==="c")z=E(D)+z,D="";else{D=+D;var Ge=D<0||1/D<0;if(D=isNaN(D)?c:E(Math.abs(D),v),S&&(D=Ab(D)),Ge&&+D==0&&p!=="+"&&(Ge=!1),k=(Ge?p==="("?p:a:p==="-"||p==="("?"":p)+k,z=(b==="s"?hh[8+ah/3]:"")+z+(Ge&&p==="("?")":""),B){for(G=-1,ue=D.length;++G<ue;)if(Ae=D.charCodeAt(G),48>Ae||Ae>57){z=(Ae===46?i+D.slice(G+1):D.slice(G))+z,D=D.slice(0,G);break}}}x&&!m&&(D=e(D,1/0));var U=k.length+D.length+z.length,ie=U<y?new Array(y-U+1).join(h):"";switch(x&&m&&(D=e(ie+D,ie.length?y-z.length:1/0),ie=""),d){case"<":D=k+D+z+ie;break;case"=":D=k+ie+D+z;break;case"^":D=ie.slice(0,U=ie.length>>1)+k+D+z+ie.slice(U);break;default:D=ie+k+D+z;break}return o(D)}return O.toString=function(){return l+""},O}function f(l,h){var d=u((l=No(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(pb(h)/3)))*3,g=Math.pow(10,-p),m=hh[8+p/3];return function(y){return d(g*y)+m}}return{format:u,formatPrefix:f}}var _a,Le;vb({thousands:",",grouping:[3],currency:["$",""]});function vb(t){return _a=xb(t),Le=_a.format,_a}const dh=1;function Ya(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,s=.5,a=0;const u=f=>(f-t[0])/n*r+e[0];return u.invert=f=>(f-e[0])/r*n+t[0],u.domain=function(f){if(arguments.length){if(t=ib(f),n=t[1]-t[0],n<dh){n=dh;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return u}else return t},u.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],u):e},u.numberingOffset=function(f){return arguments.length?(a=f,u):a},u.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),u):i},u.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),u):i},u.paddingOuter=function(f){return arguments.length?(o=f,u):o},u.align=function(f){return arguments.length?(s=Math.max(0,Math.min(1,f)),u):s},u.step=()=>r/n,u.bandwidth=()=>u.step(),u.ticks=f=>{const l=u.align(),h=u.numberingOffset();return lb(t[0]-l+h,t[1]-l+h,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(d=>d-a)},u.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const d=Qa(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?Le(","):Le(".3s");return p=>d(p+a)},u.copy=()=>Ya().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),u}function wb(){const t=Ya().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)),c=Math.max(1,Qa(i[0],i[1],r)),u=[];for(let f=s.index;f<=a.index;f++){const l=e.chromosomes[f],h=Math.max(l.continuousStart+c,i[0]-(i[0]-l.continuousStart)%c),d=Math.min(l.continuousEnd-c/4,i[1]+1);for(let p=h;p<=d;p+=c){const g=p-o;g>=i[0]&&g<i[1]&&u.push(g)}}return u},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(),u=Qa(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?Le(","):Le(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>u(f(l)+a)};const n=t.copy;return t.copy=()=>n().genome(e),t}function Eb(t){return t.type=="locus"}function ct(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function Qt(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 Wa=Symbol("implicit");function Xa(){var t=new Map,e=[],n=[],r=Wa;function i(o){var s=o+"",a=t.get(s);if(!a){if(r!==Wa)return r;t.set(s,a=e.push(o))}return n[(a-1)%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Map;for(const s of o){const a=s+"";t.has(a)||t.set(a,e.push(s))}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 Xa(e,n).unknown(r)},ct.apply(i,arguments),i}function _n(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Yr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Vt(){}var bn=.7,Yn=1/bn,Wn="\\s*([+-]?\\d+)\\s*",Wr="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",ut="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Sb=/^#([0-9a-f]{3,8})$/,Cb=new RegExp("^rgb\\("+[Wn,Wn,Wn]+"\\)$"),Db=new RegExp("^rgb\\("+[ut,ut,ut]+"\\)$"),Mb=new RegExp("^rgba\\("+[Wn,Wn,Wn,Wr]+"\\)$"),Ib=new RegExp("^rgba\\("+[ut,ut,ut,Wr]+"\\)$"),Tb=new RegExp("^hsl\\("+[Wr,ut,ut]+"\\)$"),Nb=new RegExp("^hsla\\("+[Wr,ut,ut,Wr]+"\\)$"),ph={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};_n(Vt,Xr,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:gh,formatHex:gh,formatHsl:Lb,formatRgb:mh,toString:mh});function gh(){return this.rgb().formatHex()}function Lb(){return vh(this).formatHsl()}function mh(){return this.rgb().formatRgb()}function Xr(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Sb.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?yh(e):n===3?new me(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Lo(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Lo(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=Cb.exec(t))?new me(e[1],e[2],e[3],1):(e=Db.exec(t))?new me(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Mb.exec(t))?Lo(e[1],e[2],e[3],e[4]):(e=Ib.exec(t))?Lo(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Tb.exec(t))?xh(e[1],e[2]/100,e[3]/100,1):(e=Nb.exec(t))?xh(e[1],e[2]/100,e[3]/100,e[4]):ph.hasOwnProperty(t)?yh(ph[t]):t==="transparent"?new me(NaN,NaN,NaN,0):null}function yh(t){return new me(t>>16&255,t>>8&255,t&255,1)}function Lo(t,e,n,r){return r<=0&&(t=e=n=NaN),new me(t,e,n,r)}function qa(t){return t instanceof Vt||(t=Xr(t)),t?(t=t.rgb(),new me(t.r,t.g,t.b,t.opacity)):new me}function ko(t,e,n,r){return arguments.length===1?qa(t):new me(t,e,n,r==null?1:r)}function me(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}_n(me,ko,Yr(Vt,{brighter:function(t){return t=t==null?Yn:Math.pow(Yn,t),new me(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=t==null?bn:Math.pow(bn,t),new me(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){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:Ah,formatHex:Ah,formatRgb:bh,toString:bh}));function Ah(){return"#"+Za(this.r)+Za(this.g)+Za(this.b)}function bh(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(t===1?")":", "+t+")")}function Za(t){return t=Math.max(0,Math.min(255,Math.round(t)||0)),(t<16?"0":"")+t.toString(16)}function xh(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new lt(t,e,n,r)}function vh(t){if(t instanceof lt)return new lt(t.h,t.s,t.l,t.opacity);if(t instanceof Vt||(t=Xr(t)),!t)return new lt;if(t instanceof lt)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,c=(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/=c<.5?o+i:2-o-i,s*=60):a=c>0&&c<1?0:s,new lt(s,a,c,t.opacity)}function Ka(t,e,n,r){return arguments.length===1?vh(t):new lt(t,e,n,r==null?1:r)}function lt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}_n(lt,Ka,Yr(Vt,{brighter:function(t){return t=t==null?Yn:Math.pow(Yn,t),new lt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?bn:Math.pow(bn,t),new lt(this.h,this.s,this.l*t,this.opacity)},rgb:function(){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 me(Ja(t>=240?t-240:t+120,i,r),Ja(t,i,r),Ja(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"hsl(":"hsla(")+(this.h||0)+", "+(this.s||0)*100+"%, "+(this.l||0)*100+"%"+(t===1?")":", "+t+")")}}));function Ja(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 wh=Math.PI/180,Eh=180/Math.PI,Oo=18,Sh=.96422,Ch=1,Dh=.82521,Mh=4/29,Xn=6/29,Ih=3*Xn*Xn,kb=Xn*Xn*Xn;function Th(t){if(t instanceof ft)return new ft(t.l,t.a,t.b,t.opacity);if(t instanceof Dt)return Nh(t);t instanceof me||(t=qa(t));var e=rc(t.r),n=rc(t.g),r=rc(t.b),i=ec((.2225045*e+.7168786*n+.0606169*r)/Ch),o,s;return e===n&&n===r?o=s=i:(o=ec((.4360747*e+.3850649*n+.1430804*r)/Sh),s=ec((.0139322*e+.0971045*n+.7141733*r)/Dh)),new ft(116*i-16,500*(o-i),200*(i-s),t.opacity)}function $a(t,e,n,r){return arguments.length===1?Th(t):new ft(t,e,n,r==null?1:r)}function ft(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}_n(ft,$a,Yr(Vt,{brighter:function(t){return new ft(this.l+Oo*(t==null?1:t),this.a,this.b,this.opacity)},darker:function(t){return new ft(this.l-Oo*(t==null?1:t),this.a,this.b,this.opacity)},rgb:function(){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=Sh*tc(e),t=Ch*tc(t),n=Dh*tc(n),new me(nc(3.1338561*e-1.6168667*t-.4906146*n),nc(-.9787684*e+1.9161415*t+.033454*n),nc(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function ec(t){return t>kb?Math.pow(t,1/3):t/Ih+Mh}function tc(t){return t>Xn?t*t*t:Ih*(t-Mh)}function nc(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function rc(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Ob(t){if(t instanceof Dt)return new Dt(t.h,t.c,t.l,t.opacity);if(t instanceof ft||(t=Th(t)),t.a===0&&t.b===0)return new Dt(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Eh;return new Dt(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function ic(t,e,n,r){return arguments.length===1?Ob(t):new Dt(t,e,n,r==null?1:r)}function Dt(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function Nh(t){if(isNaN(t.h))return new ft(t.l,0,0,t.opacity);var e=t.h*wh;return new ft(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}_n(Dt,ic,Yr(Vt,{brighter:function(t){return new Dt(this.h,this.c,this.l+Oo*(t==null?1:t),this.opacity)},darker:function(t){return new Dt(this.h,this.c,this.l-Oo*(t==null?1:t),this.opacity)},rgb:function(){return Nh(this).rgb()}}));var Lh=-.14861,oc=1.78277,sc=-.29227,Bo=-.90649,qr=1.97294,kh=qr*Bo,Oh=qr*oc,Bh=oc*sc-Bo*Lh;function Bb(t){if(t instanceof xn)return new xn(t.h,t.s,t.l,t.opacity);t instanceof me||(t=qa(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(Bh*r+kh*e-Oh*n)/(Bh+kh-Oh),o=r-i,s=(qr*(n-i)-sc*o)/Bo,a=Math.sqrt(s*s+o*o)/(qr*i*(1-i)),c=a?Math.atan2(s,o)*Eh-120:NaN;return new xn(c<0?c+360:c,a,i,t.opacity)}function ac(t,e,n,r){return arguments.length===1?Bb(t):new xn(t,e,n,r==null?1:r)}function xn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}_n(xn,ac,Yr(Vt,{brighter:function(t){return t=t==null?Yn:Math.pow(Yn,t),new xn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?bn:Math.pow(bn,t),new xn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*wh,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new me(255*(e+n*(Lh*r+oc*i)),255*(e+n*(sc*r+Bo*i)),255*(e+n*(qr*r)),this.opacity)}}));function Ph(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 Fh(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 Ph((n-r/e)*e,s,i,o,a)}}function zh(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 Ph((n-r/e)*e,i,o,s,a)}}var Po=t=>()=>t;function Rh(t,e){return function(n){return t+n*e}}function Pb(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 Fo(t,e){var n=e-t;return n?Rh(t,n>180||n<-180?n-360*Math.round(n/360):n):Po(isNaN(t)?e:t)}function Fb(t){return(t=+t)==1?de:function(e,n){return n-e?Pb(e,n,t):Po(isNaN(e)?n:e)}}function de(t,e){var n=e-t;return n?Rh(t,n):Po(isNaN(t)?e:t)}var cc=function t(e){var n=Fb(e);function r(i,o){var s=n((i=ko(i)).r,(o=ko(o)).r),a=n(i.g,o.g),c=n(i.b,o.b),u=de(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r}(1);function Uh(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=ko(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(c){return a.r=r(c),a.g=i(c),a.b=o(c),a+""}}}var zb=Uh(Fh),Rb=Uh(zh);function uc(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 jh(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Ub(t,e){return(jh(e)?uc:Gh)(t,e)}function Gh(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]=_t(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 Hh(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function tt(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function Qh(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]=_t(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var lc=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,fc=new RegExp(lc.source,"g");function jb(t){return function(){return t}}function Gb(t){return function(e){return t(e)+""}}function Vh(t,e){var n=lc.lastIndex=fc.lastIndex=0,r,i,o,s=-1,a=[],c=[];for(t=t+"",e=e+"";(r=lc.exec(t))&&(i=fc.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,c.push({i:s,x:tt(r,i)})),n=fc.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?c[0]?Gb(c[0].x):jb(e):(e=c.length,function(u){for(var f=0,l;f<e;++f)a[(l=c[f]).i]=l.x(u);return a.join("")})}function _t(t,e){var n=typeof e,r;return e==null||n==="boolean"?Po(e):(n==="number"?tt:n==="string"?(r=Xr(e))?(e=r,cc):Vh:e instanceof Xr?cc:e instanceof Date?Hh:jh(e)?uc:Array.isArray(e)?Gh:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?Qh:tt)(t,e)}function Hb(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function Qb(t,e){var n=Fo(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function Zr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var _h=180/Math.PI,hc={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Yh(t,e,n,r,i,o){var s,a,c;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,c/=a),t*r<e*n&&(t=-t,e=-e,c=-c,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*_h,skewX:Math.atan(c)*_h,scaleX:s,scaleY:a}}var zo;function Vb(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?hc:Yh(e.a,e.b,e.c,e.d,e.e,e.f)}function _b(t){return t==null||(zo||(zo=document.createElementNS("http://www.w3.org/2000/svg","g")),zo.setAttribute("transform",t),!(t=zo.transform.baseVal.consolidate()))?hc:(t=t.matrix,Yh(t.a,t.b,t.c,t.d,t.e,t.f))}function Wh(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,h,d,p){if(u!==l||f!==h){var g=d.push("translate(",null,e,null,n);p.push({i:g-4,x:tt(u,l)},{i:g-2,x:tt(f,h)})}else(l||h)&&d.push("translate("+l+e+h+n)}function s(u,f,l,h){u!==f?(u-f>180?f+=360:f-u>180&&(u+=360),h.push({i:l.push(i(l)+"rotate(",null,r)-2,x:tt(u,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(u,f,l,h){u!==f?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:tt(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,h,d,p){if(u!==l||f!==h){var g=d.push(i(d)+"scale(",null,",",null,")");p.push({i:g-4,x:tt(u,l)},{i:g-2,x:tt(f,h)})}else(l!==1||h!==1)&&d.push(i(d)+"scale("+l+","+h+")")}return function(u,f){var l=[],h=[];return u=t(u),f=t(f),o(u.translateX,u.translateY,f.translateX,f.translateY,l,h),s(u.rotate,f.rotate,l,h),a(u.skewX,f.skewX,l,h),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,l,h),u=f=null,function(d){for(var p=-1,g=h.length,m;++p<g;)l[(m=h[p]).i]=m.x(d);return l.join("")}}}var Yb=Wh(Vb,"px, ","px)","deg)"),Wb=Wh(_b,", ",")",")"),Xb=1e-12;function Xh(t){return((t=Math.exp(t))+1/t)/2}function qb(t){return((t=Math.exp(t))-1/t)/2}function Zb(t){return((t=Math.exp(2*t))-1)/(t+1)}var qh=function t(e,n,r){function i(o,s){var a=o[0],c=o[1],u=o[2],f=s[0],l=s[1],h=s[2],d=f-a,p=l-c,g=d*d+p*p,m,y;if(g<Xb)y=Math.log(h/u)/e,m=function(w){return[a+w*d,c+w*p,u*Math.exp(e*w*y)]};else{var x=Math.sqrt(g),v=(h*h-u*u+r*g)/(2*u*n*x),S=(h*h-u*u-r*g)/(2*h*n*x),b=Math.log(Math.sqrt(v*v+1)-v),A=Math.log(Math.sqrt(S*S+1)-S);y=(A-b)/e,m=function(w){var E=w*y,B=Xh(b),O=u/(n*x)*(B*Zb(e*E+b)-qb(b));return[a+O*d,c+O*p,u*B/Xh(e*E+b)]}}return m.duration=y*1e3*e/Math.SQRT2,m}return i.rho=function(o){var s=Math.max(.001,+o),a=s*s,c=a*a;return t(s,a,c)},i}(Math.SQRT2,2,4);function Zh(t){return function(e,n){var r=t((e=Ka(e)).h,(n=Ka(n)).h),i=de(e.s,n.s),o=de(e.l,n.l),s=de(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+""}}}var Kb=Zh(Fo),Jb=Zh(de);function $b(t,e){var n=de((t=$a(t)).l,(e=$a(e)).l),r=de(t.a,e.a),i=de(t.b,e.b),o=de(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 Kh(t){return function(e,n){var r=t((e=ic(e)).h,(n=ic(n)).h),i=de(e.c,n.c),o=de(e.l,n.l),s=de(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+""}}}var ex=Kh(Fo),tx=Kh(de);function Jh(t){return function e(n){n=+n;function r(i,o){var s=t((i=ac(i)).h,(o=ac(o)).h),a=de(i.s,o.s),c=de(i.l,o.l),u=de(i.opacity,o.opacity);return function(f){return i.h=s(f),i.s=a(f),i.l=c(Math.pow(f,n)),i.opacity=u(f),i+""}}return r.gamma=e,r}(1)}var nx=Jh(Fo),rx=Jh(de);function dc(t,e){e===void 0&&(e=t,t=_t);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 ix(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var ox=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",interpolate:_t,interpolateArray:Ub,interpolateBasis:Fh,interpolateBasisClosed:zh,interpolateDate:Hh,interpolateDiscrete:Hb,interpolateHue:Qb,interpolateNumber:tt,interpolateNumberArray:uc,interpolateObject:Qh,interpolateRound:Zr,interpolateString:Vh,interpolateTransformCss:Yb,interpolateTransformSvg:Wb,interpolateZoom:qh,interpolateRgb:cc,interpolateRgbBasis:zb,interpolateRgbBasisClosed:Rb,interpolateHsl:Kb,interpolateHslLong:Jb,interpolateLab:$b,interpolateHcl:ex,interpolateHclLong:tx,interpolateCubehelix:nx,interpolateCubehelixLong:rx,piecewise:dc,quantize:ix});function sx(t){return function(){return t}}function pc(t){return+t}var $h=[0,1];function ke(t){return t}function gc(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:sx(isNaN(e)?NaN:.5)}function ax(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function cx(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=gc(i,r),o=n(s,o)):(r=gc(r,i),o=n(o,s)),function(a){return o(r(a))}}function ux(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]=gc(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var c=Nr(t,a,1,r)-1;return o[c](i[c](a))}}function Kr(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Ro(){var t=$h,e=$h,n=_t,r,i,o,s=ke,a,c,u;function f(){var h=Math.min(t.length,e.length);return s!==ke&&(s=ax(t[0],t[h-1])),a=h>2?ux:cx,c=u=null,l}function l(h){return h==null||isNaN(h=+h)?o:(c||(c=a(t.map(r),e,n)))(r(s(h)))}return l.invert=function(h){return s(i((u||(u=a(e,t.map(r),tt)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,pc),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=Zr,f()},l.clamp=function(h){return arguments.length?(s=h?!0:ke,f()):s!==ke},l.interpolate=function(h){return arguments.length?(n=h,f()):n},l.unknown=function(h){return arguments.length?(o=h,l):o},function(h,d){return r=h,i=d,f()}}function ed(){return Ro()(ke,ke)}function td(t,e,n,r){var i=fo(t,e,n),o;switch(r=Hn(r==null?",f":r),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=Cf(i,s))&&(r.precision=o),ma(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Df(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=Sf(i))&&(r.precision=o-(r.type==="%")*2);break}}return Qn(r)}function vn(t){var e=t.domain;return t.ticks=function(n){var r=e();return pa(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return td(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],c,u,f=10;for(a<s&&(u=s,s=a,a=u,u=i,i=o,o=u);f-- >0;){if(u=mf(s,a,n),u===c)return r[i]=s,r[o]=a,e(r);if(u>0)s=Math.floor(s/u)*u,a=Math.ceil(a/u)*u;else if(u<0)s=Math.ceil(s*u)/u,a=Math.floor(a*u)/u;else break;c=u}return t},t}function nd(){var t=ed();return t.copy=function(){return Kr(t,nd())},ct.apply(t,arguments),vn(t)}function rd(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,pc),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return rd(t).unknown(e)},t=arguments.length?Array.from(t,pc):[0,1],vn(n)}function id(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 od(t){return Math.log(t)}function sd(t){return Math.exp(t)}function lx(t){return-Math.log(-t)}function fx(t){return-Math.exp(-t)}function hx(t){return isFinite(t)?+("1e"+t):t<0?0:t}function dx(t){return t===10?hx:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}function px(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),function(e){return Math.log(e)/t})}function ad(t){return function(e){return-t(-e)}}function mc(t){var e=t(od,sd),n=e.domain,r=10,i,o;function s(){return i=px(r),o=dx(r),n()[0]<0?(i=ad(i),o=ad(o),t(lx,fx)):t(od,sd),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=function(a){var c=n(),u=c[0],f=c[c.length-1],l;(l=f<u)&&(h=u,u=f,f=h);var h=i(u),d=i(f),p,g,m,y=a==null?10:+a,x=[];if(!(r%1)&&d-h<y){if(h=Math.floor(h),d=Math.ceil(d),u>0){for(;h<=d;++h)for(g=1,p=o(h);g<r;++g)if(m=p*g,!(m<u)){if(m>f)break;x.push(m)}}else for(;h<=d;++h)for(g=r-1,p=o(h);g>=1;--g)if(m=p*g,!(m<u)){if(m>f)break;x.push(m)}x.length*2<y&&(x=pa(u,f,y))}else x=pa(h,d,Math.min(d-h,y)).map(o);return l?x.reverse():x},e.tickFormat=function(a,c){if(c==null&&(c=r===10?".0e":","),typeof c!="function"&&(c=Qn(c)),a===1/0)return c;a==null&&(a=10);var u=Math.max(1,r*a/e.ticks().length);return function(f){var l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=u?c(f):""}},e.nice=function(){return n(id(n(),{floor:function(a){return o(Math.floor(i(a)))},ceil:function(a){return o(Math.ceil(i(a)))}}))},e}function yc(){var t=mc(Ro()).domain([1,10]);return t.copy=function(){return Kr(t,yc()).base(t.base())},ct.apply(t,arguments),t}function cd(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function ud(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Ac(t){var e=1,n=t(cd(e),ud(e));return n.constant=function(r){return arguments.length?t(cd(e=+r),ud(e)):e},vn(n)}function ld(){var t=Ac(Ro());return t.copy=function(){return Kr(t,ld()).constant(t.constant())},ct.apply(t,arguments)}function fd(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function gx(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function mx(t){return t<0?-t*t:t*t}function bc(t){var e=t(ke,ke),n=1;function r(){return n===1?t(ke,ke):n===.5?t(gx,mx):t(fd(n),fd(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},vn(e)}function xc(){var t=bc(Ro());return t.copy=function(){return Kr(t,xc()).exponent(t.exponent())},ct.apply(t,arguments),t}function yx(){return xc.apply(null,arguments).exponent(.5)}function hd(){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]=yf(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[Nr(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(jn),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 hd().domain(t).range(e).unknown(r)},ct.apply(o,arguments)}function dd(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function s(c){return c!=null&&c<=c?i[Nr(r,c,0,n)]:o}function a(){var c=-1;for(r=new Array(n);++c<n;)r[c]=((c+1)*e-(c-n)*t)/(n+1);return s}return s.domain=function(c){return arguments.length?([t,e]=c,t=+t,e=+e,a()):[t,e]},s.range=function(c){return arguments.length?(n=(i=Array.from(c)).length-1,a()):i.slice()},s.invertExtent=function(c){var u=i.indexOf(c);return u<0?[NaN,NaN]:u<1?[t,r[0]]:u>=n?[r[n-1],e]:[r[u-1],r[u]]},s.unknown=function(c){return arguments.length&&(o=c),s},s.thresholds=function(){return r.slice()},s.copy=function(){return dd().domain([t,e]).range(i).unknown(o)},ct.apply(vn(s),arguments)}function pd(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[Nr(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 pd().domain(t).range(e).unknown(n)},ct.apply(i,arguments)}function Ax(t){return new Date(t)}function bx(t){return t instanceof Date?+t:+new Date(+t)}function vc(t,e,n,r,i,o,s,a,c,u){var f=ed(),l=f.invert,h=f.domain,d=u(".%L"),p=u(":%S"),g=u("%I:%M"),m=u("%I %p"),y=u("%a %d"),x=u("%b %d"),v=u("%B"),S=u("%Y");function b(A){return(c(A)<A?d:a(A)<A?p:s(A)<A?g:o(A)<A?m:r(A)<A?i(A)<A?y:x:n(A)<A?v:S)(A)}return f.invert=function(A){return new Date(l(A))},f.domain=function(A){return arguments.length?h(Array.from(A,bx)):h().map(Ax)},f.ticks=function(A){var w=h();return t(w[0],w[w.length-1],A==null?10:A)},f.tickFormat=function(A,w){return w==null?b:u(w)},f.nice=function(A){var w=h();return(!A||typeof A.range!="function")&&(A=e(w[0],w[w.length-1],A==null?10:A)),A?h(id(w,A)):f},f.copy=function(){return Kr(f,vc(t,e,n,r,i,o,s,a,c,u))},f}function xx(){return ct.apply(vc(EA,SA,Gt,yo,mo,gn,Sa,Ea,jt,ka).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function vx(){return ct.apply(vc(vA,wA,Ht,bo,Ao,yn,Ma,Da,jt,Oa).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Uo(){var t=0,e=1,n,r,i,o,s=ke,a=!1,c;function u(l){return l==null||isNaN(l=+l)?c:s(i===0?.5:(l=(o(l)-n)*i,a?Math.max(0,Math.min(1,l)):l))}u.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),u):[t,e]},u.clamp=function(l){return arguments.length?(a=!!l,u):a},u.interpolator=function(l){return arguments.length?(s=l,u):s};function f(l){return function(h){var d,p;return arguments.length?([d,p]=h,s=l(d,p),u):[s(0),s(1)]}}return u.range=f(_t),u.rangeRound=f(Zr),u.unknown=function(l){return arguments.length?(c=l,u):c},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),u}}function Yt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function wc(){var t=vn(Uo()(ke));return t.copy=function(){return Yt(t,wc())},Qt.apply(t,arguments)}function gd(){var t=mc(Uo()).domain([1,10]);return t.copy=function(){return Yt(t,gd()).base(t.base())},Qt.apply(t,arguments)}function md(){var t=Ac(Uo());return t.copy=function(){return Yt(t,md()).constant(t.constant())},Qt.apply(t,arguments)}function Ec(){var t=bc(Uo());return t.copy=function(){return Yt(t,Ec()).exponent(t.exponent())},Qt.apply(t,arguments)}function wx(){return Ec.apply(null,arguments).exponent(.5)}function jo(){var t=0,e=.5,n=1,r=1,i,o,s,a,c,u=ke,f,l=!1,h;function d(g){return isNaN(g=+g)?h:(g=.5+((g=+f(g))-o)*(r*g<r*o?a:c),u(l?Math.max(0,Math.min(1,g)):g))}d.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),c=o===s?0:.5/(s-o),r=o<i?-1:1,d):[t,e,n]},d.clamp=function(g){return arguments.length?(l=!!g,d):l},d.interpolator=function(g){return arguments.length?(u=g,d):u};function p(g){return function(m){var y,x,v;return arguments.length?([y,x,v]=m,u=dc(g,[y,x,v]),d):[u(0),u(.5),u(1)]}}return d.range=p(_t),d.rangeRound=p(Zr),d.unknown=function(g){return arguments.length?(h=g,d):h},function(g){return f=g,i=g(t),o=g(e),s=g(n),a=i===o?0:.5/(o-i),c=o===s?0:.5/(s-o),r=o<i?-1:1,d}}function yd(){var t=vn(jo()(ke));return t.copy=function(){return Yt(t,yd())},Qt.apply(t,arguments)}function Ad(){var t=mc(jo()).domain([.1,1,10]);return t.copy=function(){return Yt(t,Ad()).base(t.base())},Qt.apply(t,arguments)}function bd(){var t=Ac(jo());return t.copy=function(){return Yt(t,bd()).constant(t.constant())},Qt.apply(t,arguments)}function Sc(){var t=bc(jo());return t.copy=function(){return Yt(t,Sc()).exponent(t.exponent())},Qt.apply(t,arguments)}function Ex(){return Sc.apply(null,arguments).exponent(.5)}function Cc(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const Sx="identity",qn="linear",Wt="log",Jr="pow",$r="sqrt",Go="symlog",xd="time",vd="utc",ht="sequential",Zn="diverging",Dc="quantile",wd="quantize",Ed="threshold",Mc="ordinal",Ic="point",Sd="band",Tc="bin-ordinal",le="continuous",ei="discrete",ti="discretizing",We="interpolating",Cd="temporal";function Cx(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 Dx(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,s,a,c,u;for(i<r&&(a=r,r=i,i=a),c=0,u=n.length;c<u;++c)n[c]>=r&&n[c]<=i&&(o<0&&(o=c),s=c);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 Nc(){const t=Xa().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,s=!1,a=0,c=0,u=.5;delete t.unknown;function f(){const l=e().length,h=r[1]<r[0],d=r[1-h],p=Cc(l,a,c);let g=r[h-0];i=(d-g)/(p||1),s&&(i=Math.floor(i)),g+=(d-g-i*(l-a))*u,o=i*(1-a),s&&(g=Math.round(g),o=Math.round(o));const m=ho(l).map(y=>g+i*y);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?(c=Math.max(0,Math.min(1,l)),a=c,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?(c=Math.max(0,Math.min(1,l)),f()):c},t.align=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const h=r[1]<r[0],d=h?n().reverse():n(),p=d.length-1;let g=+l[0],m=+l[1],y,x,v;if(!(g!==g||m!==m)&&(m<g&&(v=g,g=m,m=v),!(m<d[0]||g>r[1-h])))return y=Math.max(0,la(d,g)-1),x=g===m?y:la(d,m)-1,g-d[y]>o+1e-10&&++y,h&&(v=y,y=p-x,x=p-v),y>x?void 0:e().slice(y,x+1)},t.invert=function(l){const h=t.invertRange([l,l]);return h&&h[0]},t.copy=function(){return Nc().domain(e()).range(r).round(s).paddingInner(a).paddingOuter(c).align(u)},f()}function Dd(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return Dd(e())},t}function Mx(){return Dd(Nc().paddingInner(1))}var Ix=Array.prototype.map;function Tx(t){return Ix.call(t,Ir)}const Nx=Array.prototype.slice;function Md(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(Nr(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=Tx(r),n):t.slice()},n.range=function(r){return arguments.length?(e=Nx.call(r),n):e.slice()},n.tickFormat=function(r,i){return td(t[0],et(t),r==null?10:r,i)},n.copy=function(){return Md().domain(n.domain()).range(n.range())},n}const Ho={};function Lx(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?Cx(o):o.invertExtent?Dx(o):void 0),o.type=t,o};return r.metadata=lo(ia(n)),r}function W(t,e,n){return arguments.length>1?(Ho[t]=Lx(t,e,n),this):kx(t)?Ho[t]:void 0}W(Sx,rd),W(qn,nd,le),W(Wt,yc,[le,Wt]),W(Jr,xc,le),W($r,yx,le),W(Go,ld,le),W(xd,xx,[le,Cd]),W(vd,vx,[le,Cd]),W(ht,wc,[le,We]),W("".concat(ht,"-").concat(qn),wc,[le,We]),W("".concat(ht,"-").concat(Wt),gd,[le,We,Wt]),W("".concat(ht,"-").concat(Jr),Ec,[le,We]),W("".concat(ht,"-").concat($r),wx,[le,We]),W("".concat(ht,"-").concat(Go),md,[le,We]),W("".concat(Zn,"-").concat(qn),yd,[le,We]),W("".concat(Zn,"-").concat(Wt),Ad,[le,We,Wt]),W("".concat(Zn,"-").concat(Jr),Sc,[le,We]),W("".concat(Zn,"-").concat($r),Ex,[le,We]),W("".concat(Zn,"-").concat(Go),bd,[le,We]),W(Dc,hd,[ti,Dc]),W(wd,dd,ti),W(Ed,pd,ti),W(Tc,Md,[ei,ti]),W(Mc,Xa,ei),W(Sd,Nc,ei),W(Ic,Mx,ei);function kx(t){return dn(Ho,t)}function ni(t,e){const n=Ho[t];return n&&n.metadata[e]}function nt(t){return ni(t,le)}function Xt(t){return ni(t,ei)}function Kn(t){return ni(t,ti)}function Id(t){return ni(t,Wt)}function Qo(t){return ni(t,We)}function Ox(t,e){const n=e[0],r=et(e)-n;return function(i){return t(n+i*r)}}function Vo(t,e,n){return dc(Td(e||"rgb",n),t)}function Bx(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function Td(t,e){const n=ox[Px(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function Px(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const Fx={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"},zx={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 Nd(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 Ld(t,e){for(const n in t)Lc(n,e(t[n]))}const kd={};Ld(zx,Nd),Ld(Fx,t=>Vo(Nd(t)));function Lc(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(kd[t]=e,this):kd[t]}var AT="";function Rx(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}/**
5
+ `)}function u(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?dv(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:a,formatBody:s,formatRows:c,formatRow:u,formatValue:f}}var hv=gd(" "),pv=hv.parseRows;function mv(t){return t}function gv(t){if(t==null)return mv;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],a=t.translate[1];return function(s,c){c||(e=n=0);var u=2,f=s.length,l=new Array(f);for(l[0]=(e+=s[0])*r+o,l[1]=(n+=s[1])*i+a;u<f;)l[u]=s[u],++u;return l}}function yv(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function vv(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return yd(t,n)})}:yd(t,e)}function yd(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=vd(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 vd(t,e){var n=gv(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var d=r[f<0?~f:f],h=0,p=d.length;h<p;++h)l.push(n(d[h],h));f<0&&yv(l,p)}function o(f){return n(f)}function a(f){for(var l=[],d=0,h=f.length;d<h;++d)i(f[d],l);return l.length<2&&l.push(l[0]),l}function s(f){for(var l=a(f);l.length<4;)l.push(l[0]);return l}function c(f){return f.map(s)}function u(f){var l=f.type,d;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(u)};case"Point":d=o(f.coordinates);break;case"MultiPoint":d=f.coordinates.map(o);break;case"LineString":d=a(f.arcs);break;case"MultiLineString":d=f.arcs.map(a);break;case"Polygon":d=c(f.arcs);break;case"MultiPolygon":d=f.arcs.map(c);break;default:return null}return{type:l,coordinates:d}}return u(e)}function bv(t,e){var n={},r={},i={},o=[],a=-1;e.forEach(function(u,f){var l=t.arcs[u<0?~u:u],d;l.length<3&&!l[1][0]&&!l[1][1]&&(d=e[++a],e[a]=u,e[f]=d)}),e.forEach(function(u){var f=s(u),l=f[0],d=f[1],h,p;if(h=i[l])if(delete i[h.end],h.push(u),h.end=d,p=r[d]){delete r[p.start];var m=p===h?h:h.concat(p);r[m.start=h.start]=i[m.end=p.end]=m}else r[h.start]=i[h.end]=h;else if(h=r[d])if(delete r[h.start],h.unshift(u),h.start=l,p=i[l]){delete i[p.end];var g=p===h?h:p.concat(h);r[g.start=p.start]=i[g.end=h.end]=g}else r[h.start]=i[h.end]=h;else h=[u],r[h.start=l]=i[h.end=d]=h});function s(u){var f=t.arcs[u<0?~u:u],l=f[0],d;return t.transform?(d=[0,0],f.forEach(function(h){d[0]+=h[0],d[1]+=h[1]})):d=f[f.length-1],u<0?[d,l]:[l,d]}function c(u,f){for(var l in u){var d=u[l];delete f[d.start],delete d.start,delete d.end,d.forEach(function(h){n[h<0?~h:h]=1}),o.push(d)}}return c(i,r),c(r,i),e.forEach(function(u){n[u<0?~u:u]||o.push([u])}),o}function Av(t){return vd(t,xv.apply(this,arguments))}function xv(t,e,n){var r,i,o;if(arguments.length>1)r=wv(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:bv(t,r)}}function wv(t,e,n){var r=[],i=[],o;function a(l){var d=l<0?~l:l;(i[d]||(i[d]=[])).push({i:l,g:o})}function s(l){l.forEach(a)}function c(l){l.forEach(s)}function u(l){l.forEach(c)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":s(l.arcs);break;case"MultiLineString":case"Polygon":c(l.arcs);break;case"MultiPolygon":u(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 Dn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Cv(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function oi(t){let e,n,r;t.length!==2?(e=Dn,n=(s,c)=>Dn(t(s),c),r=(s,c)=>t(s)-c):(e=t===Dn||t===Cv?t:Sv,n=t,r=t);function i(s,c,u=0,f=s.length){if(u<f){if(e(c,c)!==0)return f;do{const l=u+f>>>1;n(s[l],c)<0?u=l+1:f=l}while(u<f)}return u}function o(s,c,u=0,f=s.length){if(u<f){if(e(c,c)!==0)return f;do{const l=u+f>>>1;n(s[l],c)<=0?u=l+1:f=l}while(u<f)}return u}function a(s,c,u=0,f=s.length){const l=i(s,c,u,f-1);return l>u&&r(s[l-1],c)>-r(s[l],c)?l-1:l}return{left:i,center:a,right:o}}function Sv(){return 0}function bd(t){return t===null?NaN:+t}const Ad=oi(Dn),tc=Ad.right;Ad.left,oi(bd).center;var lr=tc;function Ev(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 fr extends Map{constructor(e,n=Tv){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(xd(this,e))}has(e){return super.has(xd(this,e))}set(e,n){return super.set(Dv(this,e),n)}delete(e){return super.delete(Mv(this,e))}}function xd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Dv({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Mv({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Tv(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Ko(t){return t}function ai(t,...e){return nc(t,Ko,Ko,e)}function Iv(t,...e){return nc(t,Array.from,Ko,e)}function kv(t,e,...n){return nc(t,Ko,e,n)}function nc(t,e,n,r){return function i(o,a){if(a>=r.length)return n(o);const s=new fr,c=r[a++];let u=-1;for(const f of o){const l=c(f,++u,o),d=s.get(l);d?d.push(f):s.set(l,[f])}for(const[f,l]of s)s.set(f,i(l,a));return e(s)}(t,0)}function Nv(t,e){return Array.from(e,n=>t[n])}function Lv(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[n]=e;if(n&&n.length!==2||e.length>1){const r=Uint32Array.from(t,(i,o)=>o);return e.length>1?(e=e.map(i=>t.map(i)),r.sort((i,o)=>{for(const a of e){const s=rc(a[i],a[o]);if(s)return s}})):(n=t.map(n),r.sort((i,o)=>rc(n[i],n[o]))),Nv(t,r)}return t.sort(Bv(n))}function Bv(t=Dn){if(t===Dn)return rc;if(typeof t!="function")throw new TypeError("compare is not a function");return(e,n)=>{const r=t(e,n);return r||r===0?r:(t(n,n)===0)-(t(e,e)===0)}}function rc(t,e){return(t==null||!(t>=t))-(e==null||!(e>=e))||(t<e?-1:t>e?1:0)}var ic=Math.sqrt(50),oc=Math.sqrt(10),ac=Math.sqrt(2);function Jo(t,e,n){var r,i=-1,o,a,s;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(s=wd(t,e,n))===0||!isFinite(s))return[];if(s>0){let c=Math.round(t/s),u=Math.round(e/s);for(c*s<t&&++c,u*s>e&&--u,a=new Array(o=u-c+1);++i<o;)a[i]=(c+i)*s}else{s=-s;let c=Math.round(t*s),u=Math.round(e*s);for(c/s<t&&++c,u/s>e&&--u,a=new Array(o=u-c+1);++i<o;)a[i]=(c+i)/s}return r&&a.reverse(),a}function wd(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>=ic?10:o>=oc?5:o>=ac?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=ic?10:o>=oc?5:o>=ac?2:1)}function Mn(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>=ic?i*=10:o>=oc?i*=5:o>=ac&&(i*=2),e<t?-i:i}function sc(t,e,n=bd){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),a=+n(t[o],o,t),s=+n(t[o+1],o+1,t);return a+(s-a)*(i-o)}}function _t(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 $o(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 Ov(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function ea(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 dr(t){return t=ea(Math.abs(t)),t?t[1]:NaN}function Pv(t,e){return function(n,r){for(var i=n.length,o=[],a=0,s=t[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),o.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=t[a=(a+1)%t.length];return o.reverse().join(e)}}function Fv(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var zv=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Wt(t){if(!(e=zv.exec(t)))throw new Error("invalid format: "+t);var e;return new cc({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]})}Wt.prototype=cc.prototype;function cc(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+""}cc.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 Rv(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 Cd;function jv(t,e){var n=ea(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Cd=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+ea(t,Math.max(0,e+o-1))[0]}function Sd(t,e){var n=ea(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")}var Ed={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Ov,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)=>Sd(t*100,e),r:Sd,s:jv,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Dd(t){return t}var Md=Array.prototype.map,Td=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Uv(t){var e=t.grouping===void 0||t.thousands===void 0?Dd:Pv(Md.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?Dd:Fv(Md.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=Wt(l);var d=l.fill,h=l.align,p=l.sign,m=l.symbol,g=l.zero,y=l.width,x=l.comma,A=l.precision,C=l.trim,b=l.type;b==="n"?(x=!0,b="g"):Ed[b]||(A===void 0&&(A=12),C=!0,b="g"),(g||d==="0"&&h==="=")&&(g=!0,d="0",h="=");var v=m==="$"?n:m==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",w=m==="$"?r:/[%p]/.test(b)?a:"",E=Ed[b],k=/[defgprs%]/.test(b);A=A===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,A)):Math.max(0,Math.min(20,A));function L(I){var P=v,Z=w,Q,fe,Se;if(b==="c")Z=E(I)+Z,I="";else{I=+I;var Cn=I<0||1/I<0;if(I=isNaN(I)?c:E(Math.abs(I),A),C&&(I=Rv(I)),Cn&&+I==0&&p!=="+"&&(Cn=!1),P=(Cn?p==="("?p:s:p==="-"||p==="("?"":p)+P,Z=(b==="s"?Td[8+Cd/3]:"")+Z+(Cn&&p==="("?")":""),k){for(Q=-1,fe=I.length;++Q<fe;)if(Se=I.charCodeAt(Q),48>Se||Se>57){Z=(Se===46?i+I.slice(Q+1):I.slice(Q))+Z,I=I.slice(0,Q);break}}}x&&!g&&(I=e(I,1/0));var W=P.length+I.length+Z.length,Ye=W<y?new Array(y-W+1).join(d):"";switch(x&&g&&(I=e(Ye+I,Ye.length?y-Z.length:1/0),Ye=""),h){case"<":I=P+I+Z+Ye;break;case"=":I=P+Ye+I+Z;break;case"^":I=Ye.slice(0,W=Ye.length>>1)+P+I+Z+Ye.slice(W);break;default:I=Ye+P+I+Z;break}return o(I)}return L.toString=function(){return l+""},L}function f(l,d){var h=u((l=Wt(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(dr(d)/3)))*3,m=Math.pow(10,-p),g=Td[8+p/3];return function(y){return h(m*y)+g}}return{format:u,formatPrefix:f}}var ta,he,uc;Gv({thousands:",",grouping:[3],currency:["$",""]});function Gv(t){return ta=Uv(t),he=ta.format,uc=ta.formatPrefix,ta}function Id(t){return Math.max(0,-dr(Math.abs(t)))}function kd(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(dr(e)/3)))*3-dr(Math.abs(t)))}function Nd(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,dr(e)-dr(t))+1}var lc=new Date,fc=new Date;function me(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 a=i(o),s=i.ceil(o);return o-a<s-o?a:s},i.offset=function(o,a){return e(o=new Date(+o),a==null?1:Math.floor(a)),o},i.range=function(o,a,s){var c=[],u;if(o=i.ceil(o),s=s==null?1:Math.floor(s),!(o<a)||!(s>0))return c;do c.push(u=new Date(+o)),e(o,s),t(o);while(u<o&&o<a);return c},i.filter=function(o){return me(function(a){if(a>=a)for(;t(a),!o(a);)a.setTime(a-1)},function(a,s){if(a>=a)if(s<0)for(;++s<=0;)for(;e(a,-1),!o(a););else for(;--s>=0;)for(;e(a,1),!o(a););})},n&&(i.count=function(o,a){return lc.setTime(+o),fc.setTime(+a),t(lc),t(fc),Math.floor(n(lc,fc))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(a){return r(a)%o===0}:function(a){return i.count(0,a)%o===0}):i}),i}var dc=me(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});dc.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?me(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):dc};var hc=dc;const Mt=1e3,Ze=Mt*60,Tt=Ze*60,Tn=Tt*24,pc=Tn*7,Ld=Tn*30,mc=Tn*365;var Hv=me(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*Mt)},function(t,e){return(e-t)/Mt},function(t){return t.getUTCSeconds()}),Xt=Hv,Qv=me(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Mt)},function(t,e){t.setTime(+t+e*Ze)},function(t,e){return(e-t)/Ze},function(t){return t.getMinutes()}),gc=Qv,Vv=me(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Mt-t.getMinutes()*Ze)},function(t,e){t.setTime(+t+e*Tt)},function(t,e){return(e-t)/Tt},function(t){return t.getHours()}),yc=Vv,Yv=me(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ze)/Tn,t=>t.getDate()-1),In=Yv;function kn(t){return me(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())*Ze)/pc})}var na=kn(0),vc=kn(1);kn(2),kn(3);var si=kn(4);kn(5),kn(6);var _v=me(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()}),ra=_v,Bd=me(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()});Bd.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:me(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)})};var Zt=Bd,Wv=me(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Ze)},function(t,e){return(e-t)/Ze},function(t){return t.getUTCMinutes()}),bc=Wv,Xv=me(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()}),Ac=Xv,Zv=me(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/Tn},function(t){return t.getUTCDate()-1}),Nn=Zv;function Ln(t){return me(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)/pc})}var ia=Ln(0),xc=Ln(1);Ln(2),Ln(3);var ci=Ln(4);Ln(5),Ln(6);var qv=me(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()}),oa=qv,Od=me(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()});Od.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:me(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)})};var qt=Od;function Pd(t,e,n,r,i,o){const a=[[Xt,1,Mt],[Xt,5,5*Mt],[Xt,15,15*Mt],[Xt,30,30*Mt],[o,1,Ze],[o,5,5*Ze],[o,15,15*Ze],[o,30,30*Ze],[i,1,Tt],[i,3,3*Tt],[i,6,6*Tt],[i,12,12*Tt],[r,1,Tn],[r,2,2*Tn],[n,1,pc],[e,1,Ld],[e,3,3*Ld],[t,1,mc]];function s(u,f,l){const d=f<u;d&&([u,f]=[f,u]);const h=l&&typeof l.range=="function"?l:c(u,f,l),p=h?h.range(u,+f+1):[];return d?p.reverse():p}function c(u,f,l){const d=Math.abs(f-u)/l,h=oi(([,,g])=>g).right(a,d);if(h===a.length)return t.every(Mn(u/mc,f/mc,l));if(h===0)return hc.every(Math.max(Mn(u,f,l),1));const[p,m]=a[d/a[h-1][2]<a[h][2]/d?h-1:h];return p.every(m)}return[s,c]}const[Kv,Jv]=Pd(qt,oa,ia,Nn,Ac,bc),[$v,eb]=Pd(Zt,ra,na,In,yc,gc),ui="year",li="quarter",fi="month",di="week",hi="date",aa="day",wc="dayofyear",pi="hours",mi="minutes",gi="seconds",sa="milliseconds";[ui,li,fi,di,hi,aa,wc,pi,mi,gi,sa].reduce((t,e,n)=>(t[e]=1+n,t),{});const tb={[ui]:Zt,[li]:ra.every(3),[fi]:ra,[di]:na,[hi]:In,[aa]:In,[wc]:In,[pi]:yc,[mi]:gc,[gi]:Xt,[sa]:hc},nb={[ui]:qt,[li]:oa.every(3),[fi]:oa,[di]:ia,[hi]:Nn,[aa]:Nn,[wc]:Nn,[pi]:Ac,[mi]:bc,[gi]:Xt,[sa]:hc};function rb(t){return tb[t]}function ib(t){return nb[t]}function Cc(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 Sc(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 yi(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Fd(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,s=t.months,c=t.shortMonths,u=vi(i),f=bi(i),l=vi(o),d=bi(o),h=vi(a),p=bi(a),m=vi(s),g=bi(s),y=vi(c),x=bi(c),A={a:Cn,A:W,b:Ye,B:Ro,c:null,d:Hd,e:Hd,f:Mb,g:zb,G:jb,H:Sb,I:Eb,j:Db,L:Qd,m:Tb,M:Ib,p:jo,q:Ys,Q:Zd,s:qd,S:kb,u:Nb,U:Lb,V:Bb,w:Ob,W:Pb,x:null,X:null,y:Fb,Y:Rb,Z:Ub,"%":Xd},C={a:ed,A:Dk,b:Mk,B:Tk,c:null,d:Yd,e:Yd,f:Vb,g:eA,G:nA,H:Gb,I:Hb,j:Qb,L:_d,m:Yb,M:_b,p:Ik,q:kk,Q:Zd,s:qd,S:Wb,u:Xb,U:Zb,V:qb,w:Kb,W:Jb,x:null,X:null,y:$b,Y:tA,Z:rA,"%":Xd},b={a:L,A:I,b:P,B:Z,c:Q,d:Ud,e:Ud,f:Ab,g:jd,G:Rd,H:Gd,I:Gd,j:gb,L:bb,m:mb,M:yb,p:k,q:pb,Q:wb,s:Cb,S:vb,u:ub,U:lb,V:fb,w:cb,W:db,x:fe,X:Se,y:jd,Y:Rd,Z:hb,"%":xb};A.x=v(n,A),A.X=v(r,A),A.c=v(e,A),C.x=v(n,C),C.X=v(r,C),C.c=v(e,C);function v(O,H){return function(X){var M=[],Ue=-1,$=0,_e=O.length,We,ur,N2;for(X instanceof Date||(X=new Date(+X));++Ue<_e;)O.charCodeAt(Ue)===37&&(M.push(O.slice($,Ue)),(ur=zd[We=O.charAt(++Ue)])!=null?We=O.charAt(++Ue):ur=We==="e"?" ":"0",(N2=H[We])&&(We=N2(X,ur)),M.push(We),$=Ue+1);return M.push(O.slice($,Ue)),M.join("")}}function w(O,H){return function(X){var M=yi(1900,void 0,1),Ue=E(M,O,X+="",0),$,_e;if(Ue!=X.length)return null;if("Q"in M)return new Date(M.Q);if("s"in M)return new Date(M.s*1e3+("L"in M?M.L:0));if(H&&!("Z"in M)&&(M.Z=0),"p"in M&&(M.H=M.H%12+M.p*12),M.m===void 0&&(M.m="q"in M?M.q:0),"V"in M){if(M.V<1||M.V>53)return null;"w"in M||(M.w=1),"Z"in M?($=Sc(yi(M.y,0,1)),_e=$.getUTCDay(),$=_e>4||_e===0?xc.ceil($):xc($),$=Nn.offset($,(M.V-1)*7),M.y=$.getUTCFullYear(),M.m=$.getUTCMonth(),M.d=$.getUTCDate()+(M.w+6)%7):($=Cc(yi(M.y,0,1)),_e=$.getDay(),$=_e>4||_e===0?vc.ceil($):vc($),$=In.offset($,(M.V-1)*7),M.y=$.getFullYear(),M.m=$.getMonth(),M.d=$.getDate()+(M.w+6)%7)}else("W"in M||"U"in M)&&("w"in M||(M.w="u"in M?M.u%7:"W"in M?1:0),_e="Z"in M?Sc(yi(M.y,0,1)).getUTCDay():Cc(yi(M.y,0,1)).getDay(),M.m=0,M.d="W"in M?(M.w+6)%7+M.W*7-(_e+5)%7:M.w+M.U*7-(_e+6)%7);return"Z"in M?(M.H+=M.Z/100|0,M.M+=M.Z%100,Sc(M)):Cc(M)}}function E(O,H,X,M){for(var Ue=0,$=H.length,_e=X.length,We,ur;Ue<$;){if(M>=_e)return-1;if(We=H.charCodeAt(Ue++),We===37){if(We=H.charAt(Ue++),ur=b[We in zd?H.charAt(Ue++):We],!ur||(M=ur(O,X,M))<0)return-1}else if(We!=X.charCodeAt(M++))return-1}return M}function k(O,H,X){var M=u.exec(H.slice(X));return M?(O.p=f.get(M[0].toLowerCase()),X+M[0].length):-1}function L(O,H,X){var M=h.exec(H.slice(X));return M?(O.w=p.get(M[0].toLowerCase()),X+M[0].length):-1}function I(O,H,X){var M=l.exec(H.slice(X));return M?(O.w=d.get(M[0].toLowerCase()),X+M[0].length):-1}function P(O,H,X){var M=y.exec(H.slice(X));return M?(O.m=x.get(M[0].toLowerCase()),X+M[0].length):-1}function Z(O,H,X){var M=m.exec(H.slice(X));return M?(O.m=g.get(M[0].toLowerCase()),X+M[0].length):-1}function Q(O,H,X){return E(O,e,H,X)}function fe(O,H,X){return E(O,n,H,X)}function Se(O,H,X){return E(O,r,H,X)}function Cn(O){return a[O.getDay()]}function W(O){return o[O.getDay()]}function Ye(O){return c[O.getMonth()]}function Ro(O){return s[O.getMonth()]}function jo(O){return i[+(O.getHours()>=12)]}function Ys(O){return 1+~~(O.getMonth()/3)}function ed(O){return a[O.getUTCDay()]}function Dk(O){return o[O.getUTCDay()]}function Mk(O){return c[O.getUTCMonth()]}function Tk(O){return s[O.getUTCMonth()]}function Ik(O){return i[+(O.getUTCHours()>=12)]}function kk(O){return 1+~~(O.getUTCMonth()/3)}return{format:function(O){var H=v(O+="",A);return H.toString=function(){return O},H},parse:function(O){var H=w(O+="",!1);return H.toString=function(){return O},H},utcFormat:function(O){var H=v(O+="",C);return H.toString=function(){return O},H},utcParse:function(O){var H=w(O+="",!0);return H.toString=function(){return O},H}}}var zd={"-":"",_:" ","0":"0"},ge=/^\s*\d+/,ob=/^%/,ab=/[\\^$*+?|[\]().{}]/g;function Y(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 sb(t){return t.replace(ab,"\\$&")}function vi(t){return new RegExp("^(?:"+t.map(sb).join("|")+")","i")}function bi(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function cb(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function ub(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function lb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function fb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function db(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Rd(t,e,n){var r=ge.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function jd(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function hb(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 pb(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function mb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Ud(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function gb(t,e,n){var r=ge.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Gd(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function yb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function vb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function bb(t,e,n){var r=ge.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Ab(t,e,n){var r=ge.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function xb(t,e,n){var r=ob.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function wb(t,e,n){var r=ge.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Cb(t,e,n){var r=ge.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Hd(t,e){return Y(t.getDate(),e,2)}function Sb(t,e){return Y(t.getHours(),e,2)}function Eb(t,e){return Y(t.getHours()%12||12,e,2)}function Db(t,e){return Y(1+In.count(Zt(t),t),e,3)}function Qd(t,e){return Y(t.getMilliseconds(),e,3)}function Mb(t,e){return Qd(t,e)+"000"}function Tb(t,e){return Y(t.getMonth()+1,e,2)}function Ib(t,e){return Y(t.getMinutes(),e,2)}function kb(t,e){return Y(t.getSeconds(),e,2)}function Nb(t){var e=t.getDay();return e===0?7:e}function Lb(t,e){return Y(na.count(Zt(t)-1,t),e,2)}function Vd(t){var e=t.getDay();return e>=4||e===0?si(t):si.ceil(t)}function Bb(t,e){return t=Vd(t),Y(si.count(Zt(t),t)+(Zt(t).getDay()===4),e,2)}function Ob(t){return t.getDay()}function Pb(t,e){return Y(vc.count(Zt(t)-1,t),e,2)}function Fb(t,e){return Y(t.getFullYear()%100,e,2)}function zb(t,e){return t=Vd(t),Y(t.getFullYear()%100,e,2)}function Rb(t,e){return Y(t.getFullYear()%1e4,e,4)}function jb(t,e){var n=t.getDay();return t=n>=4||n===0?si(t):si.ceil(t),Y(t.getFullYear()%1e4,e,4)}function Ub(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Y(e/60|0,"0",2)+Y(e%60,"0",2)}function Yd(t,e){return Y(t.getUTCDate(),e,2)}function Gb(t,e){return Y(t.getUTCHours(),e,2)}function Hb(t,e){return Y(t.getUTCHours()%12||12,e,2)}function Qb(t,e){return Y(1+Nn.count(qt(t),t),e,3)}function _d(t,e){return Y(t.getUTCMilliseconds(),e,3)}function Vb(t,e){return _d(t,e)+"000"}function Yb(t,e){return Y(t.getUTCMonth()+1,e,2)}function _b(t,e){return Y(t.getUTCMinutes(),e,2)}function Wb(t,e){return Y(t.getUTCSeconds(),e,2)}function Xb(t){var e=t.getUTCDay();return e===0?7:e}function Zb(t,e){return Y(ia.count(qt(t)-1,t),e,2)}function Wd(t){var e=t.getUTCDay();return e>=4||e===0?ci(t):ci.ceil(t)}function qb(t,e){return t=Wd(t),Y(ci.count(qt(t),t)+(qt(t).getUTCDay()===4),e,2)}function Kb(t){return t.getUTCDay()}function Jb(t,e){return Y(xc.count(qt(t)-1,t),e,2)}function $b(t,e){return Y(t.getUTCFullYear()%100,e,2)}function eA(t,e){return t=Wd(t),Y(t.getUTCFullYear()%100,e,2)}function tA(t,e){return Y(t.getUTCFullYear()%1e4,e,4)}function nA(t,e){var n=t.getUTCDay();return t=n>=4||n===0?ci(t):ci.ceil(t),Y(t.getUTCFullYear()%1e4,e,4)}function rA(){return"+0000"}function Xd(){return"%"}function Zd(t){return+t}function qd(t){return Math.floor(+t/1e3)}var hr,Ec,Kd,Dc,Jd;iA({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 iA(t){return hr=Fd(t),Ec=hr.format,Kd=hr.parse,Dc=hr.utcFormat,Jd=hr.utcParse,hr}function Ai(t){const e={};return n=>e[n]||(e[n]=t(n))}function oA(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=aA(r,i);const a=o<r.length?r.slice(o):"";for(;--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function aA(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 sA(t){const e=Ai(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=Wt(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return oA(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,a){a=Wt(a==null?",f":a);const s=Mn(r,i,o),c=Math.max(Math.abs(r),Math.abs(i));let u;if(a.precision==null)switch(a.type){case"s":return isNaN(u=kd(s,c))||(a.precision=u),n(a,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=Nd(s,c))||(a.precision=u-(a.type==="e"));break}case"f":case"%":{isNaN(u=Id(s))||(a.precision=u-(a.type==="%")*2);break}}return e(a)}}}cA();function cA(){return sA({format:he,formatPrefix:uc})}function $d(t,e,n){n=n||{},Ge(n)||ce("Invalid time multi-format specifier: ".concat(n));const r=e(gi),i=e(mi),o=e(pi),a=e(hi),s=e(di),c=e(fi),u=e(li),f=e(ui),l=t(n[sa]||".%L"),d=t(n[gi]||":%S"),h=t(n[mi]||"%I:%M"),p=t(n[pi]||"%I %p"),m=t(n[hi]||n[aa]||"%a %d"),g=t(n[di]||"%b %d"),y=t(n[fi]||"%B"),x=t(n[li]||"%B"),A=t(n[ui]||"%Y");return C=>(r(C)<C?l:i(C)<C?d:o(C)<C?h:a(C)<C?p:c(C)<C?s(C)<C?m:g:f(C)<C?u(C)<C?y:x:A)(C)}function eh(t){const e=Ai(t.format),n=Ai(t.utcFormat);return{timeFormat:r=>re(r)?e(r):$d(e,rb,r),utcFormat:r=>re(r)?n(r):$d(n,ib,r),timeParse:Ai(t.parse),utcParse:Ai(t.utcParse)}}let Mc;uA();function uA(){return Mc=eh({format:Ec,parse:Kd,utcFormat:Dc,utcParse:Jd})}function lA(t){return eh(Fd(t))}function fA(t){return arguments.length?Mc=lA(t):Mc}const dA=/^(data:|([A-Za-z]+:)?\/\/)/,hA=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,pA=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,th="file://";function mA(t,e){return n=>({options:n||{},sanitize:yA,load:gA,fileAccess:!!e,file:vA(e),http:AA(t)})}async function gA(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function yA(t,e){e=Ks({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,a;const s=hA.test(t.replace(pA,""));(t==null||typeof t!="string"||!s)&&ce("Sanitize failure, invalid URI: "+Zo(t));const c=dA.test(t);return(a=e.baseURL)&&!c&&(!t.startsWith("/")&&!a.endsWith("/")&&(t="/"+t),t=a+t),o=(i=t.startsWith(th))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(th.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 vA(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):bA}async function bA(){ce("No file system access.")}function AA(t){return t?async function(e,n){const r=Ks({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Oe(o[i])?o[i]():o.text():ce(o.status+""+o.statusText)}:xA}async function xA(){ce("No HTTP fetch method available.")}const wA=t=>t!=null&&t===t,CA=t=>t==="true"||t==="false"||t===!0||t===!1,SA=t=>!Number.isNaN(Date.parse(t)),nh=t=>!Number.isNaN(+t)&&!(t instanceof Date),EA=t=>nh(t)&&Number.isInteger(+t),rh={boolean:av,integer:ri,number:ri,date:cv,string:uv,unknown:Qo},ca=[CA,EA,nh,SA],DA=["boolean","integer","number","date"];function ih(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=ca.length,i=ca.map((o,a)=>a+1);for(let o=0,a=0,s,c;o<n;++o)for(c=e?t[o][e]:t[o],s=0;s<r;++s)if(i[s]&&wA(c)&&!ca[s](c)&&(i[s]=0,++a,a===ca.length))return"string";return DA[i.reduce((o,a)=>o===0?a:o,0)-1]}function MA(t,e){return e.reduce((n,r)=>(n[r]=ih(t,r),n),{})}function oh(t){const e=function(n,r){const i={delimiter:t};return Tc(n,r?Ks(r,i):i)};return e.responseType="text",e}function Tc(t,e){return e.header&&(t=e.header.map(Zo).join(e.delimiter)+`
6
+ `+t),gd(e.delimiter).parse(t+"")}Tc.responseType="text";function TA(t){return typeof Buffer=="function"&&Oe(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function Ic(t,e){const n=e&&e.property?Ho(e.property):Qo;return Ge(t)&&!TA(t)?IA(n(t),e):n(JSON.parse(t))}Ic.responseType="json";function IA(t,e){return!Xe(t)&&iv(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const kA={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function ah(t,e){let n,r,i,o;return t=Ic(t,e),e&&e.feature?(n=vv,i=e.feature):e&&e.mesh?(n=Av,i=e.mesh,o=kA[e.filter]):ce("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):ce("Invalid TopoJSON object: "+i),r&&r.features||[r]}ah.responseType="json";const kc={dsv:Tc,csv:oh(","),tsv:oh(" "),json:Ic,topojson:ah};function sh(t,e){return arguments.length>1?(kc[t]=e,this):En(kc,t)?kc[t]:null}function ch(t,e,n,r){e=e||{};const i=sh(e.type||"json");return i||ce("Unknown data format type: "+e.type),t=i(t,e),e.parse&&NA(t,e.parse,n,r),En(t,"columns")&&delete t.columns,t}function NA(t,e,n,r){if(!t.length)return;const i=fA();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),a,s,c,u,f,l;e==="auto"&&(e=MA(t,o)),o=Object.keys(e);const d=o.map(h=>{const p=e[h];let m,g;if(p&&(p.startsWith("date:")||p.startsWith("utc:")))return m=p.split(/:(.+)?/,2),g=m[1],(g[0]==="'"&&g[g.length-1]==="'"||g[0]==='"'&&g[g.length-1]==='"')&&(g=g.slice(1,-1)),(m[0]==="utc"?r:n)(g);if(!rh[p])throw Error("Illegal format pattern: "+h+":"+p);return rh[p]});for(c=0,f=t.length,l=o.length;c<f;++c)for(a=t[c],u=0;u<l;++u)s=o[u],a[s]=d[u](a[s])}const xi=mA(typeof fetch!="undefined"&&fetch,null),uh=1;function Nc(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,a=.5,s=0;const u=f=>(f+a-t[0])/n*r+e[0];return u.invert=f=>(f-e[0])/r*n+t[0]-a,u.domain=function(f){if(arguments.length){if(t=Ev(f),n=t[1]-t[0],n<uh){n=uh;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return u}else return t},u.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],u):e},u.numberingOffset=function(f){return arguments.length?(s=f,u):s},u.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),u):i},u.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),u):i},u.paddingOuter=function(f){return arguments.length?(o=f,u):o},u.align=function(f){return arguments.length?(a=Math.max(0,Math.min(1,f)),u):a},u.step=()=>r/n,u.bandwidth=()=>u.step(),u.ticks=f=>{const l=u.align(),d=u.numberingOffset();return Jo(t[0]-l+d,t[1]-l+d,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(h=>h-s)},u.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const h=Mn(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?he(","):he(".3s");return p=>h(p+s)},u.copy=()=>Nc().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(s),u}function LA(){const t=Nc().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(),[a,s]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),c=Math.max(1,Mn(i[0],i[1],r)),u=[];for(let f=a.index;f<=s.index;f++){const l=e.chromosomes[f],d=Math.max(l.continuousStart+c,i[0]-(i[0]-l.continuousStart)%c),h=Math.min(l.continuousEnd-c/4,i[1]+1);for(let p=d;p<=h;p+=c){const m=p-o;m>=i[0]&&m<i[1]&&u.push(m)}}return u},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(),a=o[1]-o[0],s=t.numberingOffset(),u=Mn(o[0],o[1],Math.min(r,Math.ceil(a)))<1e6?he(","):he(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>u(f(l)+s)};const n=t.copy;return t.copy=()=>n().genome(e),t}function BA(t){return t.type=="locus"}function ht(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function Kt(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 Lc=Symbol("implicit");function Bc(){var t=new fr,e=[],n=[],r=Lc;function i(o){let a=t.get(o);if(a===void 0){if(r!==Lc)return r;t.set(o,a=e.push(o)-1)}return n[a%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new fr;for(const a of o)t.has(a)||t.set(a,e.push(a)-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 Bc(e,n).unknown(r)},ht.apply(i,arguments),i}function pr(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function wi(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Jt(){}var Bn=.7,mr=1/Bn,gr="\\s*([+-]?\\d+)\\s*",Ci="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",pt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",OA=/^#([0-9a-f]{3,8})$/,PA=new RegExp(`^rgb\\(${gr},${gr},${gr}\\)$`),FA=new RegExp(`^rgb\\(${pt},${pt},${pt}\\)$`),zA=new RegExp(`^rgba\\(${gr},${gr},${gr},${Ci}\\)$`),RA=new RegExp(`^rgba\\(${pt},${pt},${pt},${Ci}\\)$`),jA=new RegExp(`^hsl\\(${Ci},${pt},${pt}\\)$`),UA=new RegExp(`^hsla\\(${Ci},${pt},${pt},${Ci}\\)$`),lh={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};pr(Jt,On,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:fh,formatHex:fh,formatHex8:GA,formatHsl:HA,formatRgb:dh,toString:dh});function fh(){return this.rgb().formatHex()}function GA(){return this.rgb().formatHex8()}function HA(){return yh(this).formatHsl()}function dh(){return this.rgb().formatRgb()}function On(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=OA.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?hh(e):n===3?new ye(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?ua(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?ua(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=PA.exec(t))?new ye(e[1],e[2],e[3],1):(e=FA.exec(t))?new ye(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=zA.exec(t))?ua(e[1],e[2],e[3],e[4]):(e=RA.exec(t))?ua(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=jA.exec(t))?gh(e[1],e[2]/100,e[3]/100,1):(e=UA.exec(t))?gh(e[1],e[2]/100,e[3]/100,e[4]):lh.hasOwnProperty(t)?hh(lh[t]):t==="transparent"?new ye(NaN,NaN,NaN,0):null}function hh(t){return new ye(t>>16&255,t>>8&255,t&255,1)}function ua(t,e,n,r){return r<=0&&(t=e=n=NaN),new ye(t,e,n,r)}function Oc(t){return t instanceof Jt||(t=On(t)),t?(t=t.rgb(),new ye(t.r,t.g,t.b,t.opacity)):new ye}function la(t,e,n,r){return arguments.length===1?Oc(t):new ye(t,e,n,r==null?1:r)}function ye(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}pr(ye,la,wi(Jt,{brighter(t){return t=t==null?mr:Math.pow(mr,t),new ye(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Bn:Math.pow(Bn,t),new ye(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ye(Pn(this.r),Pn(this.g),Pn(this.b),fa(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:ph,formatHex:ph,formatHex8:QA,formatRgb:mh,toString:mh}));function ph(){return`#${Fn(this.r)}${Fn(this.g)}${Fn(this.b)}`}function QA(){return`#${Fn(this.r)}${Fn(this.g)}${Fn(this.b)}${Fn((isNaN(this.opacity)?1:this.opacity)*255)}`}function mh(){const t=fa(this.opacity);return`${t===1?"rgb(":"rgba("}${Pn(this.r)}, ${Pn(this.g)}, ${Pn(this.b)}${t===1?")":`, ${t})`}`}function fa(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Pn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Fn(t){return t=Pn(t),(t<16?"0":"")+t.toString(16)}function gh(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new rt(t,e,n,r)}function yh(t){if(t instanceof rt)return new rt(t.h,t.s,t.l,t.opacity);if(t instanceof Jt||(t=On(t)),!t)return new rt;if(t instanceof rt)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),a=NaN,s=o-i,c=(o+i)/2;return s?(e===o?a=(n-r)/s+(n<r)*6:n===o?a=(r-e)/s+2:a=(e-n)/s+4,s/=c<.5?o+i:2-o-i,a*=60):s=c>0&&c<1?0:a,new rt(a,s,c,t.opacity)}function Pc(t,e,n,r){return arguments.length===1?yh(t):new rt(t,e,n,r==null?1:r)}function rt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}pr(rt,Pc,wi(Jt,{brighter(t){return t=t==null?mr:Math.pow(mr,t),new rt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Bn:Math.pow(Bn,t),new rt(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 ye(Fc(t>=240?t-240:t+120,i,r),Fc(t,i,r),Fc(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new rt(vh(this.h),da(this.s),da(this.l),fa(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=fa(this.opacity);return`${t===1?"hsl(":"hsla("}${vh(this.h)}, ${da(this.s)*100}%, ${da(this.l)*100}%${t===1?")":`, ${t})`}`}}));function vh(t){return t=(t||0)%360,t<0?t+360:t}function da(t){return Math.max(0,Math.min(1,t||0))}function Fc(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 bh=Math.PI/180,Ah=180/Math.PI,ha=18,xh=.96422,wh=1,Ch=.82521,Sh=4/29,yr=6/29,Eh=3*yr*yr,VA=yr*yr*yr;function Dh(t){if(t instanceof mt)return new mt(t.l,t.a,t.b,t.opacity);if(t instanceof It)return Mh(t);t instanceof ye||(t=Oc(t));var e=Gc(t.r),n=Gc(t.g),r=Gc(t.b),i=Rc((.2225045*e+.7168786*n+.0606169*r)/wh),o,a;return e===n&&n===r?o=a=i:(o=Rc((.4360747*e+.3850649*n+.1430804*r)/xh),a=Rc((.0139322*e+.0971045*n+.7141733*r)/Ch)),new mt(116*i-16,500*(o-i),200*(i-a),t.opacity)}function zc(t,e,n,r){return arguments.length===1?Dh(t):new mt(t,e,n,r==null?1:r)}function mt(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}pr(mt,zc,wi(Jt,{brighter(t){return new mt(this.l+ha*(t==null?1:t),this.a,this.b,this.opacity)},darker(t){return new mt(this.l-ha*(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=xh*jc(e),t=wh*jc(t),n=Ch*jc(n),new ye(Uc(3.1338561*e-1.6168667*t-.4906146*n),Uc(-.9787684*e+1.9161415*t+.033454*n),Uc(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function Rc(t){return t>VA?Math.pow(t,1/3):t/Eh+Sh}function jc(t){return t>yr?t*t*t:Eh*(t-Sh)}function Uc(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Gc(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function YA(t){if(t instanceof It)return new It(t.h,t.c,t.l,t.opacity);if(t instanceof mt||(t=Dh(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)*Ah;return new It(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Hc(t,e,n,r){return arguments.length===1?YA(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 Mh(t){if(isNaN(t.h))return new mt(t.l,0,0,t.opacity);var e=t.h*bh;return new mt(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}pr(It,Hc,wi(Jt,{brighter(t){return new It(this.h,this.c,this.l+ha*(t==null?1:t),this.opacity)},darker(t){return new It(this.h,this.c,this.l-ha*(t==null?1:t),this.opacity)},rgb(){return Mh(this).rgb()}}));var Th=-.14861,Qc=1.78277,Vc=-.29227,pa=-.90649,Si=1.97294,Ih=Si*pa,kh=Si*Qc,Nh=Qc*Vc-pa*Th;function _A(t){if(t instanceof zn)return new zn(t.h,t.s,t.l,t.opacity);t instanceof ye||(t=Oc(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(Nh*r+Ih*e-kh*n)/(Nh+Ih-kh),o=r-i,a=(Si*(n-i)-Vc*o)/pa,s=Math.sqrt(a*a+o*o)/(Si*i*(1-i)),c=s?Math.atan2(a,o)*Ah-120:NaN;return new zn(c<0?c+360:c,s,i,t.opacity)}function Yc(t,e,n,r){return arguments.length===1?_A(t):new zn(t,e,n,r==null?1:r)}function zn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}pr(zn,Yc,wi(Jt,{brighter(t){return t=t==null?mr:Math.pow(mr,t),new zn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Bn:Math.pow(Bn,t),new zn(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*bh,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new ye(255*(e+n*(Th*r+Qc*i)),255*(e+n*(Vc*r+pa*i)),255*(e+n*(Si*r)),this.opacity)}}));function Lh(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}function Bh(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],a=r>0?t[r-1]:2*i-o,s=r<e-1?t[r+2]:2*o-i;return Lh((n-r/e)*e,a,i,o,s)}}function Oh(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],a=t[(r+1)%e],s=t[(r+2)%e];return Lh((n-r/e)*e,i,o,a,s)}}var ma=t=>()=>t;function Ph(t,e){return function(n){return t+n*e}}function WA(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 ga(t,e){var n=e-t;return n?Ph(t,n>180||n<-180?n-360*Math.round(n/360):n):ma(isNaN(t)?e:t)}function XA(t){return(t=+t)==1?ve:function(e,n){return n-e?WA(e,n,t):ma(isNaN(e)?n:e)}}function ve(t,e){var n=e-t;return n?Ph(t,n):ma(isNaN(t)?e:t)}var _c=function t(e){var n=XA(e);function r(i,o){var a=n((i=la(i)).r,(o=la(o)).r),s=n(i.g,o.g),c=n(i.b,o.b),u=ve(i.opacity,o.opacity);return function(f){return i.r=a(f),i.g=s(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r}(1);function Fh(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),a,s;for(a=0;a<n;++a)s=la(e[a]),r[a]=s.r||0,i[a]=s.g||0,o[a]=s.b||0;return r=t(r),i=t(i),o=t(o),s.opacity=1,function(c){return s.r=r(c),s.g=i(c),s.b=o(c),s+""}}}var ZA=Fh(Bh),qA=Fh(Oh);function Wc(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 zh(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function KA(t,e){return(zh(e)?Wc:Rh)(t,e)}function Rh(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),a;for(a=0;a<r;++a)i[a]=$t(t[a],e[a]);for(;a<n;++a)o[a]=e[a];return function(s){for(a=0;a<r;++a)o[a]=i[a](s);return o}}function jh(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function it(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function Uh(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]=$t(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var Xc=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Zc=new RegExp(Xc.source,"g");function JA(t){return function(){return t}}function $A(t){return function(e){return t(e)+""}}function Gh(t,e){var n=Xc.lastIndex=Zc.lastIndex=0,r,i,o,a=-1,s=[],c=[];for(t=t+"",e=e+"";(r=Xc.exec(t))&&(i=Zc.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),s[a]?s[a]+=o:s[++a]=o),(r=r[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,c.push({i:a,x:it(r,i)})),n=Zc.lastIndex;return n<e.length&&(o=e.slice(n),s[a]?s[a]+=o:s[++a]=o),s.length<2?c[0]?$A(c[0].x):JA(e):(e=c.length,function(u){for(var f=0,l;f<e;++f)s[(l=c[f]).i]=l.x(u);return s.join("")})}function $t(t,e){var n=typeof e,r;return e==null||n==="boolean"?ma(e):(n==="number"?it:n==="string"?(r=On(e))?(e=r,_c):Gh:e instanceof On?_c:e instanceof Date?jh:zh(e)?Wc:Array.isArray(e)?Rh:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?Uh:it)(t,e)}function ex(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function tx(t,e){var n=ga(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function Ei(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var Hh=180/Math.PI,qc={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Qh(t,e,n,r,i,o){var a,s,c;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r<e*n&&(t=-t,e=-e,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*Hh,skewX:Math.atan(c)*Hh,scaleX:a,scaleY:s}}var ya;function nx(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?qc:Qh(e.a,e.b,e.c,e.d,e.e,e.f)}function rx(t){return t==null||(ya||(ya=document.createElementNS("http://www.w3.org/2000/svg","g")),ya.setAttribute("transform",t),!(t=ya.transform.baseVal.consolidate()))?qc:(t=t.matrix,Qh(t.a,t.b,t.c,t.d,t.e,t.f))}function Vh(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,d,h,p){if(u!==l||f!==d){var m=h.push("translate(",null,e,null,n);p.push({i:m-4,x:it(u,l)},{i:m-2,x:it(f,d)})}else(l||d)&&h.push("translate("+l+e+d+n)}function a(u,f,l,d){u!==f?(u-f>180?f+=360:f-u>180&&(u+=360),d.push({i:l.push(i(l)+"rotate(",null,r)-2,x:it(u,f)})):f&&l.push(i(l)+"rotate("+f+r)}function s(u,f,l,d){u!==f?d.push({i:l.push(i(l)+"skewX(",null,r)-2,x:it(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,d,h,p){if(u!==l||f!==d){var m=h.push(i(h)+"scale(",null,",",null,")");p.push({i:m-4,x:it(u,l)},{i:m-2,x:it(f,d)})}else(l!==1||d!==1)&&h.push(i(h)+"scale("+l+","+d+")")}return function(u,f){var l=[],d=[];return u=t(u),f=t(f),o(u.translateX,u.translateY,f.translateX,f.translateY,l,d),a(u.rotate,f.rotate,l,d),s(u.skewX,f.skewX,l,d),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,l,d),u=f=null,function(h){for(var p=-1,m=d.length,g;++p<m;)l[(g=d[p]).i]=g.x(h);return l.join("")}}}var ix=Vh(nx,"px, ","px)","deg)"),ox=Vh(rx,", ",")",")"),ax=1e-12;function Yh(t){return((t=Math.exp(t))+1/t)/2}function sx(t){return((t=Math.exp(t))-1/t)/2}function cx(t){return((t=Math.exp(2*t))-1)/(t+1)}var _h=function t(e,n,r){function i(o,a){var s=o[0],c=o[1],u=o[2],f=a[0],l=a[1],d=a[2],h=f-s,p=l-c,m=h*h+p*p,g,y;if(m<ax)y=Math.log(d/u)/e,g=function(w){return[s+w*h,c+w*p,u*Math.exp(e*w*y)]};else{var x=Math.sqrt(m),A=(d*d-u*u+r*m)/(2*u*n*x),C=(d*d-u*u-r*m)/(2*d*n*x),b=Math.log(Math.sqrt(A*A+1)-A),v=Math.log(Math.sqrt(C*C+1)-C);y=(v-b)/e,g=function(w){var E=w*y,k=Yh(b),L=u/(n*x)*(k*cx(e*E+b)-sx(b));return[s+L*h,c+L*p,u*k/Yh(e*E+b)]}}return g.duration=y*1e3*e/Math.SQRT2,g}return i.rho=function(o){var a=Math.max(.001,+o),s=a*a,c=s*s;return t(a,s,c)},i}(Math.SQRT2,2,4);function Wh(t){return function(e,n){var r=t((e=Pc(e)).h,(n=Pc(n)).h),i=ve(e.s,n.s),o=ve(e.l,n.l),a=ve(e.opacity,n.opacity);return function(s){return e.h=r(s),e.s=i(s),e.l=o(s),e.opacity=a(s),e+""}}}var ux=Wh(ga),lx=Wh(ve);function fx(t,e){var n=ve((t=zc(t)).l,(e=zc(e)).l),r=ve(t.a,e.a),i=ve(t.b,e.b),o=ve(t.opacity,e.opacity);return function(a){return t.l=n(a),t.a=r(a),t.b=i(a),t.opacity=o(a),t+""}}function Xh(t){return function(e,n){var r=t((e=Hc(e)).h,(n=Hc(n)).h),i=ve(e.c,n.c),o=ve(e.l,n.l),a=ve(e.opacity,n.opacity);return function(s){return e.h=r(s),e.c=i(s),e.l=o(s),e.opacity=a(s),e+""}}}var dx=Xh(ga),hx=Xh(ve);function Zh(t){return function e(n){n=+n;function r(i,o){var a=t((i=Yc(i)).h,(o=Yc(o)).h),s=ve(i.s,o.s),c=ve(i.l,o.l),u=ve(i.opacity,o.opacity);return function(f){return i.h=a(f),i.s=s(f),i.l=c(Math.pow(f,n)),i.opacity=u(f),i+""}}return r.gamma=e,r}(1)}var px=Zh(ga),mx=Zh(ve);function Kc(t,e){e===void 0&&(e=t,t=$t);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(a){var s=Math.max(0,Math.min(r-1,Math.floor(a*=r)));return o[s](a-s)}}function gx(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var yx=Object.freeze(Object.defineProperty({__proto__:null,interpolate:$t,interpolateArray:KA,interpolateBasis:Bh,interpolateBasisClosed:Oh,interpolateDate:jh,interpolateDiscrete:ex,interpolateHue:tx,interpolateNumber:it,interpolateNumberArray:Wc,interpolateObject:Uh,interpolateRound:Ei,interpolateString:Gh,interpolateTransformCss:ix,interpolateTransformSvg:ox,interpolateZoom:_h,interpolateRgb:_c,interpolateRgbBasis:ZA,interpolateRgbBasisClosed:qA,interpolateHsl:ux,interpolateHslLong:lx,interpolateLab:fx,interpolateHcl:dx,interpolateHclLong:hx,interpolateCubehelix:px,interpolateCubehelixLong:mx,piecewise:Kc,quantize:gx},Symbol.toStringTag,{value:"Module"}));function vx(t){return function(){return t}}function Jc(t){return+t}var qh=[0,1];function Fe(t){return t}function $c(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:vx(isNaN(e)?NaN:.5)}function bx(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Ax(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i<r?(r=$c(i,r),o=n(a,o)):(r=$c(r,i),o=n(o,a)),function(s){return o(r(s))}}function xx(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<r;)i[a]=$c(t[a],t[a+1]),o[a]=n(e[a],e[a+1]);return function(s){var c=lr(t,s,1,r)-1;return o[c](i[c](s))}}function Di(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function va(){var t=qh,e=qh,n=$t,r,i,o,a=Fe,s,c,u;function f(){var d=Math.min(t.length,e.length);return a!==Fe&&(a=bx(t[0],t[d-1])),s=d>2?xx:Ax,c=u=null,l}function l(d){return d==null||isNaN(d=+d)?o:(c||(c=s(t.map(r),e,n)))(r(a(d)))}return l.invert=function(d){return a(i((u||(u=s(e,t.map(r),it)))(d)))},l.domain=function(d){return arguments.length?(t=Array.from(d,Jc),f()):t.slice()},l.range=function(d){return arguments.length?(e=Array.from(d),f()):e.slice()},l.rangeRound=function(d){return e=Array.from(d),n=Ei,f()},l.clamp=function(d){return arguments.length?(a=d?!0:Fe,f()):a!==Fe},l.interpolate=function(d){return arguments.length?(n=d,f()):n},l.unknown=function(d){return arguments.length?(o=d,l):o},function(d,h){return r=d,i=h,f()}}function Kh(){return va()(Fe,Fe)}function Jh(t,e,n,r){var i=Mn(t,e,n),o;switch(r=Wt(r==null?",f":r),r.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=kd(i,a))&&(r.precision=o),uc(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Nd(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=Id(i))&&(r.precision=o-(r.type==="%")*2);break}}return he(r)}function Rn(t){var e=t.domain;return t.ticks=function(n){var r=e();return Jo(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return Jh(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,a=r[i],s=r[o],c,u,f=10;for(s<a&&(u=a,a=s,s=u,u=i,i=o,o=u);f-- >0;){if(u=wd(a,s,n),u===c)return r[i]=a,r[o]=s,e(r);if(u>0)a=Math.floor(a/u)*u,s=Math.ceil(s/u)*u;else if(u<0)a=Math.ceil(a*u)/u,s=Math.floor(s*u)/u;else break;c=u}return t},t}function $h(){var t=Kh();return t.copy=function(){return Di(t,$h())},ht.apply(t,arguments),Rn(t)}function e0(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,Jc),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return e0(t).unknown(e)},t=arguments.length?Array.from(t,Jc):[0,1],Rn(n)}function t0(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],a;return o<i&&(a=n,n=r,r=a,a=i,i=o,o=a),t[n]=e.floor(i),t[r]=e.ceil(o),t}function n0(t){return Math.log(t)}function r0(t){return Math.exp(t)}function wx(t){return-Math.log(-t)}function Cx(t){return-Math.exp(-t)}function Sx(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Ex(t){return t===10?Sx:t===Math.E?Math.exp:e=>Math.pow(t,e)}function Dx(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 i0(t){return(e,n)=>-t(-e,n)}function eu(t){const e=t(n0,r0),n=e.domain;let r=10,i,o;function a(){return i=Dx(r),o=Ex(r),n()[0]<0?(i=i0(i),o=i0(o),t(wx,Cx)):t(n0,r0),e}return e.base=function(s){return arguments.length?(r=+s,a()):r},e.domain=function(s){return arguments.length?(n(s),a()):n()},e.ticks=s=>{const c=n();let u=c[0],f=c[c.length-1];const l=f<u;l&&([u,f]=[f,u]);let d=i(u),h=i(f),p,m;const g=s==null?10:+s;let y=[];if(!(r%1)&&h-d<g){if(d=Math.floor(d),h=Math.ceil(h),u>0){for(;d<=h;++d)for(p=1;p<r;++p)if(m=d<0?p/o(-d):p*o(d),!(m<u)){if(m>f)break;y.push(m)}}else for(;d<=h;++d)for(p=r-1;p>=1;--p)if(m=d>0?p/o(-d):p*o(d),!(m<u)){if(m>f)break;y.push(m)}y.length*2<g&&(y=Jo(u,f,g))}else y=Jo(d,h,Math.min(h-d,g)).map(o);return l?y.reverse():y},e.tickFormat=(s,c)=>{if(s==null&&(s=10),c==null&&(c=r===10?"s":","),typeof c!="function"&&(!(r%1)&&(c=Wt(c)).precision==null&&(c.trim=!0),c=he(c)),s===1/0)return c;const u=Math.max(1,r*s/e.ticks().length);return f=>{let l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=u?c(f):""}},e.nice=()=>n(t0(n(),{floor:s=>o(Math.floor(i(s))),ceil:s=>o(Math.ceil(i(s)))})),e}function tu(){const t=eu(va()).domain([1,10]);return t.copy=()=>Di(t,tu()).base(t.base()),ht.apply(t,arguments),t}function o0(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function a0(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function nu(t){var e=1,n=t(o0(e),a0(e));return n.constant=function(r){return arguments.length?t(o0(e=+r),a0(e)):e},Rn(n)}function s0(){var t=nu(va());return t.copy=function(){return Di(t,s0()).constant(t.constant())},ht.apply(t,arguments)}function c0(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Mx(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Tx(t){return t<0?-t*t:t*t}function ru(t){var e=t(Fe,Fe),n=1;function r(){return n===1?t(Fe,Fe):n===.5?t(Mx,Tx):t(c0(n),c0(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Rn(e)}function iu(){var t=ru(va());return t.copy=function(){return Di(t,iu()).exponent(t.exponent())},ht.apply(t,arguments),t}function Ix(){return iu.apply(null,arguments).exponent(.5)}function u0(){var t=[],e=[],n=[],r;function i(){var a=0,s=Math.max(1,e.length);for(n=new Array(s-1);++a<s;)n[a-1]=sc(t,a/s);return o}function o(a){return a==null||isNaN(a=+a)?r:e[lr(n,a)]}return o.invertExtent=function(a){var s=e.indexOf(a);return s<0?[NaN,NaN]:[s>0?n[s-1]:t[0],s<n.length?n[s]:t[t.length-1]]},o.domain=function(a){if(!arguments.length)return t.slice();t=[];for(let s of a)s!=null&&!isNaN(s=+s)&&t.push(s);return t.sort(Dn),i()},o.range=function(a){return arguments.length?(e=Array.from(a),i()):e.slice()},o.unknown=function(a){return arguments.length?(r=a,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return u0().domain(t).range(e).unknown(r)},ht.apply(o,arguments)}function l0(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function a(c){return c!=null&&c<=c?i[lr(r,c,0,n)]:o}function s(){var c=-1;for(r=new Array(n);++c<n;)r[c]=((c+1)*e-(c-n)*t)/(n+1);return a}return a.domain=function(c){return arguments.length?([t,e]=c,t=+t,e=+e,s()):[t,e]},a.range=function(c){return arguments.length?(n=(i=Array.from(c)).length-1,s()):i.slice()},a.invertExtent=function(c){var u=i.indexOf(c);return u<0?[NaN,NaN]:u<1?[t,r[0]]:u>=n?[r[n-1],e]:[r[u-1],r[u]]},a.unknown=function(c){return arguments.length&&(o=c),a},a.thresholds=function(){return r.slice()},a.copy=function(){return l0().domain([t,e]).range(i).unknown(o)},ht.apply(Rn(a),arguments)}function f0(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[lr(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 a=e.indexOf(o);return[t[a-1],t[a]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return f0().domain(t).range(e).unknown(n)},ht.apply(i,arguments)}function kx(t){return new Date(t)}function Nx(t){return t instanceof Date?+t:+new Date(+t)}function ou(t,e,n,r,i,o,a,s,c,u){var f=Kh(),l=f.invert,d=f.domain,h=u(".%L"),p=u(":%S"),m=u("%I:%M"),g=u("%I %p"),y=u("%a %d"),x=u("%b %d"),A=u("%B"),C=u("%Y");function b(v){return(c(v)<v?h:s(v)<v?p:a(v)<v?m:o(v)<v?g:r(v)<v?i(v)<v?y:x:n(v)<v?A:C)(v)}return f.invert=function(v){return new Date(l(v))},f.domain=function(v){return arguments.length?d(Array.from(v,Nx)):d().map(kx)},f.ticks=function(v){var w=d();return t(w[0],w[w.length-1],v==null?10:v)},f.tickFormat=function(v,w){return w==null?b:u(w)},f.nice=function(v){var w=d();return(!v||typeof v.range!="function")&&(v=e(w[0],w[w.length-1],v==null?10:v)),v?d(t0(w,v)):f},f.copy=function(){return Di(f,ou(t,e,n,r,i,o,a,s,c,u))},f}function Lx(){return ht.apply(ou($v,eb,Zt,ra,na,In,yc,gc,Xt,Ec).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Bx(){return ht.apply(ou(Kv,Jv,qt,oa,ia,Nn,Ac,bc,Xt,Dc).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function ba(){var t=0,e=1,n,r,i,o,a=Fe,s=!1,c;function u(l){return l==null||isNaN(l=+l)?c:a(i===0?.5:(l=(o(l)-n)*i,s?Math.max(0,Math.min(1,l)):l))}u.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),u):[t,e]},u.clamp=function(l){return arguments.length?(s=!!l,u):s},u.interpolator=function(l){return arguments.length?(a=l,u):a};function f(l){return function(d){var h,p;return arguments.length?([h,p]=d,a=l(h,p),u):[a(0),a(1)]}}return u.range=f($t),u.rangeRound=f(Ei),u.unknown=function(l){return arguments.length?(c=l,u):c},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),u}}function en(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function au(){var t=Rn(ba()(Fe));return t.copy=function(){return en(t,au())},Kt.apply(t,arguments)}function d0(){var t=eu(ba()).domain([1,10]);return t.copy=function(){return en(t,d0()).base(t.base())},Kt.apply(t,arguments)}function h0(){var t=nu(ba());return t.copy=function(){return en(t,h0()).constant(t.constant())},Kt.apply(t,arguments)}function su(){var t=ru(ba());return t.copy=function(){return en(t,su()).exponent(t.exponent())},Kt.apply(t,arguments)}function Ox(){return su.apply(null,arguments).exponent(.5)}function Aa(){var t=0,e=.5,n=1,r=1,i,o,a,s,c,u=Fe,f,l=!1,d;function h(m){return isNaN(m=+m)?d:(m=.5+((m=+f(m))-o)*(r*m<r*o?s:c),u(l?Math.max(0,Math.min(1,m)):m))}h.domain=function(m){return arguments.length?([t,e,n]=m,i=f(t=+t),o=f(e=+e),a=f(n=+n),s=i===o?0:.5/(o-i),c=o===a?0:.5/(a-o),r=o<i?-1:1,h):[t,e,n]},h.clamp=function(m){return arguments.length?(l=!!m,h):l},h.interpolator=function(m){return arguments.length?(u=m,h):u};function p(m){return function(g){var y,x,A;return arguments.length?([y,x,A]=g,u=Kc(m,[y,x,A]),h):[u(0),u(.5),u(1)]}}return h.range=p($t),h.rangeRound=p(Ei),h.unknown=function(m){return arguments.length?(d=m,h):d},function(m){return f=m,i=m(t),o=m(e),a=m(n),s=i===o?0:.5/(o-i),c=o===a?0:.5/(a-o),r=o<i?-1:1,h}}function p0(){var t=Rn(Aa()(Fe));return t.copy=function(){return en(t,p0())},Kt.apply(t,arguments)}function m0(){var t=eu(Aa()).domain([.1,1,10]);return t.copy=function(){return en(t,m0()).base(t.base())},Kt.apply(t,arguments)}function g0(){var t=nu(Aa());return t.copy=function(){return en(t,g0()).constant(t.constant())},Kt.apply(t,arguments)}function cu(){var t=ru(Aa());return t.copy=function(){return en(t,cu()).exponent(t.exponent())},Kt.apply(t,arguments)}function Px(){return cu.apply(null,arguments).exponent(.5)}function uu(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const Fx="identity",vr="linear",tn="log",Mi="pow",Ti="sqrt",xa="symlog",y0="time",v0="utc",gt="sequential",br="diverging",lu="quantile",b0="quantize",A0="threshold",fu="ordinal",du="point",x0="band",hu="bin-ordinal",pe="continuous",Ii="discrete",ki="discretizing",qe="interpolating",w0="temporal";function zx(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 Rx(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,a,s,c,u;for(i<r&&(s=r,r=i,i=s),c=0,u=n.length;c<u;++c)n[c]>=r&&n[c]<=i&&(o<0&&(o=c),a=c);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[a]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function pu(){const t=Bc().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,a=!1,s=0,c=0,u=.5;delete t.unknown;function f(){const l=e().length,d=r[1]<r[0],h=r[1-d],p=uu(l,s,c);let m=r[d-0];i=(h-m)/(p||1),a&&(i=Math.floor(i)),m+=(h-m-i*(l-s))*u,o=i*(1-s),a&&(m=Math.round(m),o=Math.round(o));const g=_t(l).map(y=>m+i*y);return n(d?g.reverse():g)}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]],a=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(a=!!l,f()):a},t.padding=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),s=c,f()):s},t.paddingInner=function(l){return arguments.length?(s=Math.max(0,Math.min(1,l)),f()):s},t.paddingOuter=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.align=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const d=r[1]<r[0],h=d?n().reverse():n(),p=h.length-1;let m=+l[0],g=+l[1],y,x,A;if(!(m!==m||g!==g)&&(g<m&&(A=m,m=g,g=A),!(g<h[0]||m>r[1-d])))return y=Math.max(0,tc(h,m)-1),x=m===g?y:tc(h,g)-1,m-h[y]>o+1e-10&&++y,d&&(A=y,y=p-x,x=p-A),y>x?void 0:e().slice(y,x+1)},t.invert=function(l){const d=t.invertRange([l,l]);return d&&d[0]},t.copy=function(){return pu().domain(e()).range(r).round(a).paddingInner(s).paddingOuter(c).align(u)},f()}function C0(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return C0(e())},t}function jx(){return C0(pu().paddingInner(1))}var Ux=Array.prototype.map;function Gx(t){return Ux.call(t,ri)}const Hx=Array.prototype.slice;function S0(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(lr(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=Gx(r),n):t.slice()},n.range=function(r){return arguments.length?(e=Hx.call(r),n):e.slice()},n.tickFormat=function(r,i){return Jh(t[0],nt(t),r==null?10:r,i)},n.copy=function(){return S0().domain(n.domain()).range(n.range())},n}const wa={};function Qx(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?zx(o):o.invertExtent?Rx(o):void 0),o.type=t,o};return r.metadata=qo(qs(n)),r}function q(t,e,n){return arguments.length>1?(wa[t]=Qx(t,e,n),this):Vx(t)?wa[t]:void 0}q(Fx,e0),q(vr,$h,pe),q(tn,tu,[pe,tn]),q(Mi,iu,pe),q(Ti,Ix,pe),q(xa,s0,pe),q(y0,Lx,[pe,w0]),q(v0,Bx,[pe,w0]),q(gt,au,[pe,qe]),q("".concat(gt,"-").concat(vr),au,[pe,qe]),q("".concat(gt,"-").concat(tn),d0,[pe,qe,tn]),q("".concat(gt,"-").concat(Mi),su,[pe,qe]),q("".concat(gt,"-").concat(Ti),Ox,[pe,qe]),q("".concat(gt,"-").concat(xa),h0,[pe,qe]),q("".concat(br,"-").concat(vr),p0,[pe,qe]),q("".concat(br,"-").concat(tn),m0,[pe,qe,tn]),q("".concat(br,"-").concat(Mi),cu,[pe,qe]),q("".concat(br,"-").concat(Ti),Px,[pe,qe]),q("".concat(br,"-").concat(xa),g0,[pe,qe]),q(lu,u0,[ki,lu]),q(b0,l0,ki),q(A0,f0,ki),q(hu,S0,[Ii,ki]),q(fu,Bc,Ii),q(x0,pu,Ii),q(du,jx,Ii);function Vx(t){return En(wa,t)}function Ni(t,e){const n=wa[t];return n&&n.metadata[e]}function ot(t){return Ni(t,pe)}function nn(t){return Ni(t,Ii)}function Ar(t){return Ni(t,ki)}function E0(t){return Ni(t,tn)}function Ca(t){return Ni(t,qe)}function Yx(t,e){const n=e[0],r=nt(e)-n;return function(i){return t(n+i*r)}}function Sa(t,e,n){return Kc(D0(e||"rgb",n),t)}function _x(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function D0(t,e){const n=yx[Wx(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function Wx(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const Xx={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"},Zx={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 M0(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 T0(t,e){for(const n in t)mu(n,e(t[n]))}const I0={};T0(Zx,M0),T0(Xx,t=>Sa(M0(t)));function mu(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(I0[t]=e,this):I0[t]}var Pk="";function qx(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}/**
7
7
  * @license
8
8
  * Copyright 2017 Google LLC
9
9
  * SPDX-License-Identifier: BSD-3-Clause
10
- */var kc;const Jn=globalThis.trustedTypes,Od=Jn?Jn.createPolicy("lit-html",{createHTML:t=>t}):void 0,qt=`lit$${(Math.random()+"").slice(9)}$`,Bd="?"+qt,Ux=`<${Bd}>`,$n=document,ri=(t="")=>$n.createComment(t),ii=t=>t===null||typeof t!="object"&&typeof t!="function",Pd=Array.isArray,jx=t=>{var e;return Pd(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},oi=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Fd=/-->/g,zd=/>/g,wn=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,Rd=/'/g,Ud=/"/g,jd=/^(?:script|style|textarea)$/i,Gx=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),M=Gx(1),xe=Symbol.for("lit-noChange"),R=Symbol.for("lit-nothing"),Gd=new WeakMap,Xe=(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 ai(e.insertBefore(ri(),a),a,void 0,n!=null?n:{})}return s._$AI(t),s},er=$n.createTreeWalker($n,129,null,!1),Hx=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",s=oi;for(let c=0;c<n;c++){const u=t[c];let f,l,h=-1,d=0;for(;d<u.length&&(s.lastIndex=d,l=s.exec(u),l!==null);)d=s.lastIndex,s===oi?l[1]==="!--"?s=Fd:l[1]!==void 0?s=zd:l[2]!==void 0?(jd.test(l[2])&&(i=RegExp("</"+l[2],"g")),s=wn):l[3]!==void 0&&(s=wn):s===wn?l[0]===">"?(s=i!=null?i:oi,h=-1):l[1]===void 0?h=-2:(h=s.lastIndex-l[2].length,f=l[1],s=l[3]===void 0?wn:l[3]==='"'?Ud:Rd):s===Ud||s===Rd?s=wn:s===Fd||s===zd?s=oi:(s=wn,i=void 0);const p=s===wn&&t[c+1].startsWith("/>")?" ":"";o+=s===oi?u+Ux:h>=0?(r.push(f),u.slice(0,h)+"$lit$"+u.slice(h)+qt+p):u+qt+(h===-2?(r.push(void 0),c):p)}const a=o+(t[n]||"<?>")+(e===2?"</svg>":"");return[Od!==void 0?Od.createHTML(a):a,r]};class si{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,s=0;const a=e.length-1,c=this.parts,[u,f]=Hx(e,n);if(this.el=si.createElement(u,r),er.currentNode=this.el.content,n===2){const l=this.el.content,h=l.firstChild;h.remove(),l.append(...h.childNodes)}for(;(i=er.nextNode())!==null&&c.length<a;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const h of i.getAttributeNames())if(h.endsWith("$lit$")||h.startsWith(qt)){const d=f[s++];if(l.push(h),d!==void 0){const p=i.getAttribute(d.toLowerCase()+"$lit$").split(qt),g=/([.?@])?(.*)/.exec(d);c.push({type:1,index:o,name:g[2],strings:p,ctor:g[1]==="."?Vx:g[1]==="?"?Yx:g[1]==="@"?Wx:_o})}else c.push({type:6,index:o})}for(const h of l)i.removeAttribute(h)}if(jd.test(i.tagName)){const l=i.textContent.split(qt),h=l.length-1;if(h>0){i.textContent=Jn?Jn.emptyScript:"";for(let d=0;d<h;d++)i.append(l[d],ri()),er.nextNode(),c.push({type:2,index:++o});i.append(l[h],ri())}}}else if(i.nodeType===8)if(i.data===Bd)c.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(qt,l+1))!==-1;)c.push({type:7,index:o}),l+=qt.length-1}o++}}static createElement(e,n){const r=$n.createElement("template");return r.innerHTML=e,r}}function tr(t,e,n=t,r){var i,o,s,a;if(e===xe)return e;let c=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const u=ii(e)?void 0:e._$litDirective$;return(c==null?void 0:c.constructor)!==u&&((o=c==null?void 0:c._$AO)===null||o===void 0||o.call(c,!1),u===void 0?c=void 0:(c=new u(t),c._$AT(t,n,r)),r!==void 0?((s=(a=n)._$Cl)!==null&&s!==void 0?s:a._$Cl=[])[r]=c:n._$Cu=c),c!==void 0&&(e=tr(t,c._$AS(t,e.values),c,r)),e}class Qx{constructor(e,n){this.v=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:$n).importNode(r,!0);er.currentNode=o;let s=er.nextNode(),a=0,c=0,u=i[0];for(;u!==void 0;){if(a===u.index){let f;u.type===2?f=new ai(s,s.nextSibling,this,e):u.type===1?f=new u.ctor(s,u.name,u.strings,this,e):u.type===6&&(f=new Xx(s,this,e)),this.v.push(f),u=i[++c]}a!==(u==null?void 0:u.index)&&(s=er.nextNode(),a++)}return o}m(e){let n=0;for(const r of this.v)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class ai{constructor(e,n,r,i){var o;this.type=2,this._$AH=R,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cg=(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._$Cg}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=tr(this,e,n),ii(e)?e===R||e==null||e===""?(this._$AH!==R&&this._$AR(),this._$AH=R):e!==this._$AH&&e!==xe&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.S(e):jx(e)?this.M(e):this.$(e)}A(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}S(e){this._$AH!==e&&(this._$AR(),this._$AH=this.A(e))}$(e){this._$AH!==R&&ii(this._$AH)?this._$AA.nextSibling.data=e:this.S($n.createTextNode(e)),this._$AH=e}T(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=si.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.m(r);else{const s=new Qx(o,this),a=s.p(this.options);s.m(r),this.S(a),this._$AH=s}}_$AC(e){let n=Gd.get(e.strings);return n===void 0&&Gd.set(e.strings,n=new si(e)),n}M(e){Pd(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 ai(this.A(ri()),this.A(ri()),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._$Cg=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class _o{constructor(e,n,r,i,o){this.type=1,this._$AH=R,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=R}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=tr(this,e,n,0),s=!ii(e)||e!==this._$AH&&e!==xe,s&&(this._$AH=e);else{const a=e;let c,u;for(e=o[0],c=0;c<o.length-1;c++)u=tr(this,a[r+c],n,c),u===xe&&(u=this._$AH[c]),s||(s=!ii(u)||u!==this._$AH[c]),u===R?e=R:e!==R&&(e+=(u!=null?u:"")+o[c+1]),this._$AH[c]=u}s&&!i&&this.k(e)}k(e){e===R?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class Vx extends _o{constructor(){super(...arguments),this.type=3}k(e){this.element[this.name]=e===R?void 0:e}}const _x=Jn?Jn.emptyScript:"";class Yx extends _o{constructor(){super(...arguments),this.type=4}k(e){e&&e!==R?this.element.setAttribute(this.name,_x):this.element.removeAttribute(this.name)}}class Wx extends _o{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=tr(this,e,n,0))!==null&&r!==void 0?r:R)===xe)return;const i=this._$AH,o=e===R&&i!==R||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,s=e!==R&&(i===R||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 Xx{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){tr(this,e)}}const Hd=window.litHtmlPolyfillSupport;Hd==null||Hd(si,ai),((kc=globalThis.litHtmlVersions)!==null&&kc!==void 0?kc:globalThis.litHtmlVersions=[]).push("2.0.2");function Qd(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function qx(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function qe(t){return Array.isArray(t)?t:typeof t!="undefined"?[t]:[]}function pe(t){return t[t.length-1]}const En="gs-suppress-tooltip";class Zx{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=pe(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=Rx(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&Kx(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&&(Xe("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Xe(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(M`${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 Kx(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const Jx="RawCode",$x="Literal",ev="Property",tv="Identifier",nv="ArrayExpression",rv="BinaryExpression",iv="CallExpression",ov="ConditionalExpression",sv="LogicalExpression",av="MemberExpression",cv="ObjectExpression",uv="UnaryExpression";function rt(t){this.type=t}rt.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=lv(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function lv(t){switch(t.type){case nv:return t.elements;case rv:case sv:return[t.left,t.right];case iv:return[t.callee].concat(t.arguments);case ov:return[t.test,t.consequent,t.alternate];case av:return[t.object,t.property];case cv:return t.properties;case ev:return[t.key,t.value];case uv:return[t.argument];case tv:case $x:case Jx:default:return[]}}var dt,N,C,ve,X,Yo=1,ci=2,Sn=3,Zt=4,Wo=5,Cn=6,Oe=7,ui=8,fv=9;dt={},dt[Yo]="Boolean",dt[ci]="<end>",dt[Sn]="Identifier",dt[Zt]="Keyword",dt[Wo]="Null",dt[Cn]="Numeric",dt[Oe]="Punctuator",dt[ui]="String",dt[fv]="RegularExpression";var hv="ArrayExpression",dv="BinaryExpression",pv="CallExpression",gv="ConditionalExpression",Vd="Identifier",mv="Literal",yv="LogicalExpression",Av="MemberExpression",bv="ObjectExpression",xv="Property",vv="UnaryExpression",ge="Unexpected token %0",wv="Unexpected number",Ev="Unexpected string",Sv="Unexpected identifier",Cv="Unexpected reserved word",Dv="Unexpected end of input",Oc="Invalid regular expression",Bc="Invalid regular expression: missing /",_d="Octal literals are not allowed in strict mode.",Mv="Duplicate data property in object literal not allowed in strict mode",ye="ILLEGAL",li="Disabled.",Iv=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]"),Tv=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 Xo(t,e){if(!t)throw new Error("ASSERT: "+e)}function Mt(t){return t>=48&&t<=57}function Pc(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function fi(t){return"01234567".indexOf(t)>=0}function Nv(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 hi(t){return t===10||t===13||t===8232||t===8233}function di(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&Iv.test(String.fromCharCode(t))}function qo(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&Tv.test(String.fromCharCode(t))}const Lv={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 Yd(){for(;C<ve;){const t=N.charCodeAt(C);if(Nv(t)||hi(t))++C;else break}}function Fc(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)C<ve&&Pc(N[C])?(r=N[C++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):Q({},ge,ye);return String.fromCharCode(i)}function kv(){var t,e,n,r;for(t=N[C],e=0,t==="}"&&Q({},ge,ye);C<ve&&(t=N[C++],!!Pc(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&Q({},ge,ye),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function Wd(){var t,e;for(t=N.charCodeAt(C++),e=String.fromCharCode(t),t===92&&(N.charCodeAt(C)!==117&&Q({},ge,ye),++C,t=Fc("u"),(!t||t==="\\"||!di(t.charCodeAt(0)))&&Q({},ge,ye),e=t);C<ve&&(t=N.charCodeAt(C),!!qo(t));)++C,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),N.charCodeAt(C)!==117&&Q({},ge,ye),++C,t=Fc("u"),(!t||t==="\\"||!qo(t.charCodeAt(0)))&&Q({},ge,ye),e+=t);return e}function Ov(){var t,e;for(t=C++;C<ve;){if(e=N.charCodeAt(C),e===92)return C=t,Wd();if(qo(e))++C;else break}return N.slice(t,C)}function Bv(){var t,e,n;return t=C,e=N.charCodeAt(C)===92?Wd():Ov(),e.length===1?n=Sn:Lv.hasOwnProperty(e)?n=Zt:e==="null"?n=Wo:e==="true"||e==="false"?n=Yo:n=Sn,{type:n,value:e,start:t,end:C}}function zc(){var t=C,e=N.charCodeAt(C),n,r=N[C],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++C,{type:Oe,value:String.fromCharCode(e),start:t,end:C};default:if(n=N.charCodeAt(C+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 C+=2,{type:Oe,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:C};case 33:case 61:return C+=2,N.charCodeAt(C)===61&&++C,{type:Oe,value:N.slice(t,C),start:t,end:C}}}if(s=N.substr(C,4),s===">>>=")return C+=4,{type:Oe,value:s,start:t,end:C};if(o=s.substr(0,3),o===">>>"||o==="<<="||o===">>=")return C+=3,{type:Oe,value:o,start:t,end:C};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return C+=2,{type:Oe,value:i,start:t,end:C};if(i==="//"&&Q({},ge,ye),"<>=!+-*%&|^/".indexOf(r)>=0)return++C,{type:Oe,value:r,start:t,end:C};Q({},ge,ye)}function Pv(t){let e="";for(;C<ve&&Pc(N[C]);)e+=N[C++];return e.length===0&&Q({},ge,ye),di(N.charCodeAt(C))&&Q({},ge,ye),{type:Cn,value:parseInt("0x"+e,16),start:t,end:C}}function Fv(t){let e="0"+N[C++];for(;C<ve&&fi(N[C]);)e+=N[C++];return(di(N.charCodeAt(C))||Mt(N.charCodeAt(C)))&&Q({},ge,ye),{type:Cn,value:parseInt(e,8),octal:!0,start:t,end:C}}function Xd(){var t,e,n;if(n=N[C],Xo(Mt(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=C,t="",n!=="."){if(t=N[C++],n=N[C],t==="0"){if(n==="x"||n==="X")return++C,Pv(e);if(fi(n))return Fv(e);n&&Mt(n.charCodeAt(0))&&Q({},ge,ye)}for(;Mt(N.charCodeAt(C));)t+=N[C++];n=N[C]}if(n==="."){for(t+=N[C++];Mt(N.charCodeAt(C));)t+=N[C++];n=N[C]}if(n==="e"||n==="E")if(t+=N[C++],n=N[C],(n==="+"||n==="-")&&(t+=N[C++]),Mt(N.charCodeAt(C)))for(;Mt(N.charCodeAt(C));)t+=N[C++];else Q({},ge,ye);return di(N.charCodeAt(C))&&Q({},ge,ye),{type:Cn,value:parseFloat(t),start:e,end:C}}function zv(){var t="",e,n,r,i,o=!1;for(e=N[C],Xo(e==="'"||e==='"',"String literal must starts with a quote"),n=C,++C;C<ve;)if(r=N[C++],r===e){e="";break}else if(r==="\\")if(r=N[C++],!r||!hi(r.charCodeAt(0)))switch(r){case"u":case"x":N[C]==="{"?(++C,t+=kv()):t+=Fc(r);break;case"n":t+=`
11
- `;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:fi(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),C<ve&&fi(N[C])&&(o=!0,i=i*8+"01234567".indexOf(N[C++]),"0123".indexOf(r)>=0&&C<ve&&fi(N[C])&&(i=i*8+"01234567".indexOf(N[C++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&N[C]===`
12
- `&&++C;else{if(hi(r.charCodeAt(0)))break;t+=r}return e!==""&&Q({},ge,ye),{type:ui,value:t,octal:o,start:n,end:C}}function Rv(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";Q({},Oc)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{Q({},Oc)}try{return new RegExp(t,e)}catch{return null}}function Uv(){var t,e,n,r,i;for(t=N[C],Xo(t==="/","Regular expression literal must start with a slash"),e=N[C++],n=!1,r=!1;C<ve;)if(t=N[C++],e+=t,t==="\\")t=N[C++],hi(t.charCodeAt(0))&&Q({},Bc),e+=t;else if(hi(t.charCodeAt(0)))Q({},Bc);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||Q({},Bc),i=e.substr(1,e.length-2),{value:i,literal:e}}function jv(){var t,e,n;for(e="",n="";C<ve&&(t=N[C],!!qo(t.charCodeAt(0)));)++C,t==="\\"&&C<ve?Q({},ge,ye):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&Q({},Oc,n),{value:n,literal:e}}function Gv(){var t,e,n,r;return X=null,Yd(),t=C,e=Uv(),n=jv(),r=Rv(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:C}}function Hv(t){return t.type===Sn||t.type===Zt||t.type===Yo||t.type===Wo}function qd(){if(Yd(),C>=ve)return{type:ci,start:C,end:C};const t=N.charCodeAt(C);return di(t)?Bv():t===40||t===41||t===59?zc():t===39||t===34?zv():t===46?Mt(N.charCodeAt(C+1))?Xd():zc():Mt(t)?Xd():zc()}function Be(){const t=X;return C=t.end,X=qd(),C=t.end,t}function Zd(){const t=C;X=qd(),C=t}function Qv(t){const e=new rt(hv);return e.elements=t,e}function Kd(t,e,n){const r=new rt(t==="||"||t==="&&"?yv:dv);return r.operator=t,r.left=e,r.right=n,r}function Vv(t,e){const n=new rt(pv);return n.callee=t,n.arguments=e,n}function _v(t,e,n){const r=new rt(gv);return r.test=t,r.consequent=e,r.alternate=n,r}function Rc(t){const e=new rt(Vd);return e.name=t,e}function pi(t){const e=new rt(mv);return e.value=t.value,e.raw=N.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function Jd(t,e,n){const r=new rt(Av);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function Yv(t){const e=new rt(bv);return e.properties=t,e}function $d(t,e,n){const r=new rt(xv);return r.key=e,r.value=n,r.kind=t,r}function Wv(t,e){const n=new rt(vv);return n.operator=t,n.argument=e,n.prefix=!0,n}function Q(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,s)=>(Xo(s<r.length,"Message reference must be in range"),r[s]));throw n=new Error(i),n.index=C,n.description=i,n}function Zo(t){t.type===ci&&Q(t,Dv),t.type===Cn&&Q(t,wv),t.type===ui&&Q(t,Ev),t.type===Sn&&Q(t,Sv),t.type===Zt&&Q(t,Cv),Q(t,ge,t.value)}function we(t){const e=Be();(e.type!==Oe||e.value!==t)&&Zo(e)}function J(t){return X.type===Oe&&X.value===t}function Uc(t){return X.type===Zt&&X.value===t}function Xv(){const t=[];for(C=X.start,we("[");!J("]");)J(",")?(Be(),t.push(null)):(t.push(Dn()),J("]")||we(","));return Be(),Qv(t)}function e0(){C=X.start;const t=Be();return t.type===ui||t.type===Cn?(t.octal&&Q(t,_d),pi(t)):Rc(t.value)}function qv(){var t,e,n,r;if(C=X.start,t=X,t.type===Sn)return n=e0(),we(":"),r=Dn(),$d("init",n,r);if(t.type===ci||t.type===Oe)Zo(t);else return e=e0(),we(":"),r=Dn(),$d("init",e,r)}function Zv(){var t=[],e,n,r,i={},o=String;for(C=X.start,we("{");!J("}");)e=qv(),e.key.type===Vd?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?Q({},Mv):i[r]=!0,t.push(e),J("}")||we(",");return we("}"),Yv(t)}function Kv(){we("(");const t=jc();return we(")"),t}const Jv={if:1};function $v(){var t,e,n;if(J("("))return Kv();if(J("["))return Xv();if(J("{"))return Zv();if(t=X.type,C=X.start,t===Sn||Jv[X.value])n=Rc(Be().value);else if(t===ui||t===Cn)X.octal&&Q(X,_d),n=pi(Be());else{if(t===Zt)throw new Error(li);t===Yo?(e=Be(),e.value=e.value==="true",n=pi(e)):t===Wo?(e=Be(),e.value=null,n=pi(e)):J("/")||J("/=")?(n=pi(Gv()),Zd()):Zo(Be())}return n}function ew(){const t=[];if(we("("),!J(")"))for(;C<ve&&(t.push(Dn()),!J(")"));)we(",");return we(")"),t}function tw(){C=X.start;const t=Be();return Hv(t)||Zo(t),Rc(t.value)}function nw(){return we("."),tw()}function rw(){we("[");const t=jc();return we("]"),t}function iw(){var t,e,n;for(t=$v();;)if(J("."))n=nw(),t=Jd(".",t,n);else if(J("("))e=ew(),t=Vv(t,e);else if(J("["))n=rw(),t=Jd("[",t,n);else break;return t}function t0(){const t=iw();if(X.type===Oe&&(J("++")||J("--")))throw new Error(li);return t}function Ko(){var t,e;if(X.type!==Oe&&X.type!==Zt)e=t0();else{if(J("++")||J("--"))throw new Error(li);if(J("+")||J("-")||J("~")||J("!"))t=Be(),e=Ko(),e=Wv(t.value,e);else{if(Uc("delete")||Uc("void")||Uc("typeof"))throw new Error(li);e=t0()}}return e}function n0(t){let e=0;if(t.type!==Oe&&t.type!==Zt)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 ow(){var t,e,n,r,i,o,s,a,c,u;if(t=X,c=Ko(),r=X,i=n0(r),i===0)return c;for(r.prec=i,Be(),e=[t,X],s=Ko(),o=[c,r,s];(i=n0(X))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)s=o.pop(),a=o.pop().value,c=o.pop(),e.pop(),n=Kd(a,c,s),o.push(n);r=Be(),r.prec=i,o.push(r),e.push(X),n=Ko(),o.push(n)}for(u=o.length-1,n=o[u],e.pop();u>1;)e.pop(),n=Kd(o[u-1].value,o[u-2],n),u-=2;return n}function Dn(){var t,e,n;return t=ow(),J("?")&&(Be(),e=Dn(),we(":"),n=Dn(),t=_v(t,e,n)),t}function jc(){const t=Dn();if(J(","))throw new Error(li);return t}function sw(t){N=t,C=0,ve=N.length,X=null,Zd();const e=jc();if(X.type!==ci)throw new Error("Unexpect token after expression.");return e}var aw={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 cw(t){function e(s,a,c,u){let f=t(a[0]);return c&&(f=c+"("+f+")",c.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+s+(u<0?"":u===0?"()":"("+a.slice(1).map(t).join(",")+")")}function n(s,a,c){return u=>e(s,u,a,c)}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&&re("Missing arguments to clamp function."),s.length>3&&re("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&&re("Missing arguments to if function."),s.length>3&&re("Too many arguments to if function.");const a=s.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function uw(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function lw(t){t=t||{};const e=t.allowed?lo(t.allowed):{},n=t.forbidden?lo(t.forbidden):{},r=t.constants||aw,i=(t.functions||cw)(l),o=t.globalvar,s=t.fieldvar,a=Te(o)?o:p=>`${o}["${p}"]`;let c={},u={},f=0;function l(p){if(oe(p))return p;const g=h[p.type];return g==null&&re("Unsupported type: "+p.type),g(p)}const h={Literal:p=>p.raw,Identifier:p=>{const g=p.name;return f>0?g:dn(n,g)?re("Illegal identifier: "+g):dn(r,g)?r[g]:dn(e,g)?g:(c[g]=1,a(g))},MemberExpression:p=>{const g=!p.computed,m=l(p.object);g&&(f+=1);const y=l(p.property);return m===s&&(u[uw(y)]=1),g&&(f-=1),m+(g?"."+y:"["+y+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&re("Illegal callee type: "+p.callee.type);const g=p.callee.name,m=p.arguments,y=dn(i,g)&&i[g];return y||re("Unrecognized function: "+g),Te(y)?y(m):y+"("+m.map(l).join(",")+")"},ArrayExpression:p=>"["+p.elements.map(l).join(",")+"]",BinaryExpression:p=>"("+l(p.left)+" "+p.operator+" "+l(p.right)+")",UnaryExpression:p=>"("+p.operator+l(p.argument)+")",ConditionalExpression:p=>"("+l(p.test)+"?"+l(p.consequent)+":"+l(p.alternate)+")",LogicalExpression:p=>"("+l(p.left)+p.operator+l(p.right)+")",ObjectExpression:p=>"{"+p.properties.map(l).join(",")+"}",Property:p=>{f+=1;const g=l(p.key);return f-=1,g+":"+l(p.value)}};function d(p){const g={code:l(p),globals:Object.keys(c),fields:Object.keys(u)};return c={},u={},g}return d.functions=i,d.constants=r,d}function Gc(t,e={}){const n=lw({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=sw(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 fw(){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 hw(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(Ke(i)&&i.resolutionChannel||r);n[r]=dw(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function dw(t,e,n,r){let i;if(Ze(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)),Xt(e.type)){const o=fw();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 Ze(t){return t&&"value"in t}function Mn(t){return t&&"field"in t}function gi(t){return t&&"datum"in t}function Ke(t){return Mn(t)||gi(t)||Qc(t)||r0(t)}function Hc(t,e){const n=t.mark.encoding[e];if(Ke(n))return n;throw new Error("Not a channel def with scale!")}function r0(t){return t&&"chrom"in t}function Qc(t){return t&&"expr"in t}const mi=["x","y"],pw=["x2","y2"],gw=[...mi,...pw];function i0(t){return mi.includes(t)}function yi(t){return gw.includes(t)}const Vc={x:"x2",y:"y2"},o0=Object.fromEntries(Object.entries(Vc).map(t=>[t[1],t[0]]));function Ai(t){return t in o0}function mw(t){const e=Vc[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function nr(t){var e;return(e=o0[t])!=null?e:t}function In(t){return["color","fill","stroke"].includes(nr(t))}function Jo(t){return["shape","squeeze"].includes(t)}function s0(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function a0(t){if(!Jo(t))throw new Error("Not a discrete channel: "+t);const e=new Map(s0(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 Z(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return q(n,[t],e)}else return no(t)}class yw{constructor(){this.accessorCreators=[],this.register(e=>{if(Mn(e))try{const n=Z(e.field);return n.constant=!1,n.fields=Ve(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>Qc(e)?Aw(e.expr):void 0),this.register(e=>{if(gi(e)){const r=My(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 Aw(t){const e=Gc(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.21.2 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
10
+ */var gu;const xr=globalThis.trustedTypes,k0=xr?xr.createPolicy("lit-html",{createHTML:t=>t}):void 0,rn=`lit$${(Math.random()+"").slice(9)}$`,N0="?"+rn,Kx=`<${N0}>`,wr=document,Li=(t="")=>wr.createComment(t),Bi=t=>t===null||typeof t!="object"&&typeof t!="function",L0=Array.isArray,Jx=t=>{var e;return L0(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},Oi=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,B0=/-->/g,O0=/>/g,jn=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,P0=/'/g,F0=/"/g,z0=/^(?:script|style|textarea|title)$/i,$x=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),D=$x(1),Ee=Symbol.for("lit-noChange"),G=Symbol.for("lit-nothing"),R0=new WeakMap,He=(t,e,n)=>{var r,i;const o=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let a=o._$litPart$;if(a===void 0){const s=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;o._$litPart$=a=new Fi(e.insertBefore(Li(),s),s,void 0,n!=null?n:{})}return a._$AI(t),a},Cr=wr.createTreeWalker(wr,129,null,!1),ew=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",a=Oi;for(let c=0;c<n;c++){const u=t[c];let f,l,d=-1,h=0;for(;h<u.length&&(a.lastIndex=h,l=a.exec(u),l!==null);)h=a.lastIndex,a===Oi?l[1]==="!--"?a=B0:l[1]!==void 0?a=O0:l[2]!==void 0?(z0.test(l[2])&&(i=RegExp("</"+l[2],"g")),a=jn):l[3]!==void 0&&(a=jn):a===jn?l[0]===">"?(a=i!=null?i:Oi,d=-1):l[1]===void 0?d=-2:(d=a.lastIndex-l[2].length,f=l[1],a=l[3]===void 0?jn:l[3]==='"'?F0:P0):a===F0||a===P0?a=jn:a===B0||a===O0?a=Oi:(a=jn,i=void 0);const p=a===jn&&t[c+1].startsWith("/>")?" ":"";o+=a===Oi?u+Kx:d>=0?(r.push(f),u.slice(0,d)+"$lit$"+u.slice(d)+rn+p):u+rn+(d===-2?(r.push(void 0),c):p)}const s=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[k0!==void 0?k0.createHTML(s):s,r]};class Pi{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,a=0;const s=e.length-1,c=this.parts,[u,f]=ew(e,n);if(this.el=Pi.createElement(u,r),Cr.currentNode=this.el.content,n===2){const l=this.el.content,d=l.firstChild;d.remove(),l.append(...d.childNodes)}for(;(i=Cr.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const d of i.getAttributeNames())if(d.endsWith("$lit$")||d.startsWith(rn)){const h=f[a++];if(l.push(d),h!==void 0){const p=i.getAttribute(h.toLowerCase()+"$lit$").split(rn),m=/([.?@])?(.*)/.exec(h);c.push({type:1,index:o,name:m[2],strings:p,ctor:m[1]==="."?nw:m[1]==="?"?iw:m[1]==="@"?ow:Ea})}else c.push({type:6,index:o})}for(const d of l)i.removeAttribute(d)}if(z0.test(i.tagName)){const l=i.textContent.split(rn),d=l.length-1;if(d>0){i.textContent=xr?xr.emptyScript:"";for(let h=0;h<d;h++)i.append(l[h],Li()),Cr.nextNode(),c.push({type:2,index:++o});i.append(l[d],Li())}}}else if(i.nodeType===8)if(i.data===N0)c.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(rn,l+1))!==-1;)c.push({type:7,index:o}),l+=rn.length-1}o++}}static createElement(e,n){const r=wr.createElement("template");return r.innerHTML=e,r}}function Sr(t,e,n=t,r){var i,o,a,s;if(e===Ee)return e;let c=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const u=Bi(e)?void 0:e._$litDirective$;return(c==null?void 0:c.constructor)!==u&&((o=c==null?void 0:c._$AO)===null||o===void 0||o.call(c,!1),u===void 0?c=void 0:(c=new u(t),c._$AT(t,n,r)),r!==void 0?((a=(s=n)._$Cl)!==null&&a!==void 0?a:s._$Cl=[])[r]=c:n._$Cu=c),c!==void 0&&(e=Sr(t,c._$AS(t,e.values),c,r)),e}class tw{constructor(e,n){this.v=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:wr).importNode(r,!0);Cr.currentNode=o;let a=Cr.nextNode(),s=0,c=0,u=i[0];for(;u!==void 0;){if(s===u.index){let f;u.type===2?f=new Fi(a,a.nextSibling,this,e):u.type===1?f=new u.ctor(a,u.name,u.strings,this,e):u.type===6&&(f=new aw(a,this,e)),this.v.push(f),u=i[++c]}s!==(u==null?void 0:u.index)&&(a=Cr.nextNode(),s++)}return o}m(e){let n=0;for(const r of this.v)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class Fi{constructor(e,n,r,i){var o;this.type=2,this._$AH=G,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cg=(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._$Cg}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=Sr(this,e,n),Bi(e)?e===G||e==null||e===""?(this._$AH!==G&&this._$AR(),this._$AH=G):e!==this._$AH&&e!==Ee&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.k(e):Jx(e)?this.S(e):this.$(e)}M(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}k(e){this._$AH!==e&&(this._$AR(),this._$AH=this.M(e))}$(e){this._$AH!==G&&Bi(this._$AH)?this._$AA.nextSibling.data=e:this.k(wr.createTextNode(e)),this._$AH=e}T(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=Pi.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.m(r);else{const a=new tw(o,this),s=a.p(this.options);a.m(r),this.k(s),this._$AH=a}}_$AC(e){let n=R0.get(e.strings);return n===void 0&&R0.set(e.strings,n=new Pi(e)),n}S(e){L0(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 Fi(this.M(Li()),this.M(Li()),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._$Cg=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class Ea{constructor(e,n,r,i,o){this.type=1,this._$AH=G,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=G}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const o=this.strings;let a=!1;if(o===void 0)e=Sr(this,e,n,0),a=!Bi(e)||e!==this._$AH&&e!==Ee,a&&(this._$AH=e);else{const s=e;let c,u;for(e=o[0],c=0;c<o.length-1;c++)u=Sr(this,s[r+c],n,c),u===Ee&&(u=this._$AH[c]),a||(a=!Bi(u)||u!==this._$AH[c]),u===G?e=G:e!==G&&(e+=(u!=null?u:"")+o[c+1]),this._$AH[c]=u}a&&!i&&this.C(e)}C(e){e===G?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class nw extends Ea{constructor(){super(...arguments),this.type=3}C(e){this.element[this.name]=e===G?void 0:e}}const rw=xr?xr.emptyScript:"";class iw extends Ea{constructor(){super(...arguments),this.type=4}C(e){e&&e!==G?this.element.setAttribute(this.name,rw):this.element.removeAttribute(this.name)}}class ow extends Ea{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=Sr(this,e,n,0))!==null&&r!==void 0?r:G)===Ee)return;const i=this._$AH,o=e===G&&i!==G||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,a=e!==G&&(i===G||o);o&&this.element.removeEventListener(this.name,this,i),a&&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 aw{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){Sr(this,e)}}const j0=window.litHtmlPolyfillSupport;j0==null||j0(Pi,Fi),((gu=globalThis.litHtmlVersions)!==null&&gu!==void 0?gu:globalThis.litHtmlVersions=[]).push("2.2.3");function U0(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function sw(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!="undefined"?[t]:[]}function ze(t){return t[t.length-1]}const Un="gs-suppress-tooltip";class cw{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=ze(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=qx(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&uw(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&&(He("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}He(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(D`${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 uw(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const lw="RawCode",fw="Literal",dw="Property",hw="Identifier",pw="ArrayExpression",mw="BinaryExpression",gw="CallExpression",yw="ConditionalExpression",vw="LogicalExpression",bw="MemberExpression",Aw="ObjectExpression",xw="UnaryExpression";function at(t){this.type=t}at.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=ww(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function ww(t){switch(t.type){case pw:return t.elements;case mw:case vw:return[t.left,t.right];case gw:return[t.callee].concat(t.arguments);case yw:return[t.test,t.consequent,t.alternate];case bw:return[t.object,t.property];case Aw:return t.properties;case dw:return[t.key,t.value];case xw:return[t.argument];case hw:case fw:case lw:default:return[]}}var yt,B,S,De,K,Da=1,zi=2,Gn=3,on=4,Ma=5,Hn=6,Re=7,Ri=8,Cw=9;yt={},yt[Da]="Boolean",yt[zi]="<end>",yt[Gn]="Identifier",yt[on]="Keyword",yt[Ma]="Null",yt[Hn]="Numeric",yt[Re]="Punctuator",yt[Ri]="String",yt[Cw]="RegularExpression";var Sw="ArrayExpression",Ew="BinaryExpression",Dw="CallExpression",Mw="ConditionalExpression",G0="Identifier",Tw="Literal",Iw="LogicalExpression",kw="MemberExpression",Nw="ObjectExpression",Lw="Property",Bw="UnaryExpression",be="Unexpected token %0",Ow="Unexpected number",Pw="Unexpected string",Fw="Unexpected identifier",zw="Unexpected reserved word",Rw="Unexpected end of input",yu="Invalid regular expression",vu="Invalid regular expression: missing /",H0="Octal literals are not allowed in strict mode.",jw="Duplicate data property in object literal not allowed in strict mode",Ce="ILLEGAL",ji="Disabled.",Uw=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]"),Gw=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 Ta(t,e){if(!t)throw new Error("ASSERT: "+e)}function kt(t){return t>=48&&t<=57}function bu(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Ui(t){return"01234567".indexOf(t)>=0}function Hw(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 Gi(t){return t===10||t===13||t===8232||t===8233}function Hi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&Uw.test(String.fromCharCode(t))}function Ia(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&Gw.test(String.fromCharCode(t))}const Qw={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 Q0(){for(;S<De;){const t=B.charCodeAt(S);if(Hw(t)||Gi(t))++S;else break}}function Au(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)S<De&&bu(B[S])?(r=B[S++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):_({},be,Ce);return String.fromCharCode(i)}function Vw(){var t,e,n,r;for(t=B[S],e=0,t==="}"&&_({},be,Ce);S<De&&(t=B[S++],!!bu(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&_({},be,Ce),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function V0(){var t,e;for(t=B.charCodeAt(S++),e=String.fromCharCode(t),t===92&&(B.charCodeAt(S)!==117&&_({},be,Ce),++S,t=Au("u"),(!t||t==="\\"||!Hi(t.charCodeAt(0)))&&_({},be,Ce),e=t);S<De&&(t=B.charCodeAt(S),!!Ia(t));)++S,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),B.charCodeAt(S)!==117&&_({},be,Ce),++S,t=Au("u"),(!t||t==="\\"||!Ia(t.charCodeAt(0)))&&_({},be,Ce),e+=t);return e}function Yw(){var t,e;for(t=S++;S<De;){if(e=B.charCodeAt(S),e===92)return S=t,V0();if(Ia(e))++S;else break}return B.slice(t,S)}function _w(){var t,e,n;return t=S,e=B.charCodeAt(S)===92?V0():Yw(),e.length===1?n=Gn:Qw.hasOwnProperty(e)?n=on:e==="null"?n=Ma:e==="true"||e==="false"?n=Da:n=Gn,{type:n,value:e,start:t,end:S}}function xu(){var t=S,e=B.charCodeAt(S),n,r=B[S],i,o,a;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++S,{type:Re,value:String.fromCharCode(e),start:t,end:S};default:if(n=B.charCodeAt(S+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 S+=2,{type:Re,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:S};case 33:case 61:return S+=2,B.charCodeAt(S)===61&&++S,{type:Re,value:B.slice(t,S),start:t,end:S}}}if(a=B.substr(S,4),a===">>>=")return S+=4,{type:Re,value:a,start:t,end:S};if(o=a.substr(0,3),o===">>>"||o==="<<="||o===">>=")return S+=3,{type:Re,value:o,start:t,end:S};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return S+=2,{type:Re,value:i,start:t,end:S};if(i==="//"&&_({},be,Ce),"<>=!+-*%&|^/".indexOf(r)>=0)return++S,{type:Re,value:r,start:t,end:S};_({},be,Ce)}function Ww(t){let e="";for(;S<De&&bu(B[S]);)e+=B[S++];return e.length===0&&_({},be,Ce),Hi(B.charCodeAt(S))&&_({},be,Ce),{type:Hn,value:parseInt("0x"+e,16),start:t,end:S}}function Xw(t){let e="0"+B[S++];for(;S<De&&Ui(B[S]);)e+=B[S++];return(Hi(B.charCodeAt(S))||kt(B.charCodeAt(S)))&&_({},be,Ce),{type:Hn,value:parseInt(e,8),octal:!0,start:t,end:S}}function Y0(){var t,e,n;if(n=B[S],Ta(kt(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=S,t="",n!=="."){if(t=B[S++],n=B[S],t==="0"){if(n==="x"||n==="X")return++S,Ww(e);if(Ui(n))return Xw(e);n&&kt(n.charCodeAt(0))&&_({},be,Ce)}for(;kt(B.charCodeAt(S));)t+=B[S++];n=B[S]}if(n==="."){for(t+=B[S++];kt(B.charCodeAt(S));)t+=B[S++];n=B[S]}if(n==="e"||n==="E")if(t+=B[S++],n=B[S],(n==="+"||n==="-")&&(t+=B[S++]),kt(B.charCodeAt(S)))for(;kt(B.charCodeAt(S));)t+=B[S++];else _({},be,Ce);return Hi(B.charCodeAt(S))&&_({},be,Ce),{type:Hn,value:parseFloat(t),start:e,end:S}}function Zw(){var t="",e,n,r,i,o=!1;for(e=B[S],Ta(e==="'"||e==='"',"String literal must starts with a quote"),n=S,++S;S<De;)if(r=B[S++],r===e){e="";break}else if(r==="\\")if(r=B[S++],!r||!Gi(r.charCodeAt(0)))switch(r){case"u":case"x":B[S]==="{"?(++S,t+=Vw()):t+=Au(r);break;case"n":t+=`
11
+ `;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:Ui(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),S<De&&Ui(B[S])&&(o=!0,i=i*8+"01234567".indexOf(B[S++]),"0123".indexOf(r)>=0&&S<De&&Ui(B[S])&&(i=i*8+"01234567".indexOf(B[S++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&B[S]===`
12
+ `&&++S;else{if(Gi(r.charCodeAt(0)))break;t+=r}return e!==""&&_({},be,Ce),{type:Ri,value:t,octal:o,start:n,end:S}}function qw(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";_({},yu)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{_({},yu)}try{return new RegExp(t,e)}catch{return null}}function Kw(){var t,e,n,r,i;for(t=B[S],Ta(t==="/","Regular expression literal must start with a slash"),e=B[S++],n=!1,r=!1;S<De;)if(t=B[S++],e+=t,t==="\\")t=B[S++],Gi(t.charCodeAt(0))&&_({},vu),e+=t;else if(Gi(t.charCodeAt(0)))_({},vu);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||_({},vu),i=e.substr(1,e.length-2),{value:i,literal:e}}function Jw(){var t,e,n;for(e="",n="";S<De&&(t=B[S],!!Ia(t.charCodeAt(0)));)++S,t==="\\"&&S<De?_({},be,Ce):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&_({},yu,n),{value:n,literal:e}}function $w(){var t,e,n,r;return K=null,Q0(),t=S,e=Kw(),n=Jw(),r=qw(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:S}}function e4(t){return t.type===Gn||t.type===on||t.type===Da||t.type===Ma}function _0(){if(Q0(),S>=De)return{type:zi,start:S,end:S};const t=B.charCodeAt(S);return Hi(t)?_w():t===40||t===41||t===59?xu():t===39||t===34?Zw():t===46?kt(B.charCodeAt(S+1))?Y0():xu():kt(t)?Y0():xu()}function je(){const t=K;return S=t.end,K=_0(),S=t.end,t}function W0(){const t=S;K=_0(),S=t}function t4(t){const e=new at(Sw);return e.elements=t,e}function X0(t,e,n){const r=new at(t==="||"||t==="&&"?Iw:Ew);return r.operator=t,r.left=e,r.right=n,r}function n4(t,e){const n=new at(Dw);return n.callee=t,n.arguments=e,n}function r4(t,e,n){const r=new at(Mw);return r.test=t,r.consequent=e,r.alternate=n,r}function wu(t){const e=new at(G0);return e.name=t,e}function Qi(t){const e=new at(Tw);return e.value=t.value,e.raw=B.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function Z0(t,e,n){const r=new at(kw);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function i4(t){const e=new at(Nw);return e.properties=t,e}function q0(t,e,n){const r=new at(Lw);return r.key=e,r.value=n,r.kind=t,r}function o4(t,e){const n=new at(Bw);return n.operator=t,n.argument=e,n.prefix=!0,n}function _(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,a)=>(Ta(a<r.length,"Message reference must be in range"),r[a]));throw n=new Error(i),n.index=S,n.description=i,n}function ka(t){t.type===zi&&_(t,Rw),t.type===Hn&&_(t,Ow),t.type===Ri&&_(t,Pw),t.type===Gn&&_(t,Fw),t.type===on&&_(t,zw),_(t,be,t.value)}function Me(t){const e=je();(e.type!==Re||e.value!==t)&&ka(e)}function ee(t){return K.type===Re&&K.value===t}function Cu(t){return K.type===on&&K.value===t}function a4(){const t=[];for(S=K.start,Me("[");!ee("]");)ee(",")?(je(),t.push(null)):(t.push(Qn()),ee("]")||Me(","));return je(),t4(t)}function K0(){S=K.start;const t=je();return t.type===Ri||t.type===Hn?(t.octal&&_(t,H0),Qi(t)):wu(t.value)}function s4(){var t,e,n,r;if(S=K.start,t=K,t.type===Gn)return n=K0(),Me(":"),r=Qn(),q0("init",n,r);if(t.type===zi||t.type===Re)ka(t);else return e=K0(),Me(":"),r=Qn(),q0("init",e,r)}function c4(){var t=[],e,n,r,i={},o=String;for(S=K.start,Me("{");!ee("}");)e=s4(),e.key.type===G0?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?_({},jw):i[r]=!0,t.push(e),ee("}")||Me(",");return Me("}"),i4(t)}function u4(){Me("(");const t=Su();return Me(")"),t}const l4={if:1};function f4(){var t,e,n;if(ee("("))return u4();if(ee("["))return a4();if(ee("{"))return c4();if(t=K.type,S=K.start,t===Gn||l4[K.value])n=wu(je().value);else if(t===Ri||t===Hn)K.octal&&_(K,H0),n=Qi(je());else{if(t===on)throw new Error(ji);t===Da?(e=je(),e.value=e.value==="true",n=Qi(e)):t===Ma?(e=je(),e.value=null,n=Qi(e)):ee("/")||ee("/=")?(n=Qi($w()),W0()):ka(je())}return n}function d4(){const t=[];if(Me("("),!ee(")"))for(;S<De&&(t.push(Qn()),!ee(")"));)Me(",");return Me(")"),t}function h4(){S=K.start;const t=je();return e4(t)||ka(t),wu(t.value)}function p4(){return Me("."),h4()}function m4(){Me("[");const t=Su();return Me("]"),t}function g4(){var t,e,n;for(t=f4();;)if(ee("."))n=p4(),t=Z0(".",t,n);else if(ee("("))e=d4(),t=n4(t,e);else if(ee("["))n=m4(),t=Z0("[",t,n);else break;return t}function J0(){const t=g4();if(K.type===Re&&(ee("++")||ee("--")))throw new Error(ji);return t}function Na(){var t,e;if(K.type!==Re&&K.type!==on)e=J0();else{if(ee("++")||ee("--"))throw new Error(ji);if(ee("+")||ee("-")||ee("~")||ee("!"))t=je(),e=Na(),e=o4(t.value,e);else{if(Cu("delete")||Cu("void")||Cu("typeof"))throw new Error(ji);e=J0()}}return e}function $0(t){let e=0;if(t.type!==Re&&t.type!==on)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 y4(){var t,e,n,r,i,o,a,s,c,u;if(t=K,c=Na(),r=K,i=$0(r),i===0)return c;for(r.prec=i,je(),e=[t,K],a=Na(),o=[c,r,a];(i=$0(K))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),s=o.pop().value,c=o.pop(),e.pop(),n=X0(s,c,a),o.push(n);r=je(),r.prec=i,o.push(r),e.push(K),n=Na(),o.push(n)}for(u=o.length-1,n=o[u],e.pop();u>1;)e.pop(),n=X0(o[u-1].value,o[u-2],n),u-=2;return n}function Qn(){var t,e,n;return t=y4(),ee("?")&&(je(),e=Qn(),Me(":"),n=Qn(),t=r4(t,e,n)),t}function Su(){const t=Qn();if(ee(","))throw new Error(ji);return t}function v4(t){B=t,S=0,De=B.length,K=null,W0();const e=Su();if(K.type!==zi)throw new Error("Unexpect token after expression.");return e}var b4={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 A4(t){function e(a,s,c,u){let f=t(s[0]);return c&&(f=c+"("+f+")",c.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+a+(u<0?"":u===0?"()":"("+s.slice(1).map(t).join(",")+")")}function n(a,s,c){return u=>e(a,u,s,c)}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(a){a.length<3&&ce("Missing arguments to clamp function."),a.length>3&&ce("Too many arguments to clamp function.");const s=a.map(t);return"Math.max("+s[1]+", Math.min("+s[2]+","+s[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(a){a.length<3&&ce("Missing arguments to if function."),a.length>3&&ce("Too many arguments to if function.");const s=a.map(t);return"("+s[0]+"?"+s[1]+":"+s[2]+")"}}}function x4(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function w4(t){t=t||{};const e=t.allowed?qo(t.allowed):{},n=t.forbidden?qo(t.forbidden):{},r=t.constants||b4,i=(t.functions||A4)(l),o=t.globalvar,a=t.fieldvar,s=Oe(o)?o:p=>`${o}["${p}"]`;let c={},u={},f=0;function l(p){if(re(p))return p;const m=d[p.type];return m==null&&ce("Unsupported type: "+p.type),m(p)}const d={Literal:p=>p.raw,Identifier:p=>{const m=p.name;return f>0?m:En(n,m)?ce("Illegal identifier: "+m):En(r,m)?r[m]:En(e,m)?m:(c[m]=1,s(m))},MemberExpression:p=>{const m=!p.computed,g=l(p.object);m&&(f+=1);const y=l(p.property);return g===a&&(u[x4(y)]=1),m&&(f-=1),g+(m?"."+y:"["+y+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&ce("Illegal callee type: "+p.callee.type);const m=p.callee.name,g=p.arguments,y=En(i,m)&&i[m];return y||ce("Unrecognized function: "+m),Oe(y)?y(g):y+"("+g.map(l).join(",")+")"},ArrayExpression:p=>"["+p.elements.map(l).join(",")+"]",BinaryExpression:p=>"("+l(p.left)+" "+p.operator+" "+l(p.right)+")",UnaryExpression:p=>"("+p.operator+l(p.argument)+")",ConditionalExpression:p=>"("+l(p.test)+"?"+l(p.consequent)+":"+l(p.alternate)+")",LogicalExpression:p=>"("+l(p.left)+p.operator+l(p.right)+")",ObjectExpression:p=>"{"+p.properties.map(l).join(",")+"}",Property:p=>{f+=1;const m=l(p.key);return f-=1,m+":"+l(p.value)}};function h(p){const m={code:l(p),globals:Object.keys(c),fields:Object.keys(u)};return c={},u={},m}return h.functions=i,h.constants=r,h}function Eu(t,e={}){const n=w4({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=v4(t),i=n(r),o=Function("datum","global",`"use strict"; return (${i.code});`),a=s=>o(s,e);return a.fields=i.fields,a}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function C4(){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 S4(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(Je(i)&&i.resolutionChannel||r);n[r]=E4(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function E4(t,e,n,r){let i;if(st(t)){const o=t.value;i=a=>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)),nn(e.type)){const o=C4();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 a in i)a in i&&(o[a]=i[a]);return o},i}function st(t){return t&&"value"in t}function Vn(t){return t&&"field"in t}function Vi(t){return t&&"datum"in t}function Je(t){return Vn(t)||Vi(t)||Mu(t)||ep(t)}function Du(t,e){const n=t.mark.encoding[e];if(Je(n))return n;throw new Error("Not a channel def with scale!")}function ep(t){return t&&"chrom"in t}function Mu(t){return t&&"expr"in t}const Yi=["x","y"],D4=["x2","y2"],M4=[...Yi,...D4];function tp(t){return Yi.includes(t)}function _i(t){return M4.includes(t)}const Tu={x:"x2",y:"y2"},np=Object.fromEntries(Object.entries(Tu).map(t=>[t[1],t[0]]));function Wi(t){return t in np}function T4(t){const e=Tu[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function Er(t){var e;return(e=np[t])!=null?e:t}function Yn(t){return["color","fill","stroke"].includes(Er(t))}function La(t){return["shape","squeeze"].includes(t)}function rp(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function ip(t){if(!La(t))throw new Error("Not a discrete channel: "+t);const e=new Map(rp(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 J(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return R(n,[t],e)}else return Ho(t)}class I4{constructor(){this.accessorCreators=[],this.register(e=>{if(Vn(e))try{const n=J(e.field);return n.constant=!1,n.fields=we(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>Mu(e)?k4(e.expr):void 0),this.register(e=>{if(Vi(e)){const r=tv(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 k4(t){const e=Eu(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
13
13
  Available via the MIT license.
14
- see: http://github.com/greggman/twgl.js for details */const _c=5120,bi=5121,Yc=5122,Wc=5123,Xc=5124,qc=5125,Zc=5126,bw=32819,xw=32820,vw=33635,ww=5131,Ew=33640,Sw=35899,Cw=35902,Dw=36269,Mw=34042,c0={};{const t=c0;t[_c]=Int8Array,t[bi]=Uint8Array,t[Yc]=Int16Array,t[Wc]=Uint16Array,t[Xc]=Int32Array,t[qc]=Uint32Array,t[Zc]=Float32Array,t[bw]=Uint16Array,t[xw]=Uint16Array,t[vw]=Uint16Array,t[ww]=Uint16Array,t[Ew]=Uint32Array,t[Sw]=Uint32Array,t[Cw]=Uint32Array,t[Dw]=Uint32Array,t[Mw]=Uint32Array}function Kc(t){if(t instanceof Int8Array)return _c;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return bi;if(t instanceof Int16Array)return Yc;if(t instanceof Uint16Array)return Wc;if(t instanceof Int32Array)return Xc;if(t instanceof Uint32Array)return qc;if(t instanceof Float32Array)return Zc;throw new Error("unsupported typed array type")}function Iw(t){if(t===Int8Array)return _c;if(t===Uint8Array||t===Uint8ClampedArray)return bi;if(t===Int16Array)return Yc;if(t===Uint16Array)return Wc;if(t===Int32Array)return Xc;if(t===Uint32Array)return qc;if(t===Float32Array)return Zc;throw new Error("unsupported typed array type")}function Tw(t){const e=c0[t];if(!e)throw new Error("unknown gl type");return e}const $o=typeof SharedArrayBuffer!="undefined"?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 Nw(...t){console.error(...t)}function u0(...t){console.warn(...t)}function Lw(t,e){return typeof WebGLBuffer!="undefined"&&e instanceof WebGLBuffer}function l0(t,e){return typeof WebGLRenderbuffer!="undefined"&&e instanceof WebGLRenderbuffer}function es(t,e){return typeof WebGLTexture!="undefined"&&e instanceof WebGLTexture}function kw(t,e){return typeof WebGLSampler!="undefined"&&e instanceof WebGLSampler}const f0=35044,pt=34962,Ow=34963,Bw=34660,Pw=5120,Fw=5121,zw=5122,Rw=5123,Uw=5124,jw=5125,Gw=5126,h0={attribPrefix:""};function d0(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||f0)}function p0(t,e,n,r){if(Lw(t,e))return e;n=n||pt;const i=t.createBuffer();return d0(t,n,i,e,r),i}function g0(t){return t==="indices"}function Hw(t){return t instanceof Int8Array||t instanceof Uint8Array}function Qw(t){return t===Int8Array||t===Uint8Array}function Vw(t){return t.length?t:t.data}const _w=/coord|texture/i,Yw=/color|colour/i;function m0(t,e){let n;if(_w.test(t)?n=2:Yw.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 Ww(t,e){return t.numComponents||t.size||m0(e,Vw(t).length)}function Jc(t,e){if($o(t))return t;if($o(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(g0(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function Xw(t,e){const n={};return Object.keys(e).forEach(function(r){if(!g0(r)){const i=e[r],o=i.attrib||i.name||i.attribName||h0.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!$o(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let s,a,c,u;if(i.buffer&&i.buffer instanceof WebGLBuffer)s=i.buffer,u=i.numComponents||i.size,a=i.type,c=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=Iw(l),c=i.normalize!==void 0?i.normalize:Qw(l),u=i.numComponents||i.size||m0(r,f),s=t.createBuffer(),t.bindBuffer(pt,s),t.bufferData(pt,h,i.drawType||f0)}else{const f=Jc(i,r);s=p0(t,f,void 0,i.drawType),a=Kc(f),c=i.normalize!==void 0?i.normalize:Hw(f),u=Ww(i,r)}n[o]={buffer:s,numComponents:u,type:a,normalize:c,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(pt,null),n}function qw(t,e,n,r){n=Jc(n),r!==void 0?(t.bindBuffer(pt,e.buffer),t.bufferSubData(pt,r,n)):d0(t,pt,e.buffer,n,e.drawType)}function Zw(t,e){return e===Pw||e===Fw?1:e===zw||e===Rw?2:e===Uw||e===jw||e===Gw?4:0}const $c=["position","positions","a_position"];function Kw(t,e){let n,r;for(r=0;r<$c.length&&(n=$c[r],!(n in e||(n=h0.attribPrefix+n,n in e)));++r);r===$c.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(pt,i.buffer);const o=t.getBufferParameter(pt,Bw);t.bindBuffer(pt,null);const s=Zw(t,i.type),a=o/s,c=i.numComponents||i.size,u=a/c;if(u%1!==0)throw new Error(`numComponents ${c} not correct for length ${length}`);return u}function Jw(t,e,n){const r=Xw(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const s=Jc(o,"indices");i.indices=p0(t,s,Ow),i.numElements=s.length,i.elementType=Kc(s)}else i.numElements||(i.numElements=Kw(t,i.attribs));return i}function rr(t){return!!t.texStorage2D}const eu=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)}}(),Kt={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},ir=$o,y0=function(){let t;return function(){return t=t||(typeof document!="undefined"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),A0=6406,gt=6407,$=6408,b0=6409,x0=6410,xi=6402,v0=34041,ts=33071,$w=9728,e4=9729,It=3553,Tt=34067,Jt=32879,$t=35866,ns=34069,t4=34070,n4=34071,r4=34072,i4=34073,o4=34074,tu=10241,nu=10240,rs=10242,is=10243,w0=32882,s4=33082,a4=33083,c4=33084,u4=33085,ru=3317,E0=3314,S0=32878,C0=3316,D0=3315,M0=32877,l4=37443,f4=37441,h4=37440,d4=33321,p4=36756,g4=33325,m4=33326,y4=33330,A4=33329,b4=33338,x4=33337,v4=33340,w4=33339,E4=33323,S4=36757,C4=33327,D4=33328,M4=33336,I4=33335,T4=33332,N4=33331,L4=33334,k4=33333,O4=32849,B4=35905,P4=36194,F4=36758,z4=35898,R4=35901,U4=34843,j4=34837,G4=36221,H4=36239,Q4=36215,V4=36233,_4=36209,Y4=36227,W4=32856,X4=35907,q4=36759,Z4=32855,K4=32854,J4=32857,$4=34842,e3=34836,t3=36220,n3=36238,r3=36975,i3=36214,o3=36232,s3=36226,a3=36208,c3=33189,u3=33190,l3=36012,f3=36013,h3=35056,en=5120,ee=5121,os=5122,or=5123,ss=5124,Tn=5125,Ee=5126,I0=32819,T0=32820,N0=33635,it=5131,vi=36193,iu=33640,d3=35899,p3=35902,g3=36269,m3=34042,as=33319,sr=33320,cs=6403,ar=36244,cr=36248,Nn=36249;let ou;function us(t){if(!ou){const e={};e[A0]={textureFormat:A0,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ee,it,vi,Ee]},e[b0]={textureFormat:b0,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ee,it,vi,Ee]},e[x0]={textureFormat:x0,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[ee,it,vi,Ee]},e[gt]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[ee,it,vi,Ee,N0]},e[$]={textureFormat:$,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[ee,it,vi,Ee,I0,T0]},e[xi]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Tn,or]},e[d4]={textureFormat:cs,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[ee]},e[p4]={textureFormat:cs,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[en]},e[g4]={textureFormat:cs,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[Ee,it]},e[m4]={textureFormat:cs,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[Ee]},e[y4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[ee]},e[A4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[en]},e[T4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[or]},e[N4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[os]},e[L4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Tn]},e[k4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ss]},e[E4]={textureFormat:as,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[ee]},e[S4]={textureFormat:as,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[en]},e[C4]={textureFormat:as,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[Ee,it]},e[D4]={textureFormat:as,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[Ee]},e[M4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ee]},e[I4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[en]},e[b4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[or]},e[x4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[os]},e[v4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Tn]},e[w4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ss]},e[O4]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[ee]},e[B4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[ee]},e[P4]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[ee,N0]},e[F4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[en]},e[z4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Ee,it,d3]},e[R4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Ee,it,p3]},e[U4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[Ee,it]},e[j4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Ee]},e[G4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[ee]},e[H4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[en]},e[Q4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[or]},e[V4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[os]},e[_4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Tn]},e[Y4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[ss]},e[W4]={textureFormat:$,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ee]},e[X4]={textureFormat:$,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ee]},e[q4]={textureFormat:$,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[en]},e[Z4]={textureFormat:$,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[ee,T0,iu]},e[K4]={textureFormat:$,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[ee,I0]},e[J4]={textureFormat:$,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[iu]},e[$4]={textureFormat:$,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[Ee,it]},e[e3]={textureFormat:$,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[Ee]},e[t3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ee]},e[n3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[en]},e[r3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[iu]},e[i3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[or]},e[o3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[os]},e[s3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[ss]},e[a3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Tn]},e[c3]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[or,Tn]},e[u3]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Tn]},e[l3]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ee]},e[h3]={textureFormat:v0,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[m3]},e[f3]={textureFormat:v0,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[g3]},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})}),ou=e}return ou[t]}function y3(t,e){const n=us(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function ur(t){const e=us(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function L0(t){return(t&t-1)===0}function A3(t,e,n,r){if(!rr(t))return L0(e)&&L0(n);const i=us(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function b3(t){const e=us(t);if(!e)throw"unknown internal format";return e.textureFilterable}function k0(t,e,n){return ir(e)?Kc(e):n||ee}function ls(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===Tt?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 lr(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(l4,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(f4,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(h4,e.flipY)}function O0(t){t.pixelStorei(ru,4),rr(t)&&(t.pixelStorei(E0,0),t.pixelStorei(S0,0),t.pixelStorei(C0,0),t.pixelStorei(D0,0),t.pixelStorei(M0,0))}function x3(t,e,n,r){r.minMag&&(n.call(t,e,tu,r.minMag),n.call(t,e,nu,r.minMag)),r.min&&n.call(t,e,tu,r.min),r.mag&&n.call(t,e,nu,r.mag),r.wrap&&(n.call(t,e,rs,r.wrap),n.call(t,e,is,r.wrap),(e===Jt||kw(t,e))&&n.call(t,e,w0,r.wrap)),r.wrapR&&n.call(t,e,w0,r.wrapR),r.wrapS&&n.call(t,e,rs,r.wrapS),r.wrapT&&n.call(t,e,is,r.wrapT),r.minLod&&n.call(t,e,s4,r.minLod),r.maxLod&&n.call(t,e,a4,r.maxLod),r.baseLevel&&n.call(t,e,c4,r.baseLevel),r.maxLevel&&n.call(t,e,u4,r.maxLevel)}function B0(t,e,n){const r=n.target||It;t.bindTexture(r,e),x3(t,r,t.texParameteri,n)}function v3(t){return t=t||Kt.textureColor,ir(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function su(t,e,n,r,i,o){n=n||Kt.textureOptions,o=o||$;const s=n.target||It;if(r=r||n.width,i=i||n.height,t.bindTexture(s,e),A3(t,r,i,o))t.generateMipmap(s);else{const a=b3(o)?e4:$w;t.texParameteri(s,tu,a),t.texParameteri(s,nu,a),t.texParameteri(s,rs,ts),t.texParameteri(s,is,ts)}}function wi(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function au(t,e){return e=e||{},e.cubeFaceOrder||[ns,t4,n4,r4,i4,o4]}function cu(t,e){const r=au(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function P0(t,e,n,r){r=r||Kt.textureOptions;const i=r.target||It,o=r.level||0;let s=n.width,a=n.height;const c=r.internalFormat||r.format||$,u=ur(c),f=r.format||u.format,l=r.type||u.type;if(lr(t,r),t.bindTexture(i,e),i===Tt){const h=n.width,d=n.height;let p,g;if(h/6===d)p=d,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(d/6===h)p=h,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3===d/2)p=h/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2===d/3)p=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=y0();m?(m.canvas.width=p,m.canvas.height=p,s=p,a=p,cu(t,r).forEach(function(y){const x=g[y.ndx*2+0]*p,v=g[y.ndx*2+1]*p;m.drawImage(n,x,v,p,p,0,0,p,p),t.texImage2D(y.face,o,c,f,l,m.canvas)}),m.canvas.width=1,m.canvas.height=1):typeof createImageBitmap!="undefined"&&(s=p,a=p,cu(t,r).forEach(function(y){const x=g[y.ndx*2+0]*p,v=g[y.ndx*2+1]*p;t.texImage2D(y.face,o,c,p,p,0,f,l,null),createImageBitmap(n,x,v,p,p,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(S){lr(t,r),t.bindTexture(i,e),t.texImage2D(y.face,o,c,f,l,S),wi(r)&&su(t,e,r,s,a,c)})}))}else if(i===Jt||i===$t){const h=Math.min(n.width,n.height),d=Math.max(n.width,n.height),p=d/h;if(p%1!==0)throw"can not compute 3D dimensions of element";const g=n.width===d?1:0,m=n.height===d?1:0;t.pixelStorei(ru,1),t.pixelStorei(E0,n.width),t.pixelStorei(S0,0),t.pixelStorei(M0,0),t.texImage3D(i,o,c,h,h,h,0,f,l,null);for(let y=0;y<p;++y){const x=y*h*g,v=y*h*m;t.pixelStorei(C0,x),t.pixelStorei(D0,v),t.texSubImage3D(i,o,0,0,y,h,h,1,f,l,n)}O0(t)}else t.texImage2D(i,o,c,f,l,n);wi(r)&&su(t,e,r,s,a,c),B0(t,e,r)}function Ei(){}function w3(t){if(typeof document!="undefined"){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 E3(t,e){return e===void 0&&!w3(t)?"anonymous":e}function S3(t,e,n){n=n||Ei;let r;if(e=e!==void 0?e:Kt.crossOrigin,e=E3(t,e),typeof Image!="undefined"){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 c="couldn't load image: "+t;Nw(c),n(c,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!="undefined"){let i,o;const s=function(){n(i,o)},a={};e&&(a.mode="cors"),fetch(t,a).then(function(c){if(!c.ok)throw c;return c.blob()}).then(function(c){return createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(c){o=c,setTimeout(s)}).catch(function(c){i=c,setTimeout(s)}),r=null}return r}function F0(t){return typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap||typeof ImageData!="undefined"&&t instanceof ImageData||typeof HTMLElement!="undefined"&&t instanceof HTMLElement}function uu(t,e,n){return F0(t)?(setTimeout(function(){n(null,t)}),t):S3(t,e,n)}function lu(t,e,n){n=n||Kt.textureOptions;const r=n.target||It;if(t.bindTexture(r,e),n.color===!1)return;const i=v3(n.color);if(r===Tt)for(let o=0;o<6;++o)t.texImage2D(ns+o,0,$,1,1,0,$,ee,i);else r===Jt||r===$t?t.texImage3D(r,0,$,1,1,1,0,$,ee,i):t.texImage2D(r,0,$,1,1,0,$,ee,i)}function C3(t,e,n,r){return r=r||Ei,n=n||Kt.textureOptions,lu(t,e,n),n=Object.assign({},n),uu(n.src,n.crossOrigin,function(o,s){o?r(o,e,s):(P0(t,e,s,n),r(null,e,s))})}function D3(t,e,n,r){r=r||Ei;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||$,a=ur(s),c=n.format||a.format,u=n.type||ee,f=n.target||It;if(f!==Tt)throw"target must be TEXTURE_CUBE_MAP";lu(t,e,n),n=Object.assign({},n);let l=6;const h=[],d=au(t,n);let p;function g(m){return function(y,x){--l,y?h.push(y):x.width!==x.height?h.push("cubemap face img is not a square: "+x.src):(lr(t,n),t.bindTexture(f,e),l===5?au().forEach(function(v){t.texImage2D(v,o,s,c,u,x)}):t.texImage2D(m,o,s,c,u,x),wi(n)&&t.generateMipmap(f)),l===0&&r(h.length?h:void 0,e,p)}}p=i.map(function(m,y){return uu(m,n.crossOrigin,g(d[y]))})}function M3(t,e,n,r){r=r||Ei;const i=n.src,o=n.internalFormat||n.format||$,s=ur(o),a=n.format||s.format,c=n.type||ee,u=n.target||$t;if(u!==Jt&&u!==$t)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";lu(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let h;const d=n.level||0;let p=n.width,g=n.height;const m=i.length;let y=!0;function x(v){return function(S,b){if(--f,S)l.push(S);else{if(lr(t,n),t.bindTexture(u,e),y){y=!1,p=n.width||b.width,g=n.height||b.height,t.texImage3D(u,d,o,p,g,m,0,a,c,null);for(let A=0;A<m;++A)t.texSubImage3D(u,d,0,0,A,p,g,1,a,c,b)}else{let A=b,w;(b.width!==p||b.height!==g)&&(w=y0(),A=w.canvas,w.canvas.width=p,w.canvas.height=g,w.drawImage(b,0,0,p,g)),t.texSubImage3D(u,d,0,0,v,p,g,1,a,c,A),w&&A===w.canvas&&(w.canvas.width=0,w.canvas.height=0)}wi(n)&&t.generateMipmap(u)}f===0&&r(l.length?l:void 0,e,h)}}h=i.map(function(v,S){return uu(v,n.crossOrigin,x(S))})}function z0(t,e,n,r){r=r||Kt.textureOptions;const i=r.target||It;t.bindTexture(i,e);let o=r.width,s=r.height,a=r.depth;const c=r.level||0,u=r.internalFormat||r.format||$,f=ur(u),l=r.format||f.format,h=r.type||k0(t,n,f.type);if(ir(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const m=Tw(h);n=new m(n)}const d=y3(u,h),p=n.byteLength/d;if(p%1)throw"length wrong size for format: "+eu(t,l);let g;if(i===Jt||i===$t)if(!o&&!s&&!a){const m=Math.cbrt(p);if(m%1!==0)throw"can't guess cube size of array of numElements: "+p;o=m,s=m,a=m}else o&&(!s||!a)?(g=ls(t,i,s,a,p/o),s=g.width,a=g.height):s&&(!o||!a)?(g=ls(t,i,o,a,p/s),o=g.width,a=g.height):(g=ls(t,i,o,s,p/a),o=g.width,s=g.height);else g=ls(t,i,o,s,p),o=g.width,s=g.height;if(O0(t),t.pixelStorei(ru,r.unpackAlignment||1),lr(t,r),i===Tt){const m=d/n.BYTES_PER_ELEMENT,y=p/6*m;cu(t,r).forEach(x=>{const v=y*x.ndx,S=n.subarray(v,v+y);t.texImage2D(x.face,c,u,o,s,0,l,h,S)})}else i===Jt||i===$t?t.texImage3D(i,c,u,o,s,a,0,l,h,n):t.texImage2D(i,c,u,o,s,0,l,h,n);return{width:o,height:s,depth:a,type:h}}function I3(t,e,n){const r=n.target||It;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||$,s=ur(o),a=n.format||s.format,c=n.type||s.type;if(lr(t,n),r===Tt)for(let u=0;u<6;++u)t.texImage2D(ns+u,i,o,n.width,n.height,0,a,c,null);else r===Jt||r===$t?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,a,c,null):t.texImage2D(r,i,o,n.width,n.height,0,a,c,null)}function Si(t,e,n){n=n||Ei,e=e||Kt.textureOptions;const r=t.createTexture(),i=e.target||It;let o=e.width||1,s=e.height||1;const a=e.internalFormat||$;t.bindTexture(i,r),i===Tt&&(t.texParameteri(i,rs,ts),t.texParameteri(i,is,ts));let c=e.src;if(c)if(typeof c=="function"&&(c=c(t,e)),typeof c=="string")C3(t,r,e,n);else if(ir(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||ir(c[0]))){const u=z0(t,r,c,e);o=u.width,s=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||F0(c[0]))?i===Tt?D3(t,r,e,n):M3(t,r,e,n):(P0(t,r,c,e),o=c.width,s=c.height);else I3(t,r,e);return wi(e)&&su(t,r,e,o,s,a),B0(t,r,e),r}function T3(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const s=n.target||It;t.bindTexture(s,e);const a=n.level||0,c=n.internalFormat||n.format||$,u=ur(c),f=n.format||u.format;let l;const h=n.src;if(h&&(ir(h)||Array.isArray(h)&&typeof h[0]=="number")?l=n.type||k0(t,h,u.type):l=n.type||u.type,s===Tt)for(let d=0;d<6;++d)t.texImage2D(ns+d,a,c,r,i,0,f,l,null);else s===Jt||s===$t?t.texImage3D(s,a,c,r,i,o,0,f,l,null):t.texImage2D(s,a,c,r,i,0,f,l,null)}const N3=u0,fs=33984,L3=35048,hs=34962,k3=34963,fu=35345,R0=35718,O3=35721,B3=35971,P3=35382,F3=35396,z3=35398,R3=35392,U3=35395,ds=5126,U0=35664,j0=35665,G0=35666,hu=5124,H0=35667,Q0=35668,V0=35669,_0=35670,Y0=35671,W0=35672,X0=35673,q0=35674,Z0=35675,K0=35676,j3=35678,G3=35680,H3=35679,Q3=35682,V3=35685,_3=35686,Y3=35687,W3=35688,X3=35689,q3=35690,Z3=36289,K3=36292,J3=36293,du=5125,J0=36294,$0=36295,ep=36296,$3=36298,eE=36299,tE=36300,nE=36303,rE=36306,iE=36307,oE=36308,sE=36311,ps=3553,gs=34067,pu=32879,ms=35866,P={};function tp(t,e){return P[e].bindPoint}function aE(t,e){return function(n){t.uniform1f(e,n)}}function cE(t,e){return function(n){t.uniform1fv(e,n)}}function uE(t,e){return function(n){t.uniform2fv(e,n)}}function lE(t,e){return function(n){t.uniform3fv(e,n)}}function fE(t,e){return function(n){t.uniform4fv(e,n)}}function np(t,e){return function(n){t.uniform1i(e,n)}}function rp(t,e){return function(n){t.uniform1iv(e,n)}}function ip(t,e){return function(n){t.uniform2iv(e,n)}}function op(t,e){return function(n){t.uniform3iv(e,n)}}function sp(t,e){return function(n){t.uniform4iv(e,n)}}function hE(t,e){return function(n){t.uniform1ui(e,n)}}function dE(t,e){return function(n){t.uniform1uiv(e,n)}}function pE(t,e){return function(n){t.uniform2uiv(e,n)}}function gE(t,e){return function(n){t.uniform3uiv(e,n)}}function mE(t,e){return function(n){t.uniform4uiv(e,n)}}function yE(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function AE(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function bE(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function xE(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function vE(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function wE(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function EE(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function SE(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function CE(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function De(t,e,n,r){const i=tp(t,e);return rr(t)?function(o){let s,a;es(t,o)?(s=o,a=null):(s=o.texture,a=o.sampler),t.uniform1i(r,n),t.activeTexture(fs+n),t.bindTexture(i,s),t.bindSampler(n,a)}:function(o){t.uniform1i(r,n),t.activeTexture(fs+n),t.bindTexture(i,o)}}function Me(t,e,n,r,i){const o=tp(t,e),s=new Int32Array(i);for(let a=0;a<i;++a)s[a]=n+a;return rr(t)?function(a){t.uniform1iv(r,s),a.forEach(function(c,u){t.activeTexture(fs+s[u]);let f,l;es(t,c)?(f=c,l=null):(f=c.texture,l=c.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(a){t.uniform1iv(r,s),a.forEach(function(c,u){t.activeTexture(fs+s[u]),t.bindTexture(o,c)})}}P[ds]={Type:Float32Array,size:4,setter:aE,arraySetter:cE},P[U0]={Type:Float32Array,size:8,setter:uE,cols:2},P[j0]={Type:Float32Array,size:12,setter:lE,cols:3},P[G0]={Type:Float32Array,size:16,setter:fE,cols:4},P[hu]={Type:Int32Array,size:4,setter:np,arraySetter:rp},P[H0]={Type:Int32Array,size:8,setter:ip,cols:2},P[Q0]={Type:Int32Array,size:12,setter:op,cols:3},P[V0]={Type:Int32Array,size:16,setter:sp,cols:4},P[du]={Type:Uint32Array,size:4,setter:hE,arraySetter:dE},P[J0]={Type:Uint32Array,size:8,setter:pE,cols:2},P[$0]={Type:Uint32Array,size:12,setter:gE,cols:3},P[ep]={Type:Uint32Array,size:16,setter:mE,cols:4},P[_0]={Type:Uint32Array,size:4,setter:np,arraySetter:rp},P[Y0]={Type:Uint32Array,size:8,setter:ip,cols:2},P[W0]={Type:Uint32Array,size:12,setter:op,cols:3},P[X0]={Type:Uint32Array,size:16,setter:sp,cols:4},P[q0]={Type:Float32Array,size:32,setter:yE,rows:2,cols:2},P[Z0]={Type:Float32Array,size:48,setter:AE,rows:3,cols:3},P[K0]={Type:Float32Array,size:64,setter:bE,rows:4,cols:4},P[V3]={Type:Float32Array,size:32,setter:xE,rows:2,cols:3},P[_3]={Type:Float32Array,size:32,setter:wE,rows:2,cols:4},P[Y3]={Type:Float32Array,size:48,setter:vE,rows:3,cols:2},P[W3]={Type:Float32Array,size:48,setter:SE,rows:3,cols:4},P[X3]={Type:Float32Array,size:64,setter:EE,rows:4,cols:2},P[q3]={Type:Float32Array,size:64,setter:CE,rows:4,cols:3},P[j3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ps},P[G3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:gs},P[H3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:pu},P[Q3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ps},P[Z3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ms},P[K3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ms},P[J3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:gs},P[$3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ps},P[eE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:pu},P[tE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:gs},P[nE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ms},P[rE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ps},P[iE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:pu},P[oE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:gs},P[sE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ms};function ys(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(hs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||ds,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function tn(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(hs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||hu,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function As(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(hs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||du,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function gu(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(hs,o.buffer);const s=o.size||o.numComponents||r,a=s/i,c=o.type||ds,f=P[c].size*s,l=o.normalize||!1,h=o.offset||0,d=f/i;for(let p=0;p<i;++p)t.enableVertexAttribArray(e+p),t.vertexAttribPointer(e+p,a,c,l,f,h+d*p),o.divisor!==void 0&&t.vertexAttribDivisor(e+p,o.divisor)}}const ce={};ce[ds]={size:4,setter:ys},ce[U0]={size:8,setter:ys},ce[j0]={size:12,setter:ys},ce[G0]={size:16,setter:ys},ce[hu]={size:4,setter:tn},ce[H0]={size:8,setter:tn},ce[Q0]={size:12,setter:tn},ce[V0]={size:16,setter:tn},ce[du]={size:4,setter:As},ce[J0]={size:8,setter:As},ce[$0]={size:12,setter:As},ce[ep]={size:16,setter:As},ce[_0]={size:4,setter:tn},ce[Y0]={size:8,setter:tn},ce[W0]={size:12,setter:tn},ce[X0]={size:16,setter:tn},ce[q0]={size:4,setter:gu,count:2},ce[Z0]={size:9,setter:gu,count:3},ce[K0]={size:16,setter:gu,count:4};function ap(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const DE=/(\.|\[|]|\w+)/g,ME=t=>t>="0"&&t<="9";function cp(t,e,n,r){const i=t.split(DE).filter(a=>a!=="");let o=0,s="";for(;;){const a=i[o++];s+=a;const c=ME(a[0]),u=c?parseInt(a):a;if(c&&(s+=i[o++]),o===i.length){n[u]=e;break}else{const l=i[o++],h=l==="[",d=n[u]||(h?[]:{});n[u]=d,n=d,r[s]=r[s]||function(p){return function(g){lp(p,g)}}(d),s+=l}}}function IE(t,e){let n=0;function r(a,c,u){const f=c.name.endsWith("[0]"),l=c.type,h=P[l];if(!h)throw new Error(`unknown type: 0x${l.toString(16)}`);let d;if(h.bindPoint){const p=n;n+=c.size,f?d=h.arraySetter(t,l,p,u,c.size):d=h.setter(t,l,p,u,c.size)}else h.arraySetter&&f?d=h.arraySetter(t,u):d=h.setter(t,u);return d.location=u,d}const i={},o={},s=t.getProgramParameter(e,R0);for(let a=0;a<s;++a){const c=t.getActiveUniform(e,a);if(ap(c))continue;let u=c.name;u.endsWith("[0]")&&(u=u.substr(0,u.length-3));const f=t.getUniformLocation(e,c.name);if(f){const l=r(e,c,f);i[u]=l,cp(u,l,o,i)}}return i}function TE(t,e){const n={},r=t.getProgramParameter(e,B3);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 NE(t,e){const n=t.getProgramParameter(e,R0),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});const c=t.getActiveUniform(e,a);r[a].name=c.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const c=a[0],u=a[1];t.getActiveUniforms(e,i,t[c]).forEach(function(f,l){r[l][u]=f})});const o={},s=t.getProgramParameter(e,P3);for(let a=0;a<s;++a){const c=t.getActiveUniformBlockName(e,a),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,F3),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,z3),size:t.getActiveUniformBlockParameter(e,a,R3),uniformIndices:t.getActiveUniformBlockParameter(e,a,U3)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const up=/\[\d+\]\.$/,LE=(t,e)=>((t+(e-1))/e|0)*e;function kE(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(s){let a=0,c=0;for(let u=0;u<o;++u){for(let f=0;f<r;++f)t[a++]=s[c++];a+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function OE(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,s=i[r];if(!s)return N3("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(s.size),c=t.createBuffer(),u=s.index;t.bindBuffer(fu,c),t.uniformBlockBinding(e,s.index,u);let f=r+".";up.test(f)&&(f=f.replace(up,"."));const l={},h={},d={};return s.uniformIndices.forEach(function(p){const g=o[p];let m=g.name;m.startsWith(f)&&(m=m.substr(f.length));const y=m.endsWith("[0]");y&&(m=m.substr(0,m.length-3));const x=P[g.type],v=x.Type,S=y?LE(x.size,16)*g.size:x.size*g.size,b=new v(a,g.offset,S/v.BYTES_PER_ELEMENT);l[m]=b;const A=kE(b,y,x.rows,x.cols);h[m]=A,cp(m,A,d,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:c,uniforms:l,setters:h}}function BE(t,e,n){return OE(t,e.program,e.uniformBlockSpec,n)}function PE(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(fu,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function FE(t,e,n){PE(t,e,n)&&t.bufferData(fu,n.array,L3)}function lp(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):lp(t[n],e[n])}}function Se(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)Se(n,o[a])}else for(const s in o){const a=n[s];a&&a(o[s])}}}function zE(t,e){const n={},r=t.getProgramParameter(e,O3);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(ap(o))continue;const s=t.getAttribLocation(e,o.name),a=ce[o.type],c=a.setter(t,s,a);c.location=s,n[o.name]=c}return n}function RE(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function fr(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(RE(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(k3,n.indices))}function UE(t,e){const n=IE(t,e),r=zE(t,e),i={program:e,uniformSetters:n,attribSetters:r};return rr(t)&&(i.uniformBlockSpec=NE(t,e),i.transformFeedbackInfo=TE(t,e)),i}const jE=4,fp=5123;function Ci(t,e,n,r,i,o){n=n===void 0?jE:n;const s=e.indices,a=e.elementType,c=r===void 0?e.numElements:r;i=i===void 0?0:i,a||s?o!==void 0?t.drawElementsInstanced(n,c,a===void 0?fp:e.elementType,i,o):t.drawElements(n,c,a===void 0?fp:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,c,o):t.drawArrays(n,i,c)}const GE=36160,Di=36161,HE=3553,QE=5121,VE=6402,_E=6408,YE=33190,WE=36012,XE=35056,qE=36013,ZE=32854,KE=32855,JE=36194,hp=33189,dp=6401,pp=36168,mu=34041,$E=36064,bs=36096,gp=36128,yu=33306,Au=33071,bu=9729,mp=[{format:_E,type:QE,min:bu,wrap:Au},{format:mu}],ot={};ot[mu]=yu,ot[dp]=gp,ot[pp]=gp,ot[VE]=bs,ot[hp]=bs,ot[YE]=bs,ot[WE]=bs,ot[XE]=yu,ot[qE]=yu;function eS(t,e){return ot[t]||ot[e]}const nn={};nn[ZE]=!0,nn[KE]=!0,nn[JE]=!0,nn[mu]=!0,nn[hp]=!0,nn[dp]=!0,nn[pp]=!0;function tS(t){return nn[t]}function nS(t,e,n,r){const i=GE,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||mp;let s=0;const a={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(c){let u=c.attachment;const f=c.format;let l=c.attachmentPoint||eS(f,c.internalFormat);if(l||(l=$E+s++),!u)if(tS(f))u=t.createRenderbuffer(),t.bindRenderbuffer(Di,u),t.renderbufferStorage(Di,f,n,r);else{const h=Object.assign({},c);h.width=n,h.height=r,h.auto===void 0&&(h.auto=!1,h.min=h.min||h.minMag||bu,h.mag=h.mag||h.minMag||bu,h.wrapS=h.wrapS||h.wrap||Au,h.wrapT=h.wrapT||h.wrap||Au),u=Si(t,h)}if(l0(t,u))t.framebufferRenderbuffer(i,l,Di,u);else if(es(t,u))c.layer!==void 0?t.framebufferTextureLayer(i,l,u,c.level||0,c.layer):t.framebufferTexture2D(i,l,c.target||HE,u,c.level||0);else throw new Error("unknown attachment type");a.attachments.push(u)}),a}function rS(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||mp,n.forEach(function(o,s){const a=e.attachments[s],c=o.format;if(l0(t,a))t.bindRenderbuffer(Di,a),t.renderbufferStorage(Di,c,r,i);else if(es(t,a))T3(t,a,o,r,i);else throw new Error("unknown attachment type")})}function iS(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){fr(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const oS=/^(.*?)_/;function sS(t,e){eu(t,0);const n=t.getExtension(e);if(n){const r={},i=oS.exec(e)[1],o="_"+i;for(const s in n){const a=n[s],c=typeof a=="function",u=c?i:o;let f=s;s.endsWith(u)&&(f=s.substring(0,s.length-u.length)),t[f]!==void 0?!c&&t[f]!==a&&u0(f,t[f],a,s):c?t[f]=function(l){return function(){return l.apply(n,arguments)}}(a):(t[f]=a,r[f]=a)}r.constructor={name:n.constructor.name},eu(r,0)}return n}const yp=["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 Ap(t){for(let e=0;e<yp.length;++e)sS(t,yp[e])}function aS(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){Ap(r);break}return r}function cS(t,e){return aS(t,e)}var uS=`/**
14
+ see: http://github.com/greggman/twgl.js for details */const Iu=5120,Xi=5121,ku=5122,Nu=5123,Lu=5124,Bu=5125,Ou=5126,N4=32819,L4=32820,B4=33635,O4=5131,P4=33640,F4=35899,z4=35902,R4=36269,j4=34042,op={};{const t=op;t[Iu]=Int8Array,t[Xi]=Uint8Array,t[ku]=Int16Array,t[Nu]=Uint16Array,t[Lu]=Int32Array,t[Bu]=Uint32Array,t[Ou]=Float32Array,t[N4]=Uint16Array,t[L4]=Uint16Array,t[B4]=Uint16Array,t[O4]=Uint16Array,t[P4]=Uint32Array,t[F4]=Uint32Array,t[z4]=Uint32Array,t[R4]=Uint32Array,t[j4]=Uint32Array}function Pu(t){if(t instanceof Int8Array)return Iu;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return Xi;if(t instanceof Int16Array)return ku;if(t instanceof Uint16Array)return Nu;if(t instanceof Int32Array)return Lu;if(t instanceof Uint32Array)return Bu;if(t instanceof Float32Array)return Ou;throw new Error("unsupported typed array type")}function U4(t){if(t===Int8Array)return Iu;if(t===Uint8Array||t===Uint8ClampedArray)return Xi;if(t===Int16Array)return ku;if(t===Uint16Array)return Nu;if(t===Int32Array)return Lu;if(t===Uint32Array)return Bu;if(t===Float32Array)return Ou;throw new Error("unsupported typed array type")}function G4(t){const e=op[t];if(!e)throw new Error("unknown gl type");return e}const Ba=typeof SharedArrayBuffer!="undefined"?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 H4(...t){console.error(...t)}function ap(...t){console.warn(...t)}function Q4(t,e){return typeof WebGLBuffer!="undefined"&&e instanceof WebGLBuffer}function sp(t,e){return typeof WebGLRenderbuffer!="undefined"&&e instanceof WebGLRenderbuffer}function Oa(t,e){return typeof WebGLTexture!="undefined"&&e instanceof WebGLTexture}function V4(t,e){return typeof WebGLSampler!="undefined"&&e instanceof WebGLSampler}const cp=35044,vt=34962,Y4=34963,_4=34660,W4=5120,X4=5121,Z4=5122,q4=5123,K4=5124,J4=5125,$4=5126,up={attribPrefix:""};function lp(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||cp)}function fp(t,e,n,r){if(Q4(t,e))return e;n=n||vt;const i=t.createBuffer();return lp(t,n,i,e,r),i}function dp(t){return t==="indices"}function e3(t){return t instanceof Int8Array||t instanceof Uint8Array}function t3(t){return t===Int8Array||t===Uint8Array}function n3(t){return t.length?t:t.data}const r3=/coord|texture/i,i3=/color|colour/i;function hp(t,e){let n;if(r3.test(t)?n=2:i3.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 o3(t,e){return t.numComponents||t.size||hp(e,n3(t).length)}function Fu(t,e){if(Ba(t))return t;if(Ba(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(dp(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function a3(t,e){const n={};return Object.keys(e).forEach(function(r){if(!dp(r)){const i=e[r],o=i.attrib||i.name||i.attribName||up.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Ba(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let a,s,c,u;if(i.buffer&&i.buffer instanceof WebGLBuffer)a=i.buffer,u=i.numComponents||i.size,s=i.type,c=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const f=i.data||i,l=i.type||Float32Array,d=f*l.BYTES_PER_ELEMENT;s=U4(l),c=i.normalize!==void 0?i.normalize:t3(l),u=i.numComponents||i.size||hp(r,f),a=t.createBuffer(),t.bindBuffer(vt,a),t.bufferData(vt,d,i.drawType||cp)}else{const f=Fu(i,r);a=fp(t,f,void 0,i.drawType),s=Pu(f),c=i.normalize!==void 0?i.normalize:e3(f),u=o3(i,r)}n[o]={buffer:a,numComponents:u,type:s,normalize:c,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(vt,null),n}function s3(t,e,n,r){n=Fu(n),r!==void 0?(t.bindBuffer(vt,e.buffer),t.bufferSubData(vt,r,n)):lp(t,vt,e.buffer,n,e.drawType)}function c3(t,e){return e===W4||e===X4?1:e===Z4||e===q4?2:e===K4||e===J4||e===$4?4:0}const zu=["position","positions","a_position"];function u3(t,e){let n,r;for(r=0;r<zu.length&&(n=zu[r],!(n in e||(n=up.attribPrefix+n,n in e)));++r);r===zu.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(vt,i.buffer);const o=t.getBufferParameter(vt,_4);t.bindBuffer(vt,null);const a=c3(t,i.type),s=o/a,c=i.numComponents||i.size,u=s/c;if(u%1!==0)throw new Error(`numComponents ${c} not correct for length ${length}`);return u}function l3(t,e,n){const r=a3(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const a=Fu(o,"indices");i.indices=fp(t,a,Y4),i.numElements=a.length,i.elementType=Pu(a)}else i.numElements||(i.numElements=u3(t,i.attribs));return i}function Dr(t){return!!t.texStorage2D}const Ru=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 a=e[r[o]];e[r[o]]=a?`${a} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),an={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Mr=Ba,pp=function(){let t;return function(){return t=t||(typeof document!="undefined"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),mp=6406,bt=6407,ie=6408,gp=6409,yp=6410,Zi=6402,vp=34041,Pa=33071,f3=9728,d3=9729,Nt=3553,Lt=34067,sn=32879,cn=35866,Fa=34069,h3=34070,p3=34071,m3=34072,g3=34073,y3=34074,ju=10241,Uu=10240,za=10242,Ra=10243,bp=32882,v3=33082,b3=33083,A3=33084,x3=33085,Gu=3317,Ap=3314,xp=32878,wp=3316,Cp=3315,Sp=32877,w3=37443,C3=37441,S3=37440,E3=33321,D3=36756,M3=33325,T3=33326,I3=33330,k3=33329,N3=33338,L3=33337,B3=33340,O3=33339,P3=33323,F3=36757,z3=33327,R3=33328,j3=33336,U3=33335,G3=33332,H3=33331,Q3=33334,V3=33333,Y3=32849,_3=35905,W3=36194,X3=36758,Z3=35898,q3=35901,K3=34843,J3=34837,$3=36221,eC=36239,tC=36215,nC=36233,rC=36209,iC=36227,oC=32856,aC=35907,sC=36759,cC=32855,uC=32854,lC=32857,fC=34842,dC=34836,hC=36220,pC=36238,mC=36975,gC=36214,yC=36232,vC=36226,bC=36208,AC=33189,xC=33190,wC=36012,CC=36013,SC=35056,un=5120,oe=5121,ja=5122,Tr=5123,Ua=5124,_n=5125,Te=5126,Ep=32819,Dp=32820,Mp=33635,ct=5131,qi=36193,Hu=33640,EC=35899,DC=35902,MC=36269,TC=34042,Ga=33319,Ir=33320,Ha=6403,kr=36244,Nr=36248,Wn=36249;let Qu;function Qa(t){if(!Qu){const e={};e[mp]={textureFormat:mp,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[oe,ct,qi,Te]},e[gp]={textureFormat:gp,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[oe,ct,qi,Te]},e[yp]={textureFormat:yp,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[oe,ct,qi,Te]},e[bt]={textureFormat:bt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[oe,ct,qi,Te,Mp]},e[ie]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[oe,ct,qi,Te,Ep,Dp]},e[Zi]={textureFormat:Zi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[_n,Tr]},e[E3]={textureFormat:Ha,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[oe]},e[D3]={textureFormat:Ha,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[un]},e[M3]={textureFormat:Ha,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[Te,ct]},e[T3]={textureFormat:Ha,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[Te]},e[I3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[oe]},e[k3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[un]},e[G3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Tr]},e[H3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ja]},e[Q3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[_n]},e[V3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ua]},e[P3]={textureFormat:Ga,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[oe]},e[F3]={textureFormat:Ga,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[un]},e[z3]={textureFormat:Ga,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[Te,ct]},e[R3]={textureFormat:Ga,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[Te]},e[j3]={textureFormat:Ir,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[oe]},e[U3]={textureFormat:Ir,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[un]},e[N3]={textureFormat:Ir,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Tr]},e[L3]={textureFormat:Ir,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ja]},e[B3]={textureFormat:Ir,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[_n]},e[O3]={textureFormat:Ir,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Ua]},e[Y3]={textureFormat:bt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[oe]},e[_3]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[oe]},e[W3]={textureFormat:bt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[oe,Mp]},e[X3]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[un]},e[Z3]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Te,ct,EC]},e[q3]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Te,ct,DC]},e[K3]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[Te,ct]},e[J3]={textureFormat:bt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Te]},e[$3]={textureFormat:Nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[oe]},e[eC]={textureFormat:Nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[un]},e[tC]={textureFormat:Nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Tr]},e[nC]={textureFormat:Nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[ja]},e[rC]={textureFormat:Nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[_n]},e[iC]={textureFormat:Nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Ua]},e[oC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[oe]},e[aC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[oe]},e[sC]={textureFormat:ie,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[un]},e[cC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[oe,Dp,Hu]},e[uC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[oe,Ep]},e[lC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Hu]},e[fC]={textureFormat:ie,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[Te,ct]},e[dC]={textureFormat:ie,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[Te]},e[hC]={textureFormat:Wn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[oe]},e[pC]={textureFormat:Wn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[un]},e[mC]={textureFormat:Wn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Hu]},e[gC]={textureFormat:Wn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Tr]},e[yC]={textureFormat:Wn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ja]},e[vC]={textureFormat:Wn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Ua]},e[bC]={textureFormat:Wn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[_n]},e[AC]={textureFormat:Zi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Tr,_n]},e[xC]={textureFormat:Zi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[_n]},e[wC]={textureFormat:Zi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Te]},e[SC]={textureFormat:vp,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[TC]},e[CC]={textureFormat:vp,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[MC]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,o){const a=r.type[o];r.bytesPerElementMap[a]=i})}),Qu=e}return Qu[t]}function IC(t,e){const n=Qa(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function Lr(t){const e=Qa(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function Tp(t){return(t&t-1)===0}function kC(t,e,n,r){if(!Dr(t))return Tp(e)&&Tp(n);const i=Qa(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function NC(t){const e=Qa(t);if(!e)throw"unknown internal format";return e.textureFilterable}function Ip(t,e,n){return Mr(e)?Pu(e):n||oe}function Va(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===Lt?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 Br(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(w3,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(C3,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(S3,e.flipY)}function kp(t){t.pixelStorei(Gu,4),Dr(t)&&(t.pixelStorei(Ap,0),t.pixelStorei(xp,0),t.pixelStorei(wp,0),t.pixelStorei(Cp,0),t.pixelStorei(Sp,0))}function LC(t,e,n,r){r.minMag&&(n.call(t,e,ju,r.minMag),n.call(t,e,Uu,r.minMag)),r.min&&n.call(t,e,ju,r.min),r.mag&&n.call(t,e,Uu,r.mag),r.wrap&&(n.call(t,e,za,r.wrap),n.call(t,e,Ra,r.wrap),(e===sn||V4(t,e))&&n.call(t,e,bp,r.wrap)),r.wrapR&&n.call(t,e,bp,r.wrapR),r.wrapS&&n.call(t,e,za,r.wrapS),r.wrapT&&n.call(t,e,Ra,r.wrapT),r.minLod&&n.call(t,e,v3,r.minLod),r.maxLod&&n.call(t,e,b3,r.maxLod),r.baseLevel&&n.call(t,e,A3,r.baseLevel),r.maxLevel&&n.call(t,e,x3,r.maxLevel)}function Np(t,e,n){const r=n.target||Nt;t.bindTexture(r,e),LC(t,r,t.texParameteri,n)}function BC(t){return t=t||an.textureColor,Mr(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Vu(t,e,n,r,i,o){n=n||an.textureOptions,o=o||ie;const a=n.target||Nt;if(r=r||n.width,i=i||n.height,t.bindTexture(a,e),kC(t,r,i,o))t.generateMipmap(a);else{const s=NC(o)?d3:f3;t.texParameteri(a,ju,s),t.texParameteri(a,Uu,s),t.texParameteri(a,za,Pa),t.texParameteri(a,Ra,Pa)}}function Ki(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Yu(t,e){return e=e||{},e.cubeFaceOrder||[Fa,h3,p3,m3,g3,y3]}function _u(t,e){const r=Yu(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function Lp(t,e,n,r){r=r||an.textureOptions;const i=r.target||Nt,o=r.level||0;let a=n.width,s=n.height;const c=r.internalFormat||r.format||ie,u=Lr(c),f=r.format||u.format,l=r.type||u.type;if(Br(t,r),t.bindTexture(i,e),i===Lt){const d=n.width,h=n.height;let p,m;if(d/6===h)p=h,m=[0,0,1,0,2,0,3,0,4,0,5,0];else if(h/6===d)p=d,m=[0,0,0,1,0,2,0,3,0,4,0,5];else if(d/3===h/2)p=d/3,m=[0,0,1,0,2,0,0,1,1,1,2,1];else if(d/2===h/3)p=d/2,m=[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 g=pp();g?(g.canvas.width=p,g.canvas.height=p,a=p,s=p,_u(t,r).forEach(function(y){const x=m[y.ndx*2+0]*p,A=m[y.ndx*2+1]*p;g.drawImage(n,x,A,p,p,0,0,p,p),t.texImage2D(y.face,o,c,f,l,g.canvas)}),g.canvas.width=1,g.canvas.height=1):typeof createImageBitmap!="undefined"&&(a=p,s=p,_u(t,r).forEach(function(y){const x=m[y.ndx*2+0]*p,A=m[y.ndx*2+1]*p;t.texImage2D(y.face,o,c,p,p,0,f,l,null),createImageBitmap(n,x,A,p,p,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(C){Br(t,r),t.bindTexture(i,e),t.texImage2D(y.face,o,c,f,l,C),Ki(r)&&Vu(t,e,r,a,s,c)})}))}else if(i===sn||i===cn){const d=Math.min(n.width,n.height),h=Math.max(n.width,n.height),p=h/d;if(p%1!==0)throw"can not compute 3D dimensions of element";const m=n.width===h?1:0,g=n.height===h?1:0;t.pixelStorei(Gu,1),t.pixelStorei(Ap,n.width),t.pixelStorei(xp,0),t.pixelStorei(Sp,0),t.texImage3D(i,o,c,d,d,d,0,f,l,null);for(let y=0;y<p;++y){const x=y*d*m,A=y*d*g;t.pixelStorei(wp,x),t.pixelStorei(Cp,A),t.texSubImage3D(i,o,0,0,y,d,d,1,f,l,n)}kp(t)}else t.texImage2D(i,o,c,f,l,n);Ki(r)&&Vu(t,e,r,a,s,c),Np(t,e,r)}function Ji(){}function OC(t){if(typeof document!="undefined"){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 PC(t,e){return e===void 0&&!OC(t)?"anonymous":e}function FC(t,e,n){n=n||Ji;let r;if(e=e!==void 0?e:an.crossOrigin,e=PC(t,e),typeof Image!="undefined"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",a),r=null},o=function(){const c="couldn't load image: "+t;H4(c),n(c,r),i()},a=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",a),r.src=t,r}else if(typeof ImageBitmap!="undefined"){let i,o;const a=function(){n(i,o)},s={};e&&(s.mode="cors"),fetch(t,s).then(function(c){if(!c.ok)throw c;return c.blob()}).then(function(c){return createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(c){o=c,setTimeout(a)}).catch(function(c){i=c,setTimeout(a)}),r=null}return r}function Bp(t){return typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap||typeof ImageData!="undefined"&&t instanceof ImageData||typeof HTMLElement!="undefined"&&t instanceof HTMLElement}function Wu(t,e,n){return Bp(t)?(setTimeout(function(){n(null,t)}),t):FC(t,e,n)}function Xu(t,e,n){n=n||an.textureOptions;const r=n.target||Nt;if(t.bindTexture(r,e),n.color===!1)return;const i=BC(n.color);if(r===Lt)for(let o=0;o<6;++o)t.texImage2D(Fa+o,0,ie,1,1,0,ie,oe,i);else r===sn||r===cn?t.texImage3D(r,0,ie,1,1,1,0,ie,oe,i):t.texImage2D(r,0,ie,1,1,0,ie,oe,i)}function zC(t,e,n,r){return r=r||Ji,n=n||an.textureOptions,Xu(t,e,n),n=Object.assign({},n),Wu(n.src,n.crossOrigin,function(o,a){o?r(o,e,a):(Lp(t,e,a,n),r(null,e,a))})}function RC(t,e,n,r){r=r||Ji;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,a=n.internalFormat||n.format||ie,s=Lr(a),c=n.format||s.format,u=n.type||oe,f=n.target||Nt;if(f!==Lt)throw"target must be TEXTURE_CUBE_MAP";Xu(t,e,n),n=Object.assign({},n);let l=6;const d=[],h=Yu(t,n);let p;function m(g){return function(y,x){--l,y?d.push(y):x.width!==x.height?d.push("cubemap face img is not a square: "+x.src):(Br(t,n),t.bindTexture(f,e),l===5?Yu().forEach(function(A){t.texImage2D(A,o,a,c,u,x)}):t.texImage2D(g,o,a,c,u,x),Ki(n)&&t.generateMipmap(f)),l===0&&r(d.length?d:void 0,e,p)}}p=i.map(function(g,y){return Wu(g,n.crossOrigin,m(h[y]))})}function jC(t,e,n,r){r=r||Ji;const i=n.src,o=n.internalFormat||n.format||ie,a=Lr(o),s=n.format||a.format,c=n.type||oe,u=n.target||cn;if(u!==sn&&u!==cn)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Xu(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let d;const h=n.level||0;let p=n.width,m=n.height;const g=i.length;let y=!0;function x(A){return function(C,b){if(--f,C)l.push(C);else{if(Br(t,n),t.bindTexture(u,e),y){y=!1,p=n.width||b.width,m=n.height||b.height,t.texImage3D(u,h,o,p,m,g,0,s,c,null);for(let v=0;v<g;++v)t.texSubImage3D(u,h,0,0,v,p,m,1,s,c,b)}else{let v=b,w;(b.width!==p||b.height!==m)&&(w=pp(),v=w.canvas,w.canvas.width=p,w.canvas.height=m,w.drawImage(b,0,0,p,m)),t.texSubImage3D(u,h,0,0,A,p,m,1,s,c,v),w&&v===w.canvas&&(w.canvas.width=0,w.canvas.height=0)}Ki(n)&&t.generateMipmap(u)}f===0&&r(l.length?l:void 0,e,d)}}d=i.map(function(A,C){return Wu(A,n.crossOrigin,x(C))})}function Op(t,e,n,r){r=r||an.textureOptions;const i=r.target||Nt;t.bindTexture(i,e);let o=r.width,a=r.height,s=r.depth;const c=r.level||0,u=r.internalFormat||r.format||ie,f=Lr(u),l=r.format||f.format,d=r.type||Ip(t,n,f.type);if(Mr(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const g=G4(d);n=new g(n)}const h=IC(u,d),p=n.byteLength/h;if(p%1)throw"length wrong size for format: "+Ru(t,l);let m;if(i===sn||i===cn)if(!o&&!a&&!s){const g=Math.cbrt(p);if(g%1!==0)throw"can't guess cube size of array of numElements: "+p;o=g,a=g,s=g}else o&&(!a||!s)?(m=Va(t,i,a,s,p/o),a=m.width,s=m.height):a&&(!o||!s)?(m=Va(t,i,o,s,p/a),o=m.width,s=m.height):(m=Va(t,i,o,a,p/s),o=m.width,a=m.height);else m=Va(t,i,o,a,p),o=m.width,a=m.height;if(kp(t),t.pixelStorei(Gu,r.unpackAlignment||1),Br(t,r),i===Lt){const g=h/n.BYTES_PER_ELEMENT,y=p/6*g;_u(t,r).forEach(x=>{const A=y*x.ndx,C=n.subarray(A,A+y);t.texImage2D(x.face,c,u,o,a,0,l,d,C)})}else i===sn||i===cn?t.texImage3D(i,c,u,o,a,s,0,l,d,n):t.texImage2D(i,c,u,o,a,0,l,d,n);return{width:o,height:a,depth:s,type:d}}function UC(t,e,n){const r=n.target||Nt;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||ie,a=Lr(o),s=n.format||a.format,c=n.type||a.type;if(Br(t,n),r===Lt)for(let u=0;u<6;++u)t.texImage2D(Fa+u,i,o,n.width,n.height,0,s,c,null);else r===sn||r===cn?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,s,c,null):t.texImage2D(r,i,o,n.width,n.height,0,s,c,null)}function $i(t,e,n){n=n||Ji,e=e||an.textureOptions;const r=t.createTexture(),i=e.target||Nt;let o=e.width||1,a=e.height||1;const s=e.internalFormat||ie;t.bindTexture(i,r),i===Lt&&(t.texParameteri(i,za,Pa),t.texParameteri(i,Ra,Pa));let c=e.src;if(c)if(typeof c=="function"&&(c=c(t,e)),typeof c=="string")zC(t,r,e,n);else if(Mr(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||Mr(c[0]))){const u=Op(t,r,c,e);o=u.width,a=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||Bp(c[0]))?i===Lt?RC(t,r,e,n):jC(t,r,e,n):(Lp(t,r,c,e),o=c.width,a=c.height);else UC(t,r,e);return Ki(e)&&Vu(t,r,e,o,a,s),Np(t,r,e),r}function GC(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const a=n.target||Nt;t.bindTexture(a,e);const s=n.level||0,c=n.internalFormat||n.format||ie,u=Lr(c),f=n.format||u.format;let l;const d=n.src;if(d&&(Mr(d)||Array.isArray(d)&&typeof d[0]=="number")?l=n.type||Ip(t,d,u.type):l=n.type||u.type,a===Lt)for(let h=0;h<6;++h)t.texImage2D(Fa+h,s,c,r,i,0,f,l,null);else a===sn||a===cn?t.texImage3D(a,s,c,r,i,o,0,f,l,null):t.texImage2D(a,s,c,r,i,0,f,l,null)}const HC=ap,Ya=33984,QC=35048,_a=34962,VC=34963,Zu=35345,Pp=35718,YC=35721,_C=35971,WC=35382,XC=35396,ZC=35398,qC=35392,KC=35395,Wa=5126,Fp=35664,zp=35665,Rp=35666,qu=5124,jp=35667,Up=35668,Gp=35669,Hp=35670,Qp=35671,Vp=35672,Yp=35673,_p=35674,Wp=35675,Xp=35676,JC=35678,$C=35680,eS=35679,tS=35682,nS=35685,rS=35686,iS=35687,oS=35688,aS=35689,sS=35690,cS=36289,uS=36292,lS=36293,Ku=5125,Zp=36294,qp=36295,Kp=36296,fS=36298,dS=36299,hS=36300,pS=36303,mS=36306,gS=36307,yS=36308,vS=36311,Xa=3553,Za=34067,Ju=32879,qa=35866,j={};function Jp(t,e){return j[e].bindPoint}function bS(t,e){return function(n){t.uniform1f(e,n)}}function AS(t,e){return function(n){t.uniform1fv(e,n)}}function xS(t,e){return function(n){t.uniform2fv(e,n)}}function wS(t,e){return function(n){t.uniform3fv(e,n)}}function CS(t,e){return function(n){t.uniform4fv(e,n)}}function $p(t,e){return function(n){t.uniform1i(e,n)}}function em(t,e){return function(n){t.uniform1iv(e,n)}}function tm(t,e){return function(n){t.uniform2iv(e,n)}}function nm(t,e){return function(n){t.uniform3iv(e,n)}}function rm(t,e){return function(n){t.uniform4iv(e,n)}}function SS(t,e){return function(n){t.uniform1ui(e,n)}}function ES(t,e){return function(n){t.uniform1uiv(e,n)}}function DS(t,e){return function(n){t.uniform2uiv(e,n)}}function MS(t,e){return function(n){t.uniform3uiv(e,n)}}function TS(t,e){return function(n){t.uniform4uiv(e,n)}}function IS(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function kS(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function NS(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function LS(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function BS(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function OS(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function PS(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function FS(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function zS(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function Le(t,e,n,r){const i=Jp(t,e);return Dr(t)?function(o){let a,s;Oa(t,o)?(a=o,s=null):(a=o.texture,s=o.sampler),t.uniform1i(r,n),t.activeTexture(Ya+n),t.bindTexture(i,a),t.bindSampler(n,s)}:function(o){t.uniform1i(r,n),t.activeTexture(Ya+n),t.bindTexture(i,o)}}function Be(t,e,n,r,i){const o=Jp(t,e),a=new Int32Array(i);for(let s=0;s<i;++s)a[s]=n+s;return Dr(t)?function(s){t.uniform1iv(r,a),s.forEach(function(c,u){t.activeTexture(Ya+a[u]);let f,l;Oa(t,c)?(f=c,l=null):(f=c.texture,l=c.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(s){t.uniform1iv(r,a),s.forEach(function(c,u){t.activeTexture(Ya+a[u]),t.bindTexture(o,c)})}}j[Wa]={Type:Float32Array,size:4,setter:bS,arraySetter:AS},j[Fp]={Type:Float32Array,size:8,setter:xS,cols:2},j[zp]={Type:Float32Array,size:12,setter:wS,cols:3},j[Rp]={Type:Float32Array,size:16,setter:CS,cols:4},j[qu]={Type:Int32Array,size:4,setter:$p,arraySetter:em},j[jp]={Type:Int32Array,size:8,setter:tm,cols:2},j[Up]={Type:Int32Array,size:12,setter:nm,cols:3},j[Gp]={Type:Int32Array,size:16,setter:rm,cols:4},j[Ku]={Type:Uint32Array,size:4,setter:SS,arraySetter:ES},j[Zp]={Type:Uint32Array,size:8,setter:DS,cols:2},j[qp]={Type:Uint32Array,size:12,setter:MS,cols:3},j[Kp]={Type:Uint32Array,size:16,setter:TS,cols:4},j[Hp]={Type:Uint32Array,size:4,setter:$p,arraySetter:em},j[Qp]={Type:Uint32Array,size:8,setter:tm,cols:2},j[Vp]={Type:Uint32Array,size:12,setter:nm,cols:3},j[Yp]={Type:Uint32Array,size:16,setter:rm,cols:4},j[_p]={Type:Float32Array,size:32,setter:IS,rows:2,cols:2},j[Wp]={Type:Float32Array,size:48,setter:kS,rows:3,cols:3},j[Xp]={Type:Float32Array,size:64,setter:NS,rows:4,cols:4},j[nS]={Type:Float32Array,size:32,setter:LS,rows:2,cols:3},j[rS]={Type:Float32Array,size:32,setter:OS,rows:2,cols:4},j[iS]={Type:Float32Array,size:48,setter:BS,rows:3,cols:2},j[oS]={Type:Float32Array,size:48,setter:FS,rows:3,cols:4},j[aS]={Type:Float32Array,size:64,setter:PS,rows:4,cols:2},j[sS]={Type:Float32Array,size:64,setter:zS,rows:4,cols:3},j[JC]={Type:null,size:0,setter:Le,arraySetter:Be,bindPoint:Xa},j[$C]={Type:null,size:0,setter:Le,arraySetter:Be,bindPoint:Za},j[eS]={Type:null,size:0,setter:Le,arraySetter:Be,bindPoint:Ju},j[tS]={Type:null,size:0,setter:Le,arraySetter:Be,bindPoint:Xa},j[cS]={Type:null,size:0,setter:Le,arraySetter:Be,bindPoint:qa},j[uS]={Type:null,size:0,setter:Le,arraySetter:Be,bindPoint:qa},j[lS]={Type:null,size:0,setter:Le,arraySetter:Be,bindPoint:Za},j[fS]={Type:null,size:0,setter:Le,arraySetter:Be,bindPoint:Xa},j[dS]={Type:null,size:0,setter:Le,arraySetter:Be,bindPoint:Ju},j[hS]={Type:null,size:0,setter:Le,arraySetter:Be,bindPoint:Za},j[pS]={Type:null,size:0,setter:Le,arraySetter:Be,bindPoint:qa},j[mS]={Type:null,size:0,setter:Le,arraySetter:Be,bindPoint:Xa},j[gS]={Type:null,size:0,setter:Le,arraySetter:Be,bindPoint:Ju},j[yS]={Type:null,size:0,setter:Le,arraySetter:Be,bindPoint:Za},j[vS]={Type:null,size:0,setter:Le,arraySetter:Be,bindPoint:qa};function Ka(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(_a,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||Wa,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function ln(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(_a,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||qu,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Ja(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(_a,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Ku,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function $u(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(_a,o.buffer);const a=o.size||o.numComponents||r,s=a/i,c=o.type||Wa,f=j[c].size*a,l=o.normalize||!1,d=o.offset||0,h=f/i;for(let p=0;p<i;++p)t.enableVertexAttribArray(e+p),t.vertexAttribPointer(e+p,s,c,l,f,d+h*p),o.divisor!==void 0&&t.vertexAttribDivisor(e+p,o.divisor)}}const de={};de[Wa]={size:4,setter:Ka},de[Fp]={size:8,setter:Ka},de[zp]={size:12,setter:Ka},de[Rp]={size:16,setter:Ka},de[qu]={size:4,setter:ln},de[jp]={size:8,setter:ln},de[Up]={size:12,setter:ln},de[Gp]={size:16,setter:ln},de[Ku]={size:4,setter:Ja},de[Zp]={size:8,setter:Ja},de[qp]={size:12,setter:Ja},de[Kp]={size:16,setter:Ja},de[Hp]={size:4,setter:ln},de[Qp]={size:8,setter:ln},de[Vp]={size:12,setter:ln},de[Yp]={size:16,setter:ln},de[_p]={size:4,setter:$u,count:2},de[Wp]={size:9,setter:$u,count:3},de[Xp]={size:16,setter:$u,count:4};function im(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const RS=/(\.|\[|]|\w+)/g,jS=t=>t>="0"&&t<="9";function om(t,e,n,r){const i=t.split(RS).filter(s=>s!=="");let o=0,a="";for(;;){const s=i[o++];a+=s;const c=jS(s[0]),u=c?parseInt(s):s;if(c&&(a+=i[o++]),o===i.length){n[u]=e;break}else{const l=i[o++],d=l==="[",h=n[u]||(d?[]:{});n[u]=h,n=h,r[a]=r[a]||function(p){return function(m){sm(p,m)}}(h),a+=l}}}function US(t,e){let n=0;function r(s,c,u){const f=c.name.endsWith("[0]"),l=c.type,d=j[l];if(!d)throw new Error(`unknown type: 0x${l.toString(16)}`);let h;if(d.bindPoint){const p=n;n+=c.size,f?h=d.arraySetter(t,l,p,u,c.size):h=d.setter(t,l,p,u,c.size)}else d.arraySetter&&f?h=d.arraySetter(t,u):h=d.setter(t,u);return h.location=u,h}const i={},o={},a=t.getProgramParameter(e,Pp);for(let s=0;s<a;++s){const c=t.getActiveUniform(e,s);if(im(c))continue;let u=c.name;u.endsWith("[0]")&&(u=u.substr(0,u.length-3));const f=t.getUniformLocation(e,c.name);if(f){const l=r(e,c,f);i[u]=l,om(u,l,o,i)}}return i}function GS(t,e){const n={},r=t.getProgramParameter(e,_C);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 HS(t,e){const n=t.getProgramParameter(e,Pp),r=[],i=[];for(let s=0;s<n;++s){i.push(s),r.push({});const c=t.getActiveUniform(e,s);r[s].name=c.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(s){const c=s[0],u=s[1];t.getActiveUniforms(e,i,t[c]).forEach(function(f,l){r[l][u]=f})});const o={},a=t.getProgramParameter(e,WC);for(let s=0;s<a;++s){const c=t.getActiveUniformBlockName(e,s),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,s,XC),usedByFragmentShader:t.getActiveUniformBlockParameter(e,s,ZC),size:t.getActiveUniformBlockParameter(e,s,qC),uniformIndices:t.getActiveUniformBlockParameter(e,s,KC)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const am=/\[\d+\]\.$/,QS=(t,e)=>((t+(e-1))/e|0)*e;function VS(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(a){let s=0,c=0;for(let u=0;u<o;++u){for(let f=0;f<r;++f)t[s++]=a[c++];s+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function YS(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,a=i[r];if(!a)return HC("no uniform block object named:",r),{name:r,uniforms:{}};const s=new ArrayBuffer(a.size),c=t.createBuffer(),u=a.index;t.bindBuffer(Zu,c),t.uniformBlockBinding(e,a.index,u);let f=r+".";am.test(f)&&(f=f.replace(am,"."));const l={},d={},h={};return a.uniformIndices.forEach(function(p){const m=o[p];let g=m.name;g.startsWith(f)&&(g=g.substr(f.length));const y=g.endsWith("[0]");y&&(g=g.substr(0,g.length-3));const x=j[m.type],A=x.Type,C=y?QS(x.size,16)*m.size:x.size*m.size,b=new A(s,m.offset,C/A.BYTES_PER_ELEMENT);l[g]=b;const v=VS(b,y,x.rows,x.cols);d[g]=v,om(g,v,h,d)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:l,setters:d}}function _S(t,e,n){return YS(t,e.program,e.uniformBlockSpec,n)}function WS(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(Zu,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function XS(t,e,n){WS(t,e,n)&&t.bufferData(Zu,n.array,QC)}function sm(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):sm(t[n],e[n])}}function Ie(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 a=o.length;for(let s=0;s<a;++s)Ie(n,o[s])}else for(const a in o){const s=n[a];s&&s(o[a])}}}function ZS(t,e){const n={},r=t.getProgramParameter(e,YC);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(im(o))continue;const a=t.getAttribLocation(e,o.name),s=de[o.type],c=s.setter(t,a,s);c.location=a,n[o.name]=c}return n}function qS(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Or(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(qS(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(VC,n.indices))}function KS(t,e){const n=US(t,e),r=ZS(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Dr(t)&&(i.uniformBlockSpec=HS(t,e),i.transformFeedbackInfo=GS(t,e)),i}const JS=4,cm=5123;function eo(t,e,n,r,i,o){n=n===void 0?JS:n;const a=e.indices,s=e.elementType,c=r===void 0?e.numElements:r;i=i===void 0?0:i,s||a?o!==void 0?t.drawElementsInstanced(n,c,s===void 0?cm:e.elementType,i,o):t.drawElements(n,c,s===void 0?cm:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,c,o):t.drawArrays(n,i,c)}const $S=36160,Xn=36161,eE=3553,tE=5121,nE=6402,rE=6408,iE=33190,oE=36012,aE=35056,sE=36013,cE=32854,uE=32855,lE=36194,um=33189,lm=6401,fm=36168,el=34041,fE=36064,$a=36096,dm=36128,tl=33306,nl=33071,rl=9729,hm=[{format:rE,type:tE,min:rl,wrap:nl},{format:el}],ut={};ut[el]=tl,ut[lm]=dm,ut[fm]=dm,ut[nE]=$a,ut[um]=$a,ut[iE]=$a,ut[oE]=$a,ut[aE]=tl,ut[sE]=tl;function dE(t,e){return ut[t]||ut[e]}const fn={};fn[cE]=!0,fn[uE]=!0,fn[lE]=!0,fn[el]=!0,fn[um]=!0,fn[lm]=!0,fn[fm]=!0;function hE(t){return fn[t]}function pE(t,e,n,r){const i=$S,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||hm;let a=0;const s={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(c){let u=c.attachment;const f=c.samples,l=c.format;let d=c.attachmentPoint||dE(l,c.internalFormat);if(d||(d=fE+a++),!u)if(f!==void 0||hE(l))u=t.createRenderbuffer(),t.bindRenderbuffer(Xn,u),f>1?t.renderbufferStorageMultisample(Xn,f,l,n,r):t.renderbufferStorage(Xn,l,n,r);else{const h=Object.assign({},c);h.width=n,h.height=r,h.auto===void 0&&(h.auto=!1,h.min=h.min||h.minMag||rl,h.mag=h.mag||h.minMag||rl,h.wrapS=h.wrapS||h.wrap||nl,h.wrapT=h.wrapT||h.wrap||nl),u=$i(t,h)}if(sp(t,u))t.framebufferRenderbuffer(i,d,Xn,u);else if(Oa(t,u))c.layer!==void 0?t.framebufferTextureLayer(i,d,u,c.level||0,c.layer):t.framebufferTexture2D(i,d,c.target||eE,u,c.level||0);else throw new Error("unknown attachment type");s.attachments.push(u)}),s}function mE(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||hm,n.forEach(function(o,a){const s=e.attachments[a],c=o.format,u=o.samples;if(u!==void 0||sp(t,s))t.bindRenderbuffer(Xn,s),u>1?t.renderbufferStorageMultisample(Xn,u,c,r,i):t.renderbufferStorage(Xn,c,r,i);else if(Oa(t,s))GC(t,s,o,r,i);else throw new Error("unknown attachment type")})}function gE(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Or(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const yE=/^(.*?)_/;function vE(t,e){Ru(t,0);const n=t.getExtension(e);if(n){const r={},i=yE.exec(e)[1],o="_"+i;for(const a in n){const s=n[a],c=typeof s=="function",u=c?i:o;let f=a;a.endsWith(u)&&(f=a.substring(0,a.length-u.length)),t[f]!==void 0?!c&&t[f]!==s&&ap(f,t[f],s,a):c?t[f]=function(l){return function(){return l.apply(n,arguments)}}(s):(t[f]=s,r[f]=s)}r.constructor={name:n.constructor.name},Ru(r,0)}return n}const pm=["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 mm(t){for(let e=0;e<pm.length;++e)vE(t,pm[e])}function bE(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){mm(r);break}return r}function AE(t,e){return bE(t,e)}var xE=`/**
15
15
  * The vertex position wrt the rectangle specified by (x, x2, y, y2).
16
16
  * [0, 0] = [x, y], [1, 1] = [x2, y2].
17
17
  * The x or y component may contain fractional values if the rectangle
@@ -125,7 +125,7 @@ void main(void) {
125
125
 
126
126
  setupPicking();
127
127
  }
128
- `,lS=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
128
+ `,wE=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
129
129
  in vec2 vPosInPixels;
130
130
  #endif
131
131
 
@@ -176,38 +176,20 @@ void main(void) {
176
176
  fragColor = vPickingColor;
177
177
  }
178
178
  }
179
- `;function xu(t,e=[],n=0){const r=Math.fround(t);return e[n]=r,e[n+1]=isFinite(r)?t-r:0,e}function fS(t){switch(mS(t).gpuVendor.toLowerCase()){case"nvidia":return` #define NVIDIA_GPU
180
- // Nvidia optimizes away the calculation necessary for emulated fp64
181
- #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
182
- `;case"intel":return` #define INTEL_GPU
183
- // Intel optimizes away the calculation necessary for emulated fp64
184
- #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
185
- // Intel's built-in 'tan' function doesn't have acceptable precision
186
- #define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
187
- // Intel GPU doesn't have full 32 bits precision in same cases, causes overflow
188
- #define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
189
- `;case"amd":return` #define AMD_GPU
190
- `;default:return` #define DEFAULT_GPU
191
- // Prevent driver from optimizing away the calculation necessary for emulated fp64
192
- #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
193
- // Intel's built-in 'tan' function doesn't have acceptable precision
194
- #define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
195
- // Intel GPU doesn't have full 32 bits precision in same cases, causes overflow
196
- #define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
197
- `}}const hS=7936,dS=7937,pS=7938,gS=35724;function mS(t){const e=t.getExtension("WEBGL_debug_renderer_info"),n=t.getParameter(e&&e.UNMASKED_VENDOR_WEBGL||hS),r=t.getParameter(e&&e.UNMASKED_RENDERER_WEBGL||dS);return{gpuVendor:yS(n,r),vendor:n,renderer:r,version:t.getParameter(pS),shadingLanguageVersion:t.getParameter(gS)}}function yS(t,e){return t.match(/NVIDIA/i)||e.match(/NVIDIA/i)?"NVIDIA":t.match(/INTEL/i)||e.match(/INTEL/i)?"INTEL":t.match(/AMD/i)||e.match(/AMD/i)||t.match(/ATI/i)||e.match(/ATI/i)?"AMD":"UNKNOWN GPU"}function vu(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function bp(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Mi(){}var Ii=.7,xs=1/Ii,hr="\\s*([+-]?\\d+)\\s*",Ti="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",mt="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",AS=/^#([0-9a-f]{3,8})$/,bS=new RegExp("^rgb\\("+[hr,hr,hr]+"\\)$"),xS=new RegExp("^rgb\\("+[mt,mt,mt]+"\\)$"),vS=new RegExp("^rgba\\("+[hr,hr,hr,Ti]+"\\)$"),wS=new RegExp("^rgba\\("+[mt,mt,mt,Ti]+"\\)$"),ES=new RegExp("^hsl\\("+[Ti,mt,mt]+"\\)$"),SS=new RegExp("^hsla\\("+[Ti,mt,mt,Ti]+"\\)$"),xp={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};vu(Mi,Ni,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:vp,formatHex:vp,formatHsl:CS,formatRgb:wp,toString:wp});function vp(){return this.rgb().formatHex()}function CS(){return Mp(this).formatHsl()}function wp(){return this.rgb().formatRgb()}function Ni(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=AS.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Ep(e):n===3?new Re(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?vs(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?vs(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=bS.exec(t))?new Re(e[1],e[2],e[3],1):(e=xS.exec(t))?new Re(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=vS.exec(t))?vs(e[1],e[2],e[3],e[4]):(e=wS.exec(t))?vs(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=ES.exec(t))?Dp(e[1],e[2]/100,e[3]/100,1):(e=SS.exec(t))?Dp(e[1],e[2]/100,e[3]/100,e[4]):xp.hasOwnProperty(t)?Ep(xp[t]):t==="transparent"?new Re(NaN,NaN,NaN,0):null}function Ep(t){return new Re(t>>16&255,t>>8&255,t&255,1)}function vs(t,e,n,r){return r<=0&&(t=e=n=NaN),new Re(t,e,n,r)}function DS(t){return t instanceof Mi||(t=Ni(t)),t?(t=t.rgb(),new Re(t.r,t.g,t.b,t.opacity)):new Re}function MS(t,e,n,r){return arguments.length===1?DS(t):new Re(t,e,n,r==null?1:r)}function Re(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}vu(Re,MS,bp(Mi,{brighter:function(t){return t=t==null?xs:Math.pow(xs,t),new Re(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=t==null?Ii:Math.pow(Ii,t),new Re(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){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:Sp,formatHex:Sp,formatRgb:Cp,toString:Cp}));function Sp(){return"#"+wu(this.r)+wu(this.g)+wu(this.b)}function Cp(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(t===1?")":", "+t+")")}function wu(t){return t=Math.max(0,Math.min(255,Math.round(t)||0)),(t<16?"0":"")+t.toString(16)}function Dp(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new yt(t,e,n,r)}function Mp(t){if(t instanceof yt)return new yt(t.h,t.s,t.l,t.opacity);if(t instanceof Mi||(t=Ni(t)),!t)return new yt;if(t instanceof yt)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,c=(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/=c<.5?o+i:2-o-i,s*=60):a=c>0&&c<1?0:s,new yt(s,a,c,t.opacity)}function IS(t,e,n,r){return arguments.length===1?Mp(t):new yt(t,e,n,r==null?1:r)}function yt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}vu(yt,IS,bp(Mi,{brighter:function(t){return t=t==null?xs:Math.pow(xs,t),new yt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?Ii:Math.pow(Ii,t),new yt(this.h,this.s,this.l*t,this.opacity)},rgb:function(){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 Re(Eu(t>=240?t-240:t+120,i,r),Eu(t,i,r),Eu(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"hsl(":"hsla(")+(this.h||0)+", "+(this.s||0)*100+"%, "+(this.l||0)*100+"%"+(t===1?")":", "+t+")")}}));function Eu(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 Su="attr_",Ip="uDomain_",TS="range_",Tp="scale_",Np="getScaled_",Cu="uRangeTexture_",Lp=3402823466e29;function NS(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 LS(t,e){let n;if(Jo(t))n=Ln(a0(t)(e));else if(oe(e))if(In(t))n=OS(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(ao(e))n=Ln(e?1:0);else if(e===null)if(In(t))n=Ln([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=Ln(e);return`
179
+ `;const il="attr_",gm="uDomain_",CE="range_",ym="scale_",vm="getScaled_",ol="uRangeTexture_",bm=3402823466e29;function SE(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 EE(t,e){let n;if(La(t))n=Zn(ip(t)(e));else if(re(e))if(Yn(t))n=ME(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(Wo(e))n=Zn(e?1:0);else if(e===null)if(Yn(t))n=Zn([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=Zn(e);return`
198
180
  #define ${t}_DEFINED
199
- ${n.type} ${Np}${t}() {
181
+ ${n.type} ${vm}${t}() {
200
182
  // Constant value
201
183
  return ${n};
202
- }`}function kS(t,e,n){var w;if(Ze(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=nr(t),i=Su+t,o=Ip+r,s=TS+r,a=!!e.fp64,c=a?"vec2":"float",u=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`),a&&l.push(`#define ${t}_FP64`);const{transform:h}=NS(e.type),d=(E,...B)=>BS.apply(null,[E+(a?"Fp64":""),"value",...B]);let p;switch(h){case"linear":p=d("scaleLinear","domain",s);break;case"log":p=d("scaleLog","domain",s,e.base());break;case"symlog":p=d("scaleSymlog","domain",s,e.constant());break;case"pow":case"sqrt":p=d("scalePow","domain",s,e.exponent());break;case"index":case"locus":case"point":case"band":p=d("scaleBand","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),(w=n.band)!=null?w:.5);break;case"ordinal":case"null":case"identity":p=d("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const g=Qo(e.type)||nt(e.type)&&In(t)?[0,1]:e.range?e.range():void 0;if(g&&t==r&&g.length&&g.every(ae)){const E=kp(g);l.push(`const ${E.type} ${s} = ${E};`)}const m=In(t)?"vec3":"float";let y;if(In(t)){const E=Cu+r;if(t==r&&l.push(`uniform sampler2D ${E};`),nt(e.type))y=`getInterpolatedColor(${E}, transformed)`;else if(Xt(e.type)||Kn(e.type))y=`getDiscreteColor(${E}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||Kn(e.type)){const E=Cu+r;t==r&&l.push(`uniform sampler2D ${E};`),y=`getDiscreteColor(${E}, int(transformed)).r`}gi(n)?l.push(`uniform highp ${c} ${i};`):l.push(`in highp ${c} ${i};`);const x=[],v=nt(e.type)&&u>2,S=Kn(e.type)||v;if(x.push("int slot = 0;"),S){const E=o;x.push(v?`while (slot < ${E}.length() - 2 && value >= ${E}[slot + 1]) { slot++; }`:`while (slot < ${E}.length() && value >= ${E}[slot]) { slot++; }`)}const b=nt(e.type)||Kn(e.type)||["band","point"].includes(e.type);if(p){const E=o;if(b){const B=a?"vec4":"vec2";x.push(`${B} domain = ${B}(${E}[slot], ${E}[slot + 1]);`)}x.push(`float transformed = ${p};`),v&&x.push(`transformed = (float(slot) + transformed) / (float(${E}.length()) - 1.0);`)}else x.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&x.push(`transformed = clampToRange(transformed, ${kp(g)});`),x.push(`return ${y!=null?y:"transformed"};`),l.push(`
203
- ${m} ${Tp}${t}(${c} value) {
204
- ${x.map(E=>` ${E}
184
+ }`}function DE(t,e,n){var w,E;if(st(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=Er(t),i=il+t,o=gm+r,a=CE+r,s=es(e.type),c=s?"vec2":"float",u=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:d}=SE(e.type),h=(k,...L)=>TE.apply(null,[k,"value",...L]);let p;switch(d){case"linear":p=h("scaleLinear","domain",a);break;case"log":p=h("scaleLog","domain",a,e.base());break;case"symlog":p=h("scaleSymlog","domain",a,e.constant());break;case"pow":case"sqrt":p=h("scalePow","domain",a,e.exponent());break;case"index":case"locus":p=h("scaleBandHp","domain",a,e.paddingInner(),e.paddingOuter(),e.align(),(w=n.band)!=null?w:.5);break;case"point":case"band":p=h("scaleBand","domain",a,e.paddingInner(),e.paddingOuter(),e.align(),(E=n.band)!=null?E:.5);break;case"ordinal":case"null":case"identity":p=h("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const m=Ca(e.type)||ot(e.type)&&Yn(t)?[0,1]:e.range?e.range():void 0;if(m&&t==r&&m.length&&m.every(le)){const k=Am(m);l.push(`const ${k.type} ${a} = ${k};`)}const g=Yn(t)?"vec3":"float";let y;if(Yn(t)){const k=ol+r;if(t==r&&l.push(`uniform sampler2D ${k};`),ot(e.type))y=`getInterpolatedColor(${k}, transformed)`;else if(nn(e.type)||Ar(e.type))y=`getDiscreteColor(${k}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||Ar(e.type)){const k=ol+r;t==r&&l.push(`uniform sampler2D ${k};`),y=`getDiscreteColor(${k}, int(transformed)).r`}Vi(n)?l.push(`uniform highp ${c} ${i};`):l.push(`in highp ${c} ${i};`);const x=[],A=ot(e.type)&&u>2,C=Ar(e.type)||A;if(x.push("int slot = 0;"),C){const k=o;x.push(A?`while (slot < ${k}.length() - 2 && value >= ${k}[slot + 1]) { slot++; }`:`while (slot < ${k}.length() && value >= ${k}[slot]) { slot++; }`)}const b=ot(e.type)||Ar(e.type)||["band","point"].includes(e.type);if(p){const k=o;b&&(s?x.push(`vec3 domain = ${k};`):x.push(`vec2 domain = vec2(${k}[slot], ${k}[slot + 1]);`)),x.push(`float transformed = ${p};`),A&&x.push(`transformed = (float(slot) + transformed) / (float(${k}.length()) - 1.0);`)}else x.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&x.push(`transformed = clampToRange(transformed, ${Am(m)});`),x.push(`return ${y!=null?y:"transformed"};`),l.push(`
185
+ ${g} ${ym}${t}(${c} value) {
186
+ ${x.map(k=>` ${k}
205
187
  `).join("")}
206
188
  }`),l.push(`
207
- ${m} ${Np}${t}() {
208
- return ${Tp}${t}(${i});
209
- }`);const A=l.join(`
210
- `);if(b&&t==r){const E=nt(e.type)||Kn(e.type)?u:2;f=`${a?"vec2":"float"} ${o}[${E}];`}return{glsl:A,domainUniform:f}}function Du(t){if(!ae(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+Lp;if(t==-1/0)return""+-Lp;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function Ln(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(Du).join(", ")})`):(n="float",r=Du(t[0])),Object.assign(r,{type:n,numComponents:e})}function OS(t){const e=Ni(t).rgb();return Ln([e.r,e.g,e.b].map(n=>n/255))}function kp(t){return Ln([t[0],pe(t)])}function BS(t,...e){const n=[];for(const r of e)ae(r)?n.push(Du(r)):_e(r)?n.push(Ln(r)):n.push(r);return`${t}(${n.join(", ")})`}class PS{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(Su+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(!ae(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 c=0;const u=f=>{c=+f};i=()=>{a[s++]=c},o=u}else{let c=r!=null?r:[0];const u=r?f=>{}:f=>{c=f};switch(n){case 1:break;case 2:i=()=>{a[s++]=c[0],a[s++]=c[1]},o=u;break;case 3:i=()=>{a[s++]=c[0],a[s++]=c[1],a[s++]=c[2]},o=u;break;case 4:i=()=>{a[s++]=c[0],a[s++]=c[1],a[s++]=c[2],a[s++]=c[3]},o=u;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}];
189
+ ${g} ${vm}${t}() {
190
+ return ${ym}${t}(${i});
191
+ }`);const v=l.join(`
192
+ `);if(b&&t==r){const k=ot(e.type)||Ar(e.type)?u:2;f=s?`highp vec3 ${o};`:`mediump float ${o}[${k}];`}return{glsl:v,domainUniform:f}}function al(t){if(!le(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+bm;if(t==-1/0)return""+-bm;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function Zn(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(al).join(", ")})`):(n="float",r=al(t[0])),Object.assign(r,{type:n,numComponents:e})}function ME(t){const e=On(t).rgb();return Zn([e.r,e.g,e.b].map(n=>n/255))}function Am(t){return Zn([t[0],ze(t)])}function TE(t,...e){const n=[];for(const r of e)le(r)?n.push(al(r)):Xe(r)?n.push(Zn(r)):n.push(r);return`${t}(${n.join(", ")})`}function es(t){return t=="index"||t=="locus"}function sl(t,e){const r=t%2048,i=Math.round(t-r);return e!=null||(e=[]),e[0]=i,e[1]=r,e}function IE(t){return[...sl(t[0]),t[1]-t[0]]}class kE{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(il+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(!le(this.size))throw new Error("The number of vertices must be defined!");let i,o,a=0;const s=new Float32Array(this.size*n);if(this.arrays[e]={data:s,numComponents:n},n==1){let c=0;const u=f=>{c=+f};i=()=>{s[a++]=c},o=u}else{let c=r!=null?r:[0];const u=r?f=>{}:f=>{c=f};switch(n){case 1:break;case 2:i=()=>{s[a++]=c[0],s[a++]=c[1]},o=u;break;case 3:i=()=>{s[a++]=c[0],s[a++]=c[1],s[a++]=c[2]},o=u;break;case 4:i=()=>{s[a++]=c[0],s[a++]=c[1],s[a++]=c[2],s[a++]=c[3]},o=u;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}];
211
193
  `,n+=`p${i}();
212
194
  `;const r=new Function("that",`${e}
213
195
 
@@ -215,201 +197,15 @@ ${m} ${Np}${t}() {
215
197
  ${n}
216
198
  that.vertexCount++;
217
199
  };
218
- `);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 dr=5,Mu=127;function Iu(t){const e=[];for(let p=0;p<=Mu;p++)e.push(void 0);const n=new Map;for(const p of t.chars)p.id<=Mu?e[p.id]=p:n.set(p.id,p);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(p){return(p<=Mu?e[p]:n.get(p))||e[63]}function o(p){return i(p.charCodeAt(0))}const s=t.common.base,a=o("x"),c=o("X"),u=o("q"),f=a.height-dr*2,l=c.height-dr*2,h=u.height-a.height+u.yoffset-a.yoffset;function d(p,g=1){let m=0;for(let y=0;y<p.length;y++)m+=i(p.charCodeAt(y)).xadvance;return m/s*g}return{measureWidth:d,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:h,common:t.common}}function Tu(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const FS=2**31-1;function zS(t,e){const n=new Int32Array(t);n.fill(FS);const r=new Int32Array(t),i=e[0],s=(e[1]-e[0])/t,a=l=>Tu(Math.floor((l-i)/s),0,t-1),c=(l,h,d,p)=>{const g=a(l),m=a(h);for(let y=g;y<=m;y++)n[y]>d&&(n[y]=d),r[y]<p&&(r[y]=p)},u=(l,h)=>[n[a(l)],r[a(h)]],f=()=>{for(let l=1;l<r.length;l++)r[l]<r[l-1]&&(r[l]=r[l-1]);for(let l=r.length-1;l>0;l--)r[l-1]>r[l]&&(r[l-1]=r[l]);return u};return c.getIndex=f,c}class Li{constructor({encoders:e,numVertices:n=void 0,attributes:r=[],buildXIndex:i=!1}){this.encoders=e,this._buildXIndex=i,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([o,s])=>r.includes(o)&&s&&s.scale&&!s.constant)),this.allocatedVertices=n,this.variableBuilder=new PS(n);for(const[o,s]of Object.entries(this.variableEncoders)){const a=s.accessor,c=[0,0],u=s.scale.fp64,f=s.indexer,l=f?h=>f(a(h)):u?h=>xu(a(h),c):a;this.variableBuilder.addConverter(o,{f:l,numComponents:u?2:1,arrayReference:u?c:void 0})}this.lastOffset=0,this.rangeMap=new So([],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){for(let o=r;o<i;o++)this.variableBuilder.pushFromDatum(n[o]);this.registerBatch(e)}prepareXIndexer(e){if(!this._buildXIndex)return;const n=this.variableEncoders.x,r=this.variableEncoders.x2;if(n&&r){const i=n.accessor,o=r.accessor;this.xIndexer=zS(50,[i(e[0]),o(pe(e))]);let s=this.variableBuilder.vertexCount;this.addToXIndex=a=>{let c=this.variableBuilder.vertexCount;this.xIndexer(i(a),o(a),s,c),s=c}}else this.xIndexer=void 0,this.addToXIndex=i=>{}}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class RS extends Li{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o,buildXIndex:s=!1}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0,buildXIndex:s});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,c=h=>h.accessor||(d=>0),u=c(o.x),f=c(o.x2);this.prepareXIndexer(n);const l=[0,0];this.updateFrac(l);for(let h=r;h<i;h++){const d=n[h];let p=u(d),g=f(d);if(p>g&&([p,g]=[g,p]),g<s||p>a)continue;p<s&&(p=s),g>a&&(g=a),this.variableBuilder.updateFromDatum(d),l[0]=0,l[1]=0;const m=1;this.variableBuilder.pushAll();for(let y=0;y<=m;y++)l[0]=y/m,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(d)}this.registerBatch(e)}}class US extends Li{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o,buildXIndex:s}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0,buildXIndex:s});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);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 c=0;c<=a;c++)this.updatePos(c/a),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(s)}this.registerBatch(e)}}class jS extends Li{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class GS extends Li{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 HS extends Li{constructor({encoders:e,attributes:n,fontMetrics:r,properties:i,numCharacters:o=void 0,buildXIndex:s=!1}){super({encoders:e,attributes:n,numVertices:o*6,buildXIndex:s});this.metadata=r,this.metrics=r,this.properties=i;const c=e.text.channelDef;this.numberFormat=!Ze(c)&&c.format?Le(c.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 d;const o=this.properties.align||"left",s=(d=this.properties.logoLetters)!=null?d:!1,a=this.metadata.common.base,c=this.metadata.common.scaleH;let u=-dr;switch(this.properties.baseline){case"top":u+=this.metrics.capHeight;break;case"middle":u+=this.metrics.capHeight/2;break;case"bottom":u-=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);for(let p=r;p<i;p++){const g=n[p],m=this.numberFormat(f(g)),y=oe(m)?m:m===null?"":""+m;if(y.length==0)continue;this.variableBuilder.updateFromDatum(g);const x=s?y.length:this.metrics.measureWidth(y);this.updateWidth(x);let v=o=="right"?-x:o=="center"?-x/2:0;if(!s){const w=this.metrics.getCharByCode(y.charCodeAt(0));v-=(w.width-w.xadvance)/a/2}let S=-.5,b=1,A=1;for(let w=0;w<y.length;w++){const E=this.metrics.getCharByCode(y.charCodeAt(w)),B=s?1:E.xadvance/a;if(E.id==32){v+=B;continue}s?(A=(E.width+dr*2)/E.width,v=-A/2,b=(E.height+dr*2)/E.height,S=-.5-dr/E.height):(b=E.height/a,S=-(E.height+E.yoffset+u)/a,A=E.width/a);const O=E.x,D=E.y;l[0]=v,l[1]=S+b,h[0]=O/c,h[1]=D/c,this.variableBuilder.pushAll(),l[0]=v+A,l[1]=S+b,h[0]=(O+E.width)/c,h[1]=D/c,this.variableBuilder.pushAll(),l[0]=v,l[1]=S,h[0]=O/c,h[1]=(D+E.height)/c,this.variableBuilder.pushAll(),l[0]=v+A,l[1]=S+b,h[0]=(O+E.width)/c,h[1]=D/c,this.variableBuilder.pushAll(),l[0]=v,l[1]=S,h[0]=O/c,h[1]=(D+E.height)/c,this.variableBuilder.pushAll(),l[0]=v+A,l[1]=S,h[0]=(O+E.width)/c,h[1]=(D+E.height)/c,this.variableBuilder.pushAll(),v+=B}this.addToXIndex(n)}this.registerBatch(e)}}var QS=`// Adapted from luma.gl - https://github.com/uber/luma.gl
219
-
220
- // Copyright (c) 2015 - 2017 Uber Technologies, Inc.
221
- //
222
- // Permission is hereby granted, free of charge, to any person obtaining a copy
223
- // of this software and associated documentation files (the "Software"), to deal
224
- // in the Software without restriction, including without limitation the rights
225
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
226
- // copies of the Software, and to permit persons to whom the Software is
227
- // furnished to do so, subject to the following conditions:
228
- //
229
- // The above copyright notice and this permission notice shall be included in
230
- // all copies or substantial portions of the Software.
231
- //
232
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
233
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
234
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
235
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
236
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
237
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
238
- // THE SOFTWARE.
239
-
240
- uniform float ONE;
241
-
242
- /*
243
- About LUMA_FP64_CODE_ELIMINATION_WORKAROUND
244
-
245
- The purpose of this workaround is to prevent shader compilers from
246
- optimizing away necessary arithmetic operations by swapping their sequences
247
- or transform the equation to some 'equivalent' from.
248
-
249
- The method is to multiply an artifical variable, ONE, which will be known to
250
- the compiler to be 1 only at runtime. The whole expression is then represented
251
- as a polynomial with respective to ONE. In the coefficients of all terms, only one a
252
- and one b should appear
253
-
254
- err = (a + b) * ONE^6 - a * ONE^5 - (a + b) * ONE^4 + a * ONE^3 - b - (a + b) * ONE^2 + a * ONE
255
- */
256
-
257
- // Divide float number to high and low floats to extend fraction bits
258
- vec2 split(float a) {
259
- const float SPLIT = 4097.0;
260
- float t = a * SPLIT;
261
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
262
- float a_hi = t * ONE - (t - a);
263
- float a_lo = a * ONE - a_hi;
264
- #else
265
- float a_hi = t - (t - a);
266
- float a_lo = a - a_hi;
267
- #endif
268
- return vec2(a_hi, a_lo);
269
- }
270
-
271
- // Divide float number again when high float uses too many fraction bits
272
- vec2 split2(vec2 a) {
273
- vec2 b = split(a.x);
274
- b.y += a.y;
275
- return b;
276
- }
277
-
278
- // Special sum operation when a > b
279
- vec2 quickTwoSum(float a, float b) {
280
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
281
- float sum = (a + b) * ONE;
282
- float err = b - (sum - a) * ONE;
283
- #else
284
- float sum = a + b;
285
- float err = b - (sum - a);
286
- #endif
287
- return vec2(sum, err);
288
- }
289
-
290
- // General sum operation
291
- vec2 twoSum(float a, float b) {
292
- float s = (a + b);
293
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
294
- float v = (s * ONE - a) * ONE;
295
- float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v);
296
- #else
297
- float v = s - a;
298
- float err = (a - (s - v)) + (b - v);
299
- #endif
300
- return vec2(s, err);
301
- }
302
-
303
- vec2 twoSub(float a, float b) {
304
- float s = (a - b);
305
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
306
- float v = (s * ONE - a) * ONE;
307
- float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v);
308
- #else
309
- float v = s - a;
310
- float err = (a - (s - v)) - (b + v);
311
- #endif
312
- return vec2(s, err);
313
- }
314
-
315
- vec2 twoSqr(float a) {
316
- float prod = a * a;
317
- vec2 a_fp64 = split(a);
318
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
319
- float err = ((a_fp64.x * a_fp64.x - prod) * ONE + 2.0 * a_fp64.x *
320
- a_fp64.y * ONE * ONE) + a_fp64.y * a_fp64.y * ONE * ONE * ONE;
321
- #else
322
- float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y;
323
- #endif
324
- return vec2(prod, err);
325
- }
326
-
327
- vec2 twoProd(float a, float b) {
328
- float prod = a * b;
329
- vec2 a_fp64 = split(a);
330
- vec2 b_fp64 = split(b);
331
- float err = ((a_fp64.x * b_fp64.x - prod) + a_fp64.x * b_fp64.y +
332
- a_fp64.y * b_fp64.x) + a_fp64.y * b_fp64.y;
333
- return vec2(prod, err);
334
- }
335
-
336
- vec2 sum_fp64(vec2 a, vec2 b) {
337
- vec2 s, t;
338
- s = twoSum(a.x, b.x);
339
- t = twoSum(a.y, b.y);
340
- s.y += t.x;
341
- s = quickTwoSum(s.x, s.y);
342
- s.y += t.y;
343
- s = quickTwoSum(s.x, s.y);
344
- return s;
345
- }
346
-
347
- vec2 sub_fp64(vec2 a, vec2 b) {
348
- vec2 s, t;
349
- s = twoSub(a.x, b.x);
350
- t = twoSub(a.y, b.y);
351
- s.y += t.x;
352
- s = quickTwoSum(s.x, s.y);
353
- s.y += t.y;
354
- s = quickTwoSum(s.x, s.y);
355
- return s;
356
- }
357
-
358
- vec2 mul_fp64(vec2 a, vec2 b) {
359
- vec2 prod = twoProd(a.x, b.x);
360
- // y component is for the error
361
- prod.y += a.x * b.y;
362
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
363
- prod = split2(prod);
364
- #endif
365
- prod = quickTwoSum(prod.x, prod.y);
366
- prod.y += a.y * b.x;
367
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
368
- prod = split2(prod);
369
- #endif
370
- prod = quickTwoSum(prod.x, prod.y);
371
- return prod;
372
- }
373
-
374
- vec2 div_fp64(vec2 a, vec2 b) {
375
- float xn = 1.0 / b.x;
376
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
377
- vec2 yn = mul_fp64(a, vec2(xn, 0));
378
- #else
379
- vec2 yn = a * xn;
380
- #endif
381
- float diff = (sub_fp64(a, mul_fp64(b, yn))).x;
382
- vec2 prod = twoProd(xn, diff);
383
- return sum_fp64(yn, prod);
384
- }
385
-
386
- vec2 sqrt_fp64(vec2 a) {
387
- if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0);
388
- if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);
389
-
390
- float x = 1.0 / sqrt(a.x);
391
- float yn = a.x * x;
392
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
393
- vec2 yn_sqr = twoSqr(yn) * ONE;
394
- #else
395
- vec2 yn_sqr = twoSqr(yn);
396
- #endif
397
- float diff = sub_fp64(a, yn_sqr).x;
398
- vec2 prod = twoProd(x * 0.5, diff);
399
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
400
- return sum_fp64(split(yn), prod);
401
- #else
402
- return sum_fp64(vec2(yn, 0.0), prod);
403
- #endif
404
- }`,Op=`#define PI 3.141593
200
+ `);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 Pr=5,cl=127;function ul(t){const e=[];for(let p=0;p<=cl;p++)e.push(void 0);const n=new Map;for(const p of t.chars)p.id<=cl?e[p.id]=p:n.set(p.id,p);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(p){return(p<=cl?e[p]:n.get(p))||e[63]}function o(p){return i(p.charCodeAt(0))}const a=t.common.base,s=o("x"),c=o("X"),u=o("q"),f=s.height-Pr*2,l=c.height-Pr*2,d=u.height-s.height+u.yoffset-s.yoffset;function h(p,m=1){let g=0;for(let y=0;y<p.length;y++)g+=i(p.charCodeAt(y)).xadvance;return g/a*m}return{measureWidth:h,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:d,common:t.common}}function ll(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const NE=2**31-1;function LE(t,e){const n=new Int32Array(t);n.fill(NE);const r=new Int32Array(t),i=e[0],a=(e[1]-e[0])/t,s=l=>ll(Math.floor((l-i)/a),0,t-1),c=(l,d,h,p)=>{const m=s(l),g=s(d);for(let y=m;y<=g;y++)n[y]>h&&(n[y]=h),r[y]<p&&(r[y]=p)},u=(l,d)=>[n[s(l)],r[s(d)]],f=()=>{for(let l=1;l<r.length;l++)r[l]<r[l-1]&&(r[l]=r[l-1]);for(let l=r.length-1;l>0;l--)r[l-1]>r[l]&&(r[l-1]=r[l]);return u};return c.getIndex=f,c}class to{constructor({encoders:e,numVertices:n=void 0,attributes:r=[],buildXIndex:i=!1}){this.encoders=e,this._buildXIndex=i,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([o,a])=>r.includes(o)&&a&&a.scale&&!a.constant)),this.allocatedVertices=n,this.variableBuilder=new kE(n);for(const[o,a]of Object.entries(this.variableEncoders)){const s=a.accessor,c=[0,0],u=es(a.scale.type),f=a.indexer,l=f?d=>f(s(d)):u?d=>sl(s(d),c):s;this.variableBuilder.addConverter(o,{f:l,numComponents:u?2:1,arrayReference:u?c:void 0})}this.lastOffset=0,this.rangeMap=new fr([],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){for(let o=r;o<i;o++)this.variableBuilder.pushFromDatum(n[o]);this.registerBatch(e)}prepareXIndexer(e){if(!this._buildXIndex)return;const n=this.variableEncoders.x,r=this.variableEncoders.x2;if(n&&r){const i=n.accessor,o=r.accessor;this.xIndexer=LE(50,[i(e[0]),o(ze(e))]);let a=this.variableBuilder.vertexCount;this.addToXIndex=s=>{let c=this.variableBuilder.vertexCount;this.xIndexer(i(s),o(s),a,c),a=c}}else this.xIndexer=void 0,this.addToXIndex=i=>{}}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class BE extends to{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o,buildXIndex:a=!1}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0,buildXIndex:a}),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,[a,s]=this.visibleRange,c=d=>d.accessor||(h=>0),u=c(o.x),f=c(o.x2);this.prepareXIndexer(n);const l=[0,0];this.updateFrac(l);for(let d=r;d<i;d++){const h=n[d];let p=u(h),m=f(h);if(p>m&&([p,m]=[m,p]),m<a||p>s)continue;p<a&&(p=a),m>s&&(m=s),this.variableBuilder.updateFromDatum(h),l[0]=0,l[1]=0;const g=1;this.variableBuilder.pushAll();for(let y=0;y<=g;y++)l[0]=y/g,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(h)}this.registerBatch(e)}}class OE extends to{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o,buildXIndex:a}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0,buildXIndex:a}),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);for(let o=r;o<i;o++){const a=n[o];this.variableBuilder.updateFromDatum(a),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const s=1;for(let c=0;c<=s;c++)this.updatePos(c/s),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(a)}this.registerBatch(e)}}class PE extends to{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class FE extends to{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 zE extends to{constructor({encoders:e,attributes:n,fontMetrics:r,properties:i,numCharacters:o=void 0,buildXIndex:a=!1}){super({encoders:e,attributes:n,numVertices:o*6,buildXIndex:a}),this.metadata=r,this.metrics=r,this.properties=i;const c=e.text.channelDef;this.numberFormat=!st(c)&&c.format?he(c.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 h;const o=this.properties.align||"left",a=(h=this.properties.logoLetters)!=null?h:!1,s=this.metadata.common.base,c=this.metadata.common.scaleH;let u=-Pr;switch(this.properties.baseline){case"top":u+=this.metrics.capHeight;break;case"middle":u+=this.metrics.capHeight/2;break;case"bottom":u-=this.metrics.descent;break}const f=this.encoders.text.accessor||this.encoders.text,l=[0,0];this.updateVertexCoord(l);const d=[0,0];this.updateTextureCoord(d),this.prepareXIndexer(n);for(let p=r;p<i;p++){const m=n[p],g=this.numberFormat(f(m)),y=re(g)?g:g===null?"":""+g;if(y.length==0)continue;this.variableBuilder.updateFromDatum(m);const x=a?y.length:this.metrics.measureWidth(y);this.updateWidth(x);let A=o=="right"?-x:o=="center"?-x/2:0;if(!a){const w=this.metrics.getCharByCode(y.charCodeAt(0));A-=(w.width-w.xadvance)/s/2}let C=-.5,b=1,v=1;for(let w=0;w<y.length;w++){const E=this.metrics.getCharByCode(y.charCodeAt(w)),k=a?1:E.xadvance/s;if(E.id==32){A+=k;continue}a?(v=(E.width+Pr*2)/E.width,A=-v/2,b=(E.height+Pr*2)/E.height,C=-.5-Pr/E.height):(b=E.height/s,C=-(E.height+E.yoffset+u)/s,v=E.width/s);const L=E.x,I=E.y;l[0]=A,l[1]=C+b,d[0]=L/c,d[1]=I/c,this.variableBuilder.pushAll(),l[0]=A+v,l[1]=C+b,d[0]=(L+E.width)/c,d[1]=I/c,this.variableBuilder.pushAll(),l[0]=A,l[1]=C,d[0]=L/c,d[1]=(I+E.height)/c,this.variableBuilder.pushAll(),l[0]=A+v,l[1]=C+b,d[0]=(L+E.width)/c,d[1]=I/c,this.variableBuilder.pushAll(),l[0]=A,l[1]=C,d[0]=L/c,d[1]=(I+E.height)/c,this.variableBuilder.pushAll(),l[0]=A+v,l[1]=C,d[0]=(L+E.width)/c,d[1]=(I+E.height)/c,this.variableBuilder.pushAll(),A+=k}this.addToXIndex(n)}this.registerBatch(e)}}var xm=`#define PI 3.141593
405
201
 
406
202
  /** Offset in "unit" units */
407
- uniform vec2 uViewOffset;
203
+ uniform mediump vec2 uViewOffset;
408
204
 
409
- uniform vec2 uViewScale;
205
+ uniform mediump vec2 uViewScale;
410
206
 
411
207
  /** Size of the logical viewport in pixels, i.e., the view */
412
- uniform vec2 uViewportSize;
208
+ uniform mediump vec2 uViewportSize;
413
209
 
414
210
  uniform lowp float uDevicePixelRatio;
415
211
 
@@ -464,7 +260,9 @@ vec4 distanceToColor(float d, vec4 fill, vec4 stroke, float halfStrokeWidth) {
464
260
  return fill * distanceToRatio(-d);
465
261
  }
466
262
  }
467
- `,VS=`// Utils ------------
263
+ `,RE=`const float inf = 1.0 / 0.0;
264
+
265
+ // Utils ------------
468
266
 
469
267
  vec3 getDiscreteColor(sampler2D s, int index) {
470
268
  return texelFetch(s, ivec2(index % textureSize(s, 0).x, 0), 0).rgb;
@@ -533,49 +331,48 @@ float scaleBand(float value, vec2 domainExtent, vec2 range,
533
331
  // TODO: reverse
534
332
  float start = range[0];
535
333
  float stop = range[1];
334
+ float rangeSpan = stop - start;
536
335
 
537
336
  float n = domainExtent[1] - domainExtent[0];
538
337
 
338
+ // This fix departs from Vega and d3: https://github.com/vega/vega/issues/3357#issuecomment-1063253596
539
339
  paddingInner = int(n) > 1 ? paddingInner : 0.0;
540
340
 
541
341
  // Adapted from: https://github.com/d3/d3-scale/blob/master/src/band.js
542
- float step = (stop - start) / max(1.0, n - paddingInner + paddingOuter * 2.0);
543
- start += (stop - start - step * (n - paddingInner)) * align;
342
+ float step = rangeSpan / max(1.0, n - paddingInner + paddingOuter * 2.0);
343
+ start += (rangeSpan - step * (n - paddingInner)) * align;
544
344
  float bandwidth = step * (1.0 - paddingInner);
545
345
 
546
346
  return start + (value - domainExtent[0]) * step + bandwidth * band;
547
347
  }
548
- `,_S=`float scaleIdentityFp64(vec2 value) {
549
- return value[0];
550
- }
551
-
552
- float scaleLinearFp64(vec2 value, vec4 domain, vec2 range) {
553
- vec2 domainSpan = sub_fp64(domain.zw, domain.xy);
554
- float rangeSpan = range[1] - range[0];
555
-
556
- float unitValue = div_fp64(sub_fp64(value, domain.xy), domainSpan).x;
557
- return unitValue * rangeSpan + range[0];
558
- }
559
348
 
560
- float scaleBandFp64(vec2 value, vec4 domainExtent, vec2 range,
561
- float paddingInner, float paddingOuter,
562
- float align, float band) {
349
+ // High precision variant of scaleBand for index/locus scales
350
+ float scaleBandHp(vec2 value, vec3 domainExtent, vec2 range,
351
+ float paddingInner, float paddingOuter,
352
+ float align, float band) {
563
353
 
564
354
  // TODO: reverse
565
355
  float start = range[0];
566
356
  float stop = range[1];
357
+ float rangeSpan = stop - start;
567
358
 
568
- vec2 domainSpan = sub_fp64(domainExtent.zw, domainExtent.xy);
569
- float n = domainSpan.x;
359
+ vec2 domainStart = domainExtent.xy;
360
+ float n = domainExtent[2];
570
361
 
571
- // Based on: https://github.com/d3/d3-scale/blob/master/src/band.js
572
- float step = (stop - start) / max(1.0, n - paddingInner + paddingOuter * 2.0);
573
- start += (stop - start - step * (n - paddingInner)) * align;
362
+ // The following computation is identical for every vertex. Could be done on the JS side.
363
+ float step = rangeSpan / max(1.0, n - paddingInner + paddingOuter * 2.0);
364
+ start += (rangeSpan - step * (n - paddingInner)) * align;
574
365
  float bandwidth = step * (1.0 - paddingInner);
575
366
 
576
- return start + sub_fp64(value, domainExtent.xy).x * step + bandwidth * band;
367
+ // Using max to prevent the shader compiler from wrecking the precision.
368
+ // Othwewise the compiler could optimize the sum of the four terms into
369
+ // some equivalent form that does premature rounding.
370
+ float hi = max(value[0] - domainStart[0], -inf);
371
+ float lo = max(value[1] - domainStart[1], -inf);
372
+
373
+ return dot(vec4(start, hi, lo, bandwidth), vec4(1.0, step, step, band));
577
374
  }
578
- `,YS=`
375
+ `,jE=`
579
376
  /**
580
377
  * Describes where a sample facet should be shown. Interpolating between the
581
378
  * current and target positions/heights allows for transitioning between facet
@@ -682,7 +479,7 @@ float getSampleFacetHeight(vec2 pos) {
682
479
  return facetPos.height;
683
480
  }
684
481
  }
685
- `,WS=`/*
482
+ `,UE=`/*
686
483
  * Based on concepts presented at:
687
484
  * https://webglfundamentals.org/webgl/lessons/webgl-picking.html
688
485
  * https://deck.gl/docs/developer-guide/custom-layers/picking
@@ -711,25 +508,24 @@ bool setupPicking() {
711
508
  }
712
509
  return false;
713
510
  }
714
- `,XS=`uniform bool uPickingEnabled;
511
+ `,GE=`uniform bool uPickingEnabled;
715
512
 
716
513
  flat in highp vec4 vPickingColor;
717
- `;const ws=Symbol("cacheMap");function pr(t,e,n){let r=Oi(t).get(e);return r===void 0&&(r=n(e),Oi(t).set(e,r)),r}function Bp(t,e){Oi(t).delete(e)}function ki(t,e){const n=Oi(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Oi(t).delete(e)}function Pp(t){t[ws]=new Map}function Oi(t){return t[ws]||Pp(t),t[ws]}function qS(t,e,n,r){const i=oe(t)?t:t.name,o=!oe(t)&&t.extent||[0,1];if(n===void 0&&!oe(t)&&(n=t.count),i){const s=Lc(i);if(Te(s)){const a=zp(s,{extent:o,count:n});return Bi(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},a,r)}else{if(_e(s))return Fp(s,e);throw new Error("Unknown scheme: "+i)}}}function ZS(t,e="rgb",n,r){const i=Vo(t,oe(e)?e:e.type,oe(e)?void 0:e.gamma),o=zp(i);return Bi(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function KS(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 Bi(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function Fp(t,e,n,r){const i=Rp(t,n);return Bi(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function zp(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=pe(e)-i,s=Mo(r).map(a=>a/(r-1)).map(a=>i+a/o).map(t);return n&&s.reverse(),Rp(s)}function Rp(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=Ni(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 JS{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=cS(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(!rr(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");Ap(i),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),this._shaderDefines=fS(i),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=nS(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;";_e(n)&&(n=n.join(`
514
+ `;const ts=Symbol("cacheMap");function Fr(t,e,n){let r=ro(t).get(e);return r===void 0&&(r=n(e),ro(t).set(e,r)),r}function wm(t,e){ro(t).delete(e)}function no(t,e){const n=ro(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);ro(t).delete(e)}function Cm(t){t[ts]=new Map}function ro(t){return t[ts]||Cm(t),t[ts]}function HE(t,e,n,r){const i=re(t)?t:t.name,o=!re(t)&&t.extent||[0,1];if(n===void 0&&!re(t)&&(n=t.count),i){const a=mu(i);if(Oe(a)){const s=Em(a,{extent:o,count:n});return io(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},s,r)}else{if(Xe(a))return Sm(a,e);throw new Error("Unknown scheme: "+i)}}}function QE(t,e="rgb",n,r){const i=Sa(t,re(e)?e:e.type,re(e)?void 0:e.gamma),o=Em(i);return io(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function VE(t,e,n,r){const i=Math.max(t.length,n||0),o=new Float32Array(i);for(let a=0;a<i;a++)o[a]=t[a%t.length];return io(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function Sm(t,e,n,r){const i=Dm(t,n);return io(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function Em(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=ze(e)-i,a=_t(r).map(s=>s/(r-1)).map(s=>i+s/o).map(t);return n&&a.reverse(),Dm(a)}function Dm(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=On(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 YE{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=AE(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(!Dr(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");mm(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=pE(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;";Xe(n)&&(n=n.join(`
718
515
 
719
- `));const o=this.gl,s=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let a=this._shaderCache.get(s);if(!a){const c=[r,i,n].join(`
516
+ `));const o=this.gl,a=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let s=this._shaderCache.get(a);if(!s){const c=[r,i,n].join(`
720
517
 
721
- `);a=o.createShader(e),o.shaderSource(a,c),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,rS(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,c;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=(c=e.height)!=null?c: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 Xt(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(In(o)){const s=e.getScaleProps(),a=e.getScale();let c;if(s.scheme){let u=oe(s.scheme)?void 0:s.scheme.count;u=i(u,a),c=qS(s.scheme,this.gl,u,r)}else{const u=a.range();Qo(a.type)?c=ZS(u,s.interpolate,this.gl,r):c=Fp(u,this.gl,a.domain().length,r)}this.rangeTextures.set(e,c)}else{const s=e.getScale();if(s.type==="ordinal"||Kn(s.type)){const a=Jo(o)?a0(o):u=>u,c=e.getScale().range();this.rangeTextures.set(e,KS(c.map(a),this.gl,s.domain().length,r))}}}}function $S(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],o=new Map(i.map((s,a)=>{const c=parseInt(s[1]),u=i[a+1],f=u?u.index:e.length,l=e.substring(s.index,f);return[c-1,l]}));return t.split(`
722
- `).map((s,a)=>{const c=o.get(a);return`${a+1+n}: ${s}${c?`
518
+ `);s=o.createShader(e),o.shaderSource(s,c),o.compileShader(s),this._shaderCache.set(a,s)}return s}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,mE(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,a,s,c;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=(a=(o=this._sizeSource)==null?void 0:o.call(this))!=null?a:{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=(s=e.width)!=null?s:this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=(c=e.height)!=null?c: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(a,s){return nn(s.type)?s.domain().length:s.type=="threshold"?s.domain().length+1:s.type=="quantize"||s.type=="quantile"?a!=null?a:4:a}const o=e.channel;if(Yn(o)){const a=e.getScaleProps(),s=e.getScale();let c;if(a.scheme){let u=re(a.scheme)?void 0:a.scheme.count;u=i(u,s),c=HE(a.scheme,this.gl,u,r)}else{const u=s.range();Ca(s.type)?c=QE(u,a.interpolate,this.gl,r):c=Sm(u,this.gl,s.domain().length,r)}this.rangeTextures.set(e,c)}else{const a=e.getScale();if(a.type==="ordinal"||Ar(a.type)){const s=La(o)?ip(o):u=>u,c=e.getScale().range();this.rangeTextures.set(e,VE(c.map(s),this.gl,a.domain().length,r))}}}}function _E(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],o=new Map(i.map((a,s)=>{const c=parseInt(a[1]),u=i[s+1],f=u?u.index:e.length,l=e.substring(a.index,f);return[c-1,l]}));return t.split(`
519
+ `).map((a,s)=>{const c=o.get(s);return`${s+1+n}: ${a}${c?`
723
520
 
724
521
  ^^^ ${c}`:""}`}).join(`
725
- `)}function eC(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 c of[e,n])t.getShaderParameter(c,t.COMPILE_STATUS)||(o=t.getShaderInfoLog(c),s=$S(t.getShaderSource(c),o,0)+`
726
- Error compiling: ${o}`,t.deleteShader(c));t.deleteProgram(r)}if(o)return{message:o,detail:s}}return{program:r,getProgramErrors:i}}function Bi(t,e,n,r){return r?z0(t,r,n,e):r=Si(t,F(T({},e),{src:n})),r}function tC(...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 nC(t){return oe(t)||ae(t)||ao(t)}const rC="SAMPLE_FACET_UNIFORM",Up="SAMPLE_FACET_TEXTURE";class Pi{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.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=tC(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 pr(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=s=>{const a=this.properties[s];return nC(a)&&{value:a}},i=Object.fromEntries(this.getSupportedChannels().map(s=>[s,r(s)]).filter(s=>s[1].value!==void 0)),o=this.fixEncoding(T(T(T({},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=hw(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return Up;if(this.unitView.getFacetAccessor())return rC}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 l of i){let h;if(l in this.encoding)h=l;else continue;const d=this.encoding[h];if(!!d)if(Ze(d))o.push(LS(h,d.value));else{const p=Ke(d)&&d.resolutionChannel||h,g=this.unitView.getScaleResolution(p).getScale(),m=kS(h,g,d);o.push(m.glsl),m.domainUniform&&this.domainUniforms.push(m.domainUniform)}}const a=this.domainUniforms.length?`layout(std140) uniform Domains {
727
- `+this.domainUniforms.map(l=>` ${l}
522
+ `)}function WE(t,e,n){const r=t.createProgram();t.attachShader(r,e),t.attachShader(r,n),t.linkProgram(r);function i(){let o,a;if(!t.getProgramParameter(r,t.LINK_STATUS)){o=t.getProgramInfoLog(r);for(const c of[e,n])t.getShaderParameter(c,t.COMPILE_STATUS)||(o=t.getShaderInfoLog(c),a=_E(t.getShaderSource(c),o,0)+`
523
+ Error compiling: ${o}`,t.deleteShader(c));t.deleteProgram(r)}if(o)return{message:o,detail:a}}return{program:r,getProgramErrors:i}}function io(t,e,n,r){return r?Op(t,r,n,e):r=$i(t,U(T({},e),{src:n})),r}function XE(...t){const e={get(n,r,i){for(const o of t){const s=o()[r];if(s!==void 0)return s}},has(n,r,i){for(const o of t){const a=o();if(r in a)return!0}return!1}};return new Proxy({},e)}function ZE(t){return re(t)||le(t)||Wo(t)}const qE="SAMPLE_FACET_UNIFORM",Mm="SAMPLE_FACET_TEXTURE";class oo{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.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=XE(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 Fr(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=a=>{const s=this.properties[a];return ZE(s)&&{value:s}},i=Object.fromEntries(this.getSupportedChannels().map(a=>[a,r(a)]).filter(a=>a[1].value!==void 0)),o=this.fixEncoding(T(T(T({},e),i),n));for(const a of Object.keys(o))this.getSupportedChannels().includes(a)||delete o[a];return o})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=S4(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return Mm;if(this.unitView.getFacetAccessor())return qE}createAndLinkShaders(e,n,r=[]){const i=this.getAttributes();r.push("// view: "+this.unitView.getPathString()),this.domainUniforms=[];let o=[];const a=this.getSampleFacetMode();a&&r.push(`#define ${a}`);for(const d of i){let h;if(d in this.encoding)h=d;else continue;const p=this.encoding[h];if(!!p)if(st(p))o.push(EE(h,p.value));else{const m=Je(p)&&p.resolutionChannel||h,g=this.unitView.getScaleResolution(m).getScale(),y=DE(h,g,p);o.push(y.glsl),y.domainUniform&&this.domainUniforms.push(y.domainUniform)}}const s=this.domainUniforms.length?`layout(std140) uniform Domains {
524
+ `+this.domainUniforms.map(d=>` ${d}
728
525
  `).join("")+`};
729
526
 
730
- `:"",c=[...r,Op,VS,a,...o,YS,WS,e];c.some(l=>/[Ff]p64/.test(l))&&(c.unshift(_S),c.unshift(QS));const u=[...r,Op,XS,n],f=this.gl;this.programStatus=eC(f,this.glHelper.compileShader(f.VERTEX_SHADER,c),this.glHelper.compileShader(f.FRAGMENT_SHADER,u))}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=UE(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=BE(this.gl,this.programInfo,"Domains")),this.gl.useProgram(this.programInfo.program),this._setDatums()}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(gi(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):r.scale.fp64?xu(+n.datum):+n.datum;Se(this.programInfo,{[Su+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&&qw(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=Jw(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 i;const n=this.glHelper,r=this.gl;if(this.vertexArrayInfo||(this.vertexArrayInfo=iS(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program),this.domainUniformInfo){for(const[o,s]of Object.entries(this.domainUniformInfo.setters)){const a=o.substring(Ip.length),c=this.encoding[a],u=Ke(c)&&c.resolutionChannel||a,f=this.unitView.getScaleResolution(u);if(f){const l=f.getScale(),h=Xt(l.type)?[0,l.domain().length]:l.domain();s(l.fp64?h.map(d=>xu(d)).flat():h)}}FE(r,this.programInfo,this.domainUniformInfo)}for(const[o,s]of Object.entries(this.encoding))if(Ke(s)){const a=Ke(s)&&s.resolutionChannel||o,c=this.unitView.getScaleResolution(a),u=n.rangeTextures.get(c);u&&Se(this.programInfo,{[Cu+o]:u})}if(this.getSampleFacetMode()==Up){let o;for(const s of this.unitView.getAncestors())if(o=s.getSampleFacetTexture(),o)break;Se(this.programInfo,{uSampleFacetTexture:o})}Se(this.programInfo,{ONE:1,uDevicePixelRatio:this.glHelper.dpr,uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:((i=e.picking)!=null?i:!1)&&this.isPickingParticipant()}),Se(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0}),this.opaque||e.picking?r.disable(r.BLEND):r.enable(r.BLEND)}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,r){var s;const i=this;let o;if(this.properties.buildIndex){const a=(s=this.unitView.getScaleResolution("x"))==null?void 0:s.getScale();o=c=>{if(a&&c.xIndex){const u=a.domain(),f=c.xIndex(u[0],u[1]),l=f[0],h=f[1]-l;h>0&&e(l,h)}else e(c.offset,c.count)}}else o=a=>e(a.offset,a.count);if(this.properties.dynamicData)return function(){const c=r().get(n.facetId);c&&c.count&&i.prepareSampleFacetRendering(n)&&o(c)};{const a=r().get(n.facetId);if(a&&a.count)return function(){i.prepareSampleFacetRendering(n)&&o(a)}}}setViewport(e,n){const r=this.glHelper.dpr,i=this.gl,o=this.properties,s=this.glHelper.getLogicalCanvasSize(),a=.5,c=(o.xOffset||0)+a,u=(o.yOffset||0)+a;let f,l=e;if(o.clip||n){let h=0,d=0,p;n?(l=o.clip?e.intersect(n):n,p=[e.width/l.width,e.height/l.height],d=Math.max(0,e.y2-n.y2),h=Math.max(0,e.x2-n.x2)):p=[1,1];const g=[e.x,s.height-l.y2,Math.max(0,l.width),Math.max(0,l.height)].map(v=>v*r),m=g.map(v=>Math.floor(v)),[y,x]=g.map((v,S)=>v-m[S]);i.viewport(...m),i.scissor(...m),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(c+h+y)/l.width,-(u+d-x)/l.height],uViewScale:p}}else i.viewport(0,0,s.width*r,s.height*r),i.disable(i.SCISSOR_TEST),f={uViewOffset:[(e.x+c)/s.width,(s.height-e.y-u-e.height)/s.height],uViewScale:[e.width/s.width,e.height/s.height]};return Se(this.programInfo,f),Se(this.programInfo,{uViewportSize:[e.width,e.height]}),l.height>0&&l.width>0}findDatumAt(e,n){}}function Nu(t,e){var o;const n=mw(e);let r=t[e]&&T({},t[e]),i=t[n]&&T({},t[n]);if(!(Ze(r)||Ze(i))){if(r){if(!Ke(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=T({},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 jp(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke=T({resolutionChannel:"color"},t.color)),Ze(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity=T({resolutionChannel:"opacity"},t.opacity))}function Gp(t,e){Ze(t.fill)&&t.fill.value===null?t.fillOpacity={value:0}:t.fill||(t.fill=T({resolutionChannel:"color"},t.color),!e&&!t.fillOpacity&&(t.fillOpacity={value:0})),t.fillOpacity||(e?t.fillOpacity=T({resolutionChannel:"opacity"},t.opacity):t.fillOpacity={value:0})}class iC extends Pi{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 pr(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&Ze(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return Nu(e,"x"),Nu(e,"y"),jp(e,this.properties.filled),Gp(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!(Ze(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(uS,lS,e.map(n=>"#define "+n))}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new RS({encoders:this.encoders,attributes:this.getAttributes(),numItems:n,buildXIndex:this.properties.buildIndex});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap=i.rangeMap,this.updateBufferInfo(i)}prepareRender(e){var r,i,o,s;super.prepareRender(e);const n=this.properties;Se(this.programInfo,{uMinSize:[n.minWidth,n.minHeight],uMinOpacity:n.minOpacity,uCornerRadii:[(r=n.cornerRadiusTopRight)!=null?r:n.cornerRadius,(i=n.cornerRadiusBottomRight)!=null?i:n.cornerRadius,(o=n.cornerRadiusTopLeft)!=null?o:n.cornerRadius,(s=n.cornerRadiusBottomLeft)!=null?s:n.cornerRadius]}),fr(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{Ci(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e,()=>this.rangeMap)}findDatumAt(e,n){e=qe(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))}}var oC=`precision mediump float;
731
-
732
- /**
527
+ `:"",u=[`precision highp float;
528
+ `,...r,xm,RE,s,...o,jE,UE,e],f=[...r,xm,GE,n],l=this.gl;this.programStatus=WE(l,this.glHelper.compileShader(l.VERTEX_SHADER,u),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=KS(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=_S(this.gl,this.programInfo,"Domains")),this.gl.useProgram(this.programInfo.program),this._setDatums()}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(Vi(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):es(r.scale.type)?sl(+n.datum):+n.datum;Ie(this.programInfo,{[il+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&&s3(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=l3(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 i;const n=this.glHelper,r=this.gl;if(this.vertexArrayInfo||(this.vertexArrayInfo=gE(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program),this.domainUniformInfo){for(const[o,a]of Object.entries(this.domainUniformInfo.setters)){const s=o.substring(gm.length),c=this.encoding[s],u=Je(c)&&c.resolutionChannel||s,f=this.unitView.getScaleResolution(u);if(f){const l=f.getScale(),d=nn(l.type)?[0,l.domain().length]:l.domain();a(es(l.type)?IE(d):d)}}XS(r,this.programInfo,this.domainUniformInfo)}for(const[o,a]of Object.entries(this.encoding))if(Je(a)){const s=Je(a)&&a.resolutionChannel||o,c=this.unitView.getScaleResolution(s),u=n.rangeTextures.get(c);u&&Ie(this.programInfo,{[ol+o]:u})}if(this.getSampleFacetMode()==Mm){let o;for(const a of this.unitView.getAncestors())if(o=a.getSampleFacetTexture(),o)break;if(!o)throw new Error("No facet texture available. This is bug.");Ie(this.programInfo,{uSampleFacetTexture:o})}Ie(this.programInfo,{uDevicePixelRatio:this.glHelper.dpr,uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:((i=e.picking)!=null?i:!1)&&this.isPickingParticipant()}),Ie(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0}),this.opaque||e.picking?r.disable(r.BLEND):r.enable(r.BLEND)}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 a=n.targetLocSize?n.targetLocSize.location:i,s=n.targetLocSize?n.targetLocSize.size:o;this.gl.uniform4f(r.location,i,o,a,s)}return!0}render(e){}createRenderCallback(e,n,r){var a,s;const i=this;let o;if(this.properties.buildIndex){const c=(a=this.unitView.getScaleResolution("x"))==null?void 0:a.getScale();o=u=>{if(c&&u.xIndex){const f=c.domain(),l=u.xIndex(f[0],f[1]),d=l[0],h=l[1]-d;h>0&&e(d,h)}else e(u.offset,u.count)}}else o=c=>e(c.offset,c.count);if(this.properties.dynamicData)return function(){const u=r().get(n.facetId);u&&u.count&&i.prepareSampleFacetRendering(n)&&o(u)};{const c=(s=r())==null?void 0:s.get(n.facetId);if(c&&c.count)return function(){i.prepareSampleFacetRendering(n)&&o(c)}}}setViewport(e,n){const r=this.glHelper.dpr,i=this.gl,o=this.properties,a=this.glHelper.getLogicalCanvasSize(),s=.5,c=(o.xOffset||0)+s,u=(o.yOffset||0)+s;let f,l=e;if(o.clip||n){let d=0,h=0,p;n?(l=o.clip?e.intersect(n):n,p=[e.width/l.width,e.height/l.height],h=Math.max(0,e.y2-n.y2),d=Math.max(0,e.x2-n.x2)):p=[1,1];const m=[e.x,a.height-l.y2,Math.max(0,l.width),Math.max(0,l.height)].map(A=>A*r),g=m.map(A=>Math.floor(A)),[y,x]=m.map((A,C)=>A-g[C]);i.viewport(...g),i.scissor(...g),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(c+d+y)/l.width,-(u+h-x)/l.height],uViewScale:p}}else i.viewport(0,0,a.width*r,a.height*r),i.disable(i.SCISSOR_TEST),f={uViewOffset:[(e.x+c)/a.width,(a.height-e.y-u-e.height)/a.height],uViewScale:[e.width/a.width,e.height/a.height]};return Ie(this.programInfo,f),Ie(this.programInfo,{uViewportSize:[e.width,e.height]}),l.height>0&&l.width>0}findDatumAt(e,n){}}function fl(t,e){var o;const n=T4(e);let r=t[e]&&T({},t[e]),i=t[n]&&T({},t[n]);if(!(st(r)||st(i))){if(r){if(!Je(t[e]))return;if(i){if(r.type!="quantitative"){const a=(1-(r.band||1))/2;r.band=a,i.band=-a}}else if(r.type=="quantitative")i={datum:0};else{i=T({},r);const a=(1-((o=r.band)!=null?o:1))/2;r.band=0+a,i.band=1-a}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function Tm(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke=T({resolutionChannel:"color"},t.color)),st(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity=T({resolutionChannel:"opacity"},t.opacity))}function Im(t,e){st(t.fill)&&t.fill.value===null?t.fillOpacity={value:0}:t.fill||(t.fill=T({resolutionChannel:"color"},t.color),!e&&!t.fillOpacity&&(t.fillOpacity={value:0})),t.fillOpacity||(e?t.fillOpacity=T({resolutionChannel:"opacity"},t.opacity):t.fillOpacity={value:0})}class KE extends oo{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 Fr(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&st(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return fl(e,"x"),fl(e,"y"),Tm(e,this.properties.filled),Im(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!(st(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(xE,wE,e.map(n=>"#define "+n))}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new BE({encoders:this.encoders,attributes:this.getAttributes(),numItems:n,buildXIndex:this.properties.buildIndex});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap=i.rangeMap,this.updateBufferInfo(i)}prepareRender(e){var r,i,o,a;super.prepareRender(e);const n=this.properties;Ie(this.programInfo,{uMinSize:[n.minWidth,n.minHeight],uMinOpacity:n.minOpacity,uCornerRadii:[(r=n.cornerRadiusTopRight)!=null?r:n.cornerRadius,(i=n.cornerRadiusBottomRight)!=null?i:n.cornerRadius,(o=n.cornerRadiusTopLeft)!=null?o:n.cornerRadius,(a=n.cornerRadiusBottomLeft)!=null?a:n.cornerRadius]}),Or(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{eo(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e,()=>this.rangeMap)}findDatumAt(e,n){e=Ke(e);const r=this.encoders,i=this.unitView.getCollector().facetBatches.get(e),o=r.x.accessor,a=r.x2.accessor;if(i)return i.find(s=>n>=o(s)&&n<a(s))}}var JE=`/**
733
529
  * The stroke should only grow inwards, e.g, the diameter/outline is not affected by the stroke width.
734
530
  * Thus, a point that has a zero size has no visible stroke. This allows strokes to be used with
735
531
  * geometric zoom, etc.
@@ -855,7 +651,7 @@ void main(void) {
855
651
 
856
652
  setupPicking();
857
653
  }
858
- `,sC=`const lowp vec4 white = vec4(1.0);
654
+ `,$E=`const lowp vec4 white = vec4(1.0);
859
655
  const lowp vec4 black = vec4(0.0, 0.0, 0.0, 1.0);
860
656
 
861
657
  uniform bool uInwardStroke;
@@ -978,10 +774,10 @@ void main() {
978
774
  }
979
775
  }
980
776
 
981
- `;const Nt=1<<0,rn=1<<1,aC={};class se{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",Mo(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
982
- `)+`return function propagate(datum) {${Mo(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
777
+ `;const Bt=1<<0,dn=1<<1,eD={};class ue{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",_t(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
778
+ `)+`return function propagate(datum) {${_t(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
983
779
  `)}}`)(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])+`
984
- `+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():aC}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 Hp(t){return t.type=="file"}function cC(t){return t.type=="facet"}class Qp extends se{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 Vp(t,e,n){const r=new Qp({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const uC={};class lC extends Pi{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 T(T({},super.getDefaultEncoding()),uC)}fixEncoding(e){return jp(e,this.properties.filled),Gp(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(Vp(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(oC,sC)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Se(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new jS({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap=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 hb(n,e)}}else return-1}prepareRender(e){super.prepareRender(e),Se(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()}),fr(this.gl,this.programInfo,this.vertexArrayInfo);const n=this.encoders.x;if(n&&!n.constant){const r=Eo(n.accessor).left,i=this.unitView.getScaleResolution("x").getScale().domain(),o=so(i,null,1.01);this._findIndices=s=>{const a=this.unitView.getCollector().facetBatches.get(s);return[r(a,o[0]),r(a,o[o.length-1])]}}}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{const[o,s]=this._findIndices?this._findIndices(e.facetId):[0,i],a=s-o;a&&Ci(n,this.vertexArrayInfo,n.POINTS,a,r+o)},e,()=>this.rangeMap)}}var fC=`// Line caps
780
+ `+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():eD}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 km(t){return t.type=="file"}function tD(t){return t.type=="facet"}class Nm extends ue{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 Lm(t,e,n){const r=new Nm({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const nD={};class rD extends oo{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 T(T({},super.getDefaultEncoding()),nD)}fixEncoding(e){return Tm(e,this.properties.filled),Im(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(Lm(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(JE,$E)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ie(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new PE({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap=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 sc(n,e)}}else return-1}prepareRender(e){super.prepareRender(e),Ie(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()}),Or(this.gl,this.programInfo,this.vertexArrayInfo);const n=this.encoders.x;if(n&&!n.constant){const r=oi(n.accessor).left,i=this.unitView.getScaleResolution("x").getScale().domain(),o=_o(i,null,1.01);this._findIndices=a=>{const s=this.unitView.getCollector().facetBatches.get(a);return[r(s,o[0]),r(s,o[o.length-1])]}}}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{const[o,a]=this._findIndices?this._findIndices(e.facetId):[0,i],s=a-o;s&&eo(n,this.vertexArrayInfo,n.POINTS,s,r+o)},e,()=>this.rangeMap)}}var iD=`// Line caps
985
781
  const int BUTT = 0;
986
782
  const int SQUARE = 1;
987
783
  const int ROUND = 2;
@@ -995,7 +791,7 @@ in float side;
995
791
  /** Minimum rule length in pixels */
996
792
  uniform float uMinLength;
997
793
 
998
- uniform float uDashTextureSize;
794
+ uniform mediump float uDashTextureSize;
999
795
  uniform lowp int uStrokeCap;
1000
796
 
1001
797
  flat out vec4 vColor;
@@ -1070,7 +866,7 @@ void main(void) {
1070
866
 
1071
867
  setupPicking();
1072
868
  }
1073
- `,hC=`// Line ending
869
+ `,oD=`// Line ending
1074
870
  const int BUTT = 0;
1075
871
  const int SQUARE = 1;
1076
872
  const int ROUND = 2;
@@ -1122,7 +918,7 @@ void main(void) {
1122
918
  fragColor = vPickingColor;
1123
919
  }
1124
920
  }
1125
- `;class dC extends Pi{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&&Ke(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Ke(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=pC(this.properties.strokeDash);this.dashTexture=Si(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(fC,hC)}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new US({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0),buildXIndex:this.properties.buildIndex});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap=i.rangeMap,this.updateBufferInfo(i)}prepareRender(e){super.prepareRender(e),Se(this.programInfo,{uMinLength:this.properties.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(this.properties.strokeCap)}),this.dashTexture&&Se(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset}),fr(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Ci(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e,()=>this.rangeMap)}}function pC(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}var gC=`uniform float uSagittaScaleFactor;
921
+ `;class aD extends oo{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&&Je(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Je(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=sD(this.properties.strokeDash);this.dashTexture=$i(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(iD,oD)}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new OE({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0),buildXIndex:this.properties.buildIndex});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap=i.rangeMap,this.updateBufferInfo(i)}prepareRender(e){super.prepareRender(e),Ie(this.programInfo,{uMinLength:this.properties.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(this.properties.strokeCap)}),this.dashTexture&&Ie(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset}),Or(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>eo(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e,()=>this.rangeMap)}}function sD(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,a)=>o+a),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}var cD=`uniform float uSagittaScaleFactor;
1126
922
 
1127
923
  /** Make very small arcs visible */
1128
924
  uniform float uMinSagittaLength;
@@ -1233,7 +1029,7 @@ void main(void) {
1233
1029
 
1234
1030
  setupPicking();
1235
1031
  }
1236
- `,mC=`in lowp vec4 vColor;
1032
+ `,uD=`in lowp vec4 vColor;
1237
1033
  in float vSize;
1238
1034
  in float vNormalLengthInPixels;
1239
1035
 
@@ -1251,7 +1047,7 @@ void main(void) {
1251
1047
  fragColor = vPickingColor;
1252
1048
  }
1253
1049
  }
1254
- `;class yC extends Pi{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(gC,mC)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Se(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new GS({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:AC(this.properties.segments),numComponents:2},this.rangeMap=i.rangeMap,this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,s])=>[o,F(T({},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&&this.arrays[s].numComponents&&(a.offset=r*this.arrays[s].numComponents*4)}fr(n,this.programInfo,this.bufferInfo),Ci(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e,()=>this.rangeMap)}}function AC(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}var bC=`uniform float uSdfNumerator;
1050
+ `;class lD extends oo{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(cD,uD)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ie(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new FE({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:fD(this.properties.segments),numComponents:2},this.rangeMap=i.rangeMap,this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,a])=>[o,U(T({},a),{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[a,s]=o;s.buffer&&this.arrays[a].numComponents&&(s.offset=r*this.arrays[a].numComponents*4)}Or(n,this.programInfo,this.bufferInfo),eo(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e,()=>this.rangeMap)}}function fD(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}var dD=`uniform float uSdfNumerator;
1255
1051
 
1256
1052
  uniform vec2 uD; // dx & dy
1257
1053
 
@@ -1497,7 +1293,7 @@ void main(void) {
1497
1293
 
1498
1294
  setupPicking();
1499
1295
  }
1500
- `,xC=`uniform sampler2D uTexture;
1296
+ `,hD=`uniform sampler2D uTexture;
1501
1297
 
1502
1298
  in vec2 vTexCoord;
1503
1299
  in float vEdgeFadeOpacity;
@@ -1528,7 +1324,7 @@ void main() {
1528
1324
  fragColor = vPickingColor;
1529
1325
  }
1530
1326
  }
1531
- `;const vC={left:-1,center:0,right:1},wC={top:-1,middle:0,bottom:1,alphabetic:1};class EC extends Pi{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 mi)this.properties.fitToBand&&Nu(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(bC,xC)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Se(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[vC[e.align],wC[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?Le(r.text.format):u=>u;for(const u of n){const f=s(i(u)),l=oe(f)?f:f===null?"":""+f;o+=l&&l.length||0}const a=new HS({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0),buildXIndex:this.properties.buildIndex});a.addBatches(e.facetBatches);const c=a.toArrays();this.rangeMap=c.rangeMap,this.updateBufferInfo(c)}prepareRender(e){super.prepareRender(e);let n=.35;this.properties.logoLetters&&(n/=2),Se(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/n)}),fr(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Ci(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e,()=>this.rangeMap)}}function Es(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let s=0,a=0;for(const p of t)s+=Fi(p.px)+(Ss(p)?0:n),a+=Fi(p.grow);s-=n;const c=Math.max(0,e-s),u=r!==void 0?p=>Math.round(p*r)/r:p=>p,f=[],l=[],h=p=>{const g=f.length;if(!g)return;const m=(p?n:0)*(o?-1:1);d-=m;for(let y=0;y<g;y++)l.push({location:d+(y+1)/(g+1)*m,size:0});d+=m,f.length=0};let d=o?Math.max(e,s):0+i;if(t.length==1&&Ss(t[0]))return[{location:d,size:0}];for(let p=0;p<t.length;p++){const g=t[p];if(Ss(g))f.push(g);else{h(l.length>0);const m=Fi(g.px)+(a?Fi(g.grow)/a*c:0);o&&(d-=m),l.push({location:u(d),size:u(m)}),o?d-=n:d+=m+n}}return d+=o?n:-n,h(!1),l}function SC(t,{spacing:e}={spacing:0}){let n=0;for(const r of t)n+=Fi(r.px)+(Ss(r)?0:e);return Math.max(0,n-e)}class on{constructor(e,n){this.width=e,this.height=n}addPadding(e){return new on({px:(this.width.px||0)+e.width,grow:this.width.grow},{px:(this.height.px||0)+e.height,grow:this.height.grow})}}const _p=Object.freeze({px:0,grow:0}),Yp=new on(_p,_p);function Ss(t){return!t.px&&!t.grow}function Fi(t){return t||0}function CC(t){return t&&(ae(t.px)||ae(t.grow))}function Lu(t){if(Zp(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(CC(t))return t;if(ae(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}`)}function DC(t,e,n){return{get location(){const r=n();switch(r){case 0:return t.location;case 1:return e.location;default:return r*e.location+(1-r)*t.location}},get size(){const r=n();switch(r){case 0:return t.size;case 1:return e.size;default:return r*e.size+(1-r)*t.size}}}}function MC(t,e){const n=ae(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function IC(t,e){const n=ae(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function Wp(t,e){return e>=t.location&&e<t.location+t.size}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)}static createFromConfig(e){return typeof e=="number"?this.createUniformPadding(e):e?this.createFromRecord(e):ku}static createFromRecord(e){return new Je(e.top,e.right,e.bottom,e.left)}static zero(){return ku}static createUniformPadding(e){return new Je(e,e,e,e)}}const ku=Je.createUniformPadding(0);Object.freeze(ku);const TC=/^([A-Za-z]+:)?\/\//;function NC(t,e){if(e&&TC.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const gr="VISIT_SKIP",kn="VISIT_STOP",Xp=t=>t;class qp{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={},Pp(this),this.opacityFunction=Xp}getPadding(){return this._cache("size/padding",()=>Je.createFromConfig(this.spec.padding))}getEffectivePadding(){return this.getPadding()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):Yp)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(Zp(r)){const s=r.step,a=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(a){let c=0;if(Xt(a.type))c=a.domain().length;else if(["locus","index"].includes(a.type)){const f=a.domain();c=pe(f)-f[0]}else throw new Error(`Cannot use step-based size with "${a.type}" scale!`);const u=a;return c=Cc(c,u.paddingInner(),u.paddingOuter()),{px:c*s,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(o=r&&Lu(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new on(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!==kn)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===Xp)&&(this.opacityFunction=kC(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(e){const n=this.parent?this.parent.getEncoding(this):{},r=this.spec.encoding||{},i=T(T({},n),r);for(const[o,s]of Object.entries(i))s===null&&delete i[o];return i}getFacetAccessor(e){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return Mn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=nr(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 NC(()=>{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}_cache(e,n){return pr(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":ki(this,e);break;case"ancestors":for(const r of this.getAncestors())ki(r,e);break;case"progeny":this.visit(r=>ki(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}}function LC(t){return"unitsPerPixel"in t}function kC(t){const e=t.spec.opacity;if(e!==void 0){if(ae(e))return n=>n*e;if(LC(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=yc().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const a=co(r.domain())/1e3;return i(a)*o}}}return n=>n}const Zp=t=>!!(t==null?void 0:t.step);class At extends qp{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===kn)return n;if(n!==gr){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===kn)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 At)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return 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 Cs(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||mr(s)&&mr(a)||mr(s)&&a===!0||s===!0&&ze(a),o=s=>{for(let a in s){const c=s[a];if(!n.includes(a)&&c!==void 0)if(r[a]!==void 0&&!i(r[a],c))console.warn(`Conflicting property ${a} of ${e}: (${JSON.stringify(r[a])} and ${JSON.stringify(s[a])}). Using ${JSON.stringify(r[a])}.`);else{const u=r[a];if(mr(u))mr(c)&&(r[a]=Cs([u,c],a));else if(mr(c)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[a]=Cs([{},c],a)}else r[a]=c}}};for(const s of t)o(s);return r}function mr(t){return ze(t)&&!Array.isArray(t)}/*!
1327
+ `;const pD={left:-1,center:0,right:1},mD={top:-1,middle:0,bottom:1,alphabetic:1};class gD extends oo{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 Yi)this.properties.fitToBand&&fl(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(dD,hD)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ie(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[pD[e.align],mD[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 a=r.text.format?he(r.text.format):u=>u;for(const u of n){const f=a(i(u)),l=re(f)?f:f===null?"":""+f;o+=l&&l.length||0}const s=new zE({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0),buildXIndex:this.properties.buildIndex});s.addBatches(e.facetBatches);const c=s.toArrays();this.rangeMap=c.rangeMap,this.updateBufferInfo(c)}prepareRender(e){super.prepareRender(e);let n=.35;this.properties.logoLetters&&(n/=2),Ie(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/n)}),Or(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>eo(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e,()=>this.rangeMap)}}function ao(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let a=0,s=0;for(const p of t)a+=ns(p.px)+(dl(p)?0:n),s+=ns(p.grow);a-=n;const c=Math.max(0,e-a),u=r!==void 0?p=>Math.round(p*r)/r:p=>p,f=[],l=[],d=p=>{const m=f.length;if(!m)return;const g=(p?n:0)*(o?-1:1);h-=g;for(let y=0;y<m;y++)l.push({location:h+(y+1)/(m+1)*g,size:0});h+=g,f.length=0};let h=o?Math.max(e,a):0+i;if(t.length==1&&dl(t[0]))return[{location:h,size:0}];for(let p=0;p<t.length;p++){const m=t[p];if(dl(m))f.push(m);else{d(l.length>0);const g=ns(m.px)+(s?ns(m.grow)/s*c:0);o&&(h-=g),l.push({location:u(h),size:u(g)}),o?h-=n:h+=g+n}}return h+=o?n:-n,d(!1),l}function yD(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 $f=class{constructor(e,n){Ne(this,Bo);this.width=e,this.height=n}addPadding(e){return xe(this,Bo,rd).call(this,e.width,e.height)}subtractPadding(e){return xe(this,Bo,rd).call(this,-e.width,-e.height)}};let qn=$f;Bo=new WeakSet,rd=function(e,n){var r,i;return new $f({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 so=Object.freeze({px:0,grow:0}),vD=new qn(so,so);function dl(t){return!t.px&&!t.grow}function ns(t){return t||0}function bD(t){return t&&(le(t.px)||le(t.grow))}function AD(t){if(Fm(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(bD(t))return t;if(le(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}`)}function xD(t,e,n){return{get location(){const r=n();switch(r){case 0:return t.location;case 1:return e.location;default:return r*e.location+(1-r)*t.location}},get size(){const r=n();switch(r){case 0:return t.size;case 1:return e.size;default:return r*e.size+(1-r)*t.size}}}}function wD(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function CD(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function Bm(t,e){return e>=t.location&&e<t.location+t.size}class $e{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 $e(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new $e(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new $e(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):hl}static createFromRecord(e){return new $e(e.top,e.right,e.bottom,e.left)}static zero(){return hl}static createUniformPadding(e){return new $e(e,e,e,e)}}const hl=$e.createUniformPadding(0);Object.freeze(hl);const SD=/^([A-Za-z]+:)?\/\//;function ED(t,e){if(e&&SD.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const rs="VISIT_SKIP",zr="VISIT_STOP",Om=t=>t;class Pm{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={},Cm(this),this.opacityFunction=Om,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>$e.createFromConfig(this.spec.padding))}getOverhang(){return $e.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):vD)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(Fm(r)){const a=r.step,s=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(s){let c=0;if(nn(s.type))c=s.domain().length;else if(["locus","index"].includes(s.type)){const f=s.domain();c=ze(f)-f[0]}else throw new Error(`Cannot use step-based size with "${s.type}" scale!`);const u=s;return c=uu(c,u.paddingInner(),u.paddingOuter()),{px:c*a,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(o=r&&AD(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new qn(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!==zr)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===Om)&&(this.opacityFunction=MD(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.parent&&!this.blockEncodingInheritance?this.parent.getEncoding():{},n=this.spec.encoding||{},r=T(T({},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 Vn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=Er(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 ED(()=>{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 re(e)?e:e.text}_cache(e,n){return Fr(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":no(this,e);break;case"ancestors":for(const r of this.getAncestors())no(r,e);break;case"progeny":this.visit(r=>no(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function DD(t){return"unitsPerPixel"in t}function MD(t){const e=t.spec.opacity;if(e!==void 0){if(le(e))return n=>n*e;if(DD(e)){const n=o=>{var s;const a=(s=t.getScaleResolution(o))==null?void 0:s.getScale();if(["linear","index","locus"].includes(a==null?void 0:a.type))return a},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=tu().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const s=Xo(r.domain())/1e3;return i(s)*o}}}return n=>n}const Fm=t=>!!(t!=null&&t.step);class Kn extends Pm{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!==rs){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}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 is(t,e,n){if(n=n||[],t.some(a=>a===null)){if(t.every(a=>a===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(a,s)=>a===s||Rr(a)&&Rr(s)||Rr(a)&&s===!0||a===!0&&Ge(s),o=a=>{for(let s in a){const c=a[s];if(!n.includes(s)&&c!==void 0)if(r[s]!==void 0&&!i(r[s],c))console.warn(`Conflicting property ${s} of ${e}: (${JSON.stringify(r[s])} and ${JSON.stringify(a[s])}). Using ${JSON.stringify(r[s])}.`);else{const u=r[s];if(Rr(u))Rr(c)&&(r[s]=is([u,c],s));else if(Rr(c)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[s]=is([{},c],s)}else r[s]=c}}};for(const a of t)o(a);return r}function Rr(t){return Ge(t)&&!Array.isArray(t)}/*!
1532
1328
  * Adapted from vega-encode:
1533
1329
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
1534
1330
  *
@@ -1536,7 +1332,7 @@ void main() {
1536
1332
  * All rights reserved.
1537
1333
  *
1538
1334
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
1539
- */function Kp(t,e,n){return ae(e)&&n!=null&&(e=Math.min(e,~~(co(t.domain())/n)||1)),ze(e)&&(e=e.interval),e}function Jp(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(et(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],et(e)];e.length>n&&e.length>=3;)e=e.filter(function(a,c){return!(c%2)});e.length<3&&(e=s)}return e}function OC(t,e){return t.bins?Jp(t,BC(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function BC(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function PC(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?Le(n):String;if(Id(t.type)){var i=zC(n);r=t.bins?i:FC(r,i)}return r}function FC(t,e){return function(n){return t(n)?e(n):""}}function zC(t){var e=No(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return RC(Le(e),Le(".1f")(1)[1])}else return Le(e)}function RC(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,s;if(i<0)return r;for(o=UC(r,i),s=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function UC(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}/*!
1335
+ */function zm(t,e,n){return le(e)&&n!=null&&(e=Math.min(e,~~(Xo(t.domain())/n)||1)),Ge(e)&&(e=e.interval),e}function Rm(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(nt(r));if(i>o&&(r=o,o=i,i=r),e=e.filter(function(s){return s=t(s),i<=s&&s<=o}),n>0&&e.length>1){for(var a=[e[0],nt(e)];e.length>n&&e.length>=3;)e=e.filter(function(s,c){return!(c%2)});e.length<3&&(e=a)}return e}function TD(t,e){return t.bins?Rm(t,ID(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function ID(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function kD(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?he(n):String;if(E0(t.type)){var i=LD(n);r=t.bins?i:ND(r,i)}return r}function ND(t,e){return function(n){return t(n)?e(n):""}}function LD(t){var e=Wt(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return BD(he(e),he(".1f")(1)[1])}else return he(e)}function BD(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,a;if(i<0)return r;for(o=OD(r,i),a=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function OD(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}/*!
1540
1336
  * Adapted from vega-encode:
1541
1337
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
1542
1338
  *
@@ -1544,130 +1340,96 @@ void main() {
1544
1340
  * All rights reserved.
1545
1341
  *
1546
1342
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
1547
- */const jC="locus",GC="index";var HC=5;function QC(t){const e=t.type;return!t.bins&&(e===qn||e===Jr||e===$r)}function $p(t){return nt(t)&&![ht,GC,jC].includes(t)}function eg(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var VC=lo(["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 tg(t,e,n){n=eg(n);for(const r in t)if(!VC[r]){if(r==="padding"&&$p(e.type))continue;Te(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}JC(e,t,KC(e,t,XC(e,t,n)))}function _C(t,e){const n=YC(t),r=W(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return tg(t,i,e),i}function YC(t){var e=t.type,n="",r;return e===ht?ht+"-"+qn:(WC(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?ht+"-":r===3?Zn+"-":""),(n+e||qn).toLowerCase())}function WC(t){const e=t.type;return nt(e)&&e!==xd&&e!==vd&&(t.scheme||t.range&&t.range.length&&t.range.every(oe))}function XC(t,e,n){if(!t.domain)return 0;n=eg(n);var r=qC(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,s=e.zero||e.zero===void 0&&QC(t),a,c;return i?($p(o)&&e.padding&&i[0]!==et(i)&&(i=ZC(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&&(c=e.domainMid,(c<i[0]||c>i[a])&&n.warn("Scale domainMid exceeds domain min or max.",c),i.splice(a,0,c))),t.domain(ng(o,i,n)),o===Mc&&t.unknown(e.domainImplicit?Wa:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&Kp(t,e.nice)||null),i.length):0}function qC(t,e,n){return e?(t.domain(ng(t.type,e,n)),e.length):-1}function ZC(t,e,n,r,i,o){var s=Math.abs(et(n)-n[0]),a=s/(s-2*r),c=t===Wt?rf(e,null,a):t===$r?ra(e,null,a,.5):t===Jr?ra(e,null,a,i||1):t===Go?vy(e,null,a,o||1):so(e,null,a);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function ng(t,e,n){if(Id(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: "+uo(e))}return e}function KC(t,e,n){let r=e.bins;if(r&&!_e(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,s=r.stop==null?et(i):r.stop,a=r.step;a||re("Scale bins parameter missing step property."),r=Mo(o,s+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===Tc&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function JC(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=$C(r,e,n);else if(e.scheme&&(o=eD(r,e,n),Te(o))){if(t.interpolator)return t.interpolator(o);re(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&Qo(r))return t.interpolator(Vo(Ou(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(Td(e.interpolate,e.interpolateGamma)):Te(t.round)?t.round(i):Te(t.rangeRound)&&t.interpolate(i?Zr:_t),o&&t.range(Ou(o,e.reverse))}function $C(t,e,n){t!==Sd&&t!==Ic&&re("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===Ic?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*Cc(n,i,r)]}function eD(t,e,n){var r=e.schemeExtent,i,o;return _e(e.scheme)?o=Vo(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=Lc(i),o||re(`Unrecognized scheme name: ${e.scheme}`)),n=t===Ed?n+1:t===Tc?n-1:t===Dc||t===wd?+e.schemeCount||HC:n,Qo(t)?rg(o,r,e.reverse):Te(o)?Bx(rg(o,r),n):t===Mc?o:o.slice(0,n)}function rg(t,e,n){return Te(t)&&(e||n)?Ox(t,Ou(e||[0,1],n)):t}function Ou(t,e){return e?t.slice().reverse():t}const Bu=Le(",d");function tD(t){return t.chrom+":"+Bu(Math.floor(t.pos+1))}function nD(t,e){return t.chrom+":"+Bu(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+Bu(Math.ceil(e.pos))}const rD="https://genomespy.app/data/genomes/";class iD{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=rD;try{this.setChromSizes(oD(await _r({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=F(T({},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=rb(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 nD(...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],i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),s=parseInt(n[4].replace(/,/g,""));return[this.toContinuous(r,o-1),this.toContinuous(i,s)]}}}function oD(t){return jy(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function ig(t){return ze(t)&&"chrom"in t}function sD(t){return t.every(ig)}class zi extends Array{constructor(){super();this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof zi&&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 Pu extends zi{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 og extends zi{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 sg extends og{constructor(){super();this.type="nominal"}}class aD extends zi{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 ag={quantitative:Pu,index:Pu,locus:Pu,nominal:sg,ordinal:og};function cg(t,e){if(t=="quantitative"&&cD(e)){const n=new aD(e);return n.type=t,n}else if(ag[t]){const n=new ag[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function cD(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function ug(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function uD(t){return--t*t*t+1}function lD(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function fD(t){return 1-lD(t)}const lg="quantitative",Fu="ordinal",zu="nominal",Ru="locus",hD="index";class dD{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=Hc(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&&!Ai(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 pr(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Hc(n.view,n.channel).scale).filter(n=>n!==void 0);return Cs(e,"scale",["domain"])})}getScaleProps(){return pr(this,"scaleProps",()=>{var i,o;const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n=T(T({},this._getDefaultScaleProperties(this.type)),e);n.type||(n.type=pD(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Xt(n.type)&&(n.domain=new sg),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),n.type==Ru&&!("fp64"in n)&&(n.fp64=!0),this.channel=="y"&&Xt(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),gD(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==Ru?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>Ai(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>Ai(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){Bp(this,"scaleProps");const e=this.getScaleProps();tg(e,this._scale),nt(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=_C(e);return this._scale=n,Eb(n)&&n.genome(this.getGenome()),n.fp64=!!e.fp64,nt(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()&&Qd(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!i0(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];const a=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),i.type){case"linear":case"index":case"locus":s=Ay(s,r||0),s=so(s,a,e);break;case"log":s=by(s,r||0),s=rf(s,a,e);break;case"pow":case"sqrt":{const c=i;s=xy(s,r||0,c.exponent()),s=ra(s,a,e,c.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(s=wy(s,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(c=>s[c]!=o[c])?(i.domain(s),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var a;if(ao(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 c=s[1]-s[0],u=s[0]+c/2,f=r[1]-r[0],l=r[0]+f/2,h=qh([u,0,c],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*h.duration,easingFunction:ug,onUpdate:d=>{const[p,,g]=h(d);o.domain([p-g/2,p+g/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}getZoomLevel(){return this.isZoomable()?co(this._zoomExtent)/co(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(mD(n)&&_e(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),yi(n)?r.nice=!this.isExplicitDomain():In(n)?r.scheme=e==zu?"tableau10":e==Fu?"blues":"viridis":Jo(n)?r.range=s0(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 ig(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&sD(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 pD(t,e){if(e==hD||e==Ru){if(i0(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][[zu,Fu,lg].indexOf(e)]:e==lg?"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 gD(t,e){yi(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&nt(t.type)&&(t.clamp=!0)}function mD(t){return ze(t)}function Uu(...t){for(const e of t)if(e!==void 0)return e}class yD{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=pe(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 pr(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:Cs(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var a;const s=Hc(o.view,o.channel);if(!Ze(s))return{member:o,explicitTitle:Uu((a=s.axis)==null?void 0:a.title,s.title),implicitTitle:Uu(Mn(s)?s.field:void 0,Qc(s)?s.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var s;if(Ai(o.member.channel)&&!o.explicitTitle){const a=nr(o.member.channel);return((s=n.find(c=>c.member.view==o.member.view&&c.member.channel==a))==null?void 0:s.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>Uu(o.explicitTitle,o.implicitTitle)).filter(oe));return i.size?[...i].join(", "):null}}class fg extends qp{constructor(e,n,r,i){super(e,n,r,i);this.spec=e}}class Ri extends At{constructor(e,n,r,i){super(e,n,r,i);this.spec=e,this.children=(e.layer||[]).map((o,s)=>{if(Gu(o)||ju(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()){n=n.shrink(this.getPadding()),e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}}function Lt(t){return()=>t}class bt{static create(e,n,r,i){return new bt(Lt(e),Lt(n),Lt(r),Lt(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"?Lt(i):typeof i=="function"?i:this._passThrough(r)};return new bt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new bt(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 bt(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 bt(()=>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 bt(Lt(this.x),Lt(this.y),Lt(this.width),Lt(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}}}class yr extends At{constructor(e,n,r,i){super(e,n,r,i);this.spec=e,"spacing"in this.spec||(this.spec.spacing=10),this.mainDimension=Hu(e)?"width":"height",this.secondaryDimension=this.mainDimension=="width"?"height":"width";const o=Hu(e)?e.hconcat:pg(e)?e.vconcat:e.concat;this.children=o.map((s,a)=>n.createView(s,this,"concat"+a))}getEffectivePadding(){return this._cache("size/effectivePadding",()=>{const e=this.children.filter(o=>o.isVisible());if(!e.length)return this.getPadding();const n=e.map(o=>o.getEffectivePadding()).map(o=>this.mainDimension=="height"?[o.left,o.right]:[o.top,o.bottom]),r=hg(n),i=this.mainDimension=="height"?new Je(e[0].getEffectivePadding().top,r[1],pe(e).getEffectivePadding().bottom,r[0]):new Je(r[0],e[0].getEffectivePadding().left,r[1],pe(e).getEffectivePadding().right);return this.getPadding().add(i)})}getSize(){return this._cache("size",()=>{let e;if(this.spec[this.mainDimension])e=Lu(this.spec[this.mainDimension]);else{const r=this.children.filter(i=>i.isVisible()).map(i=>i.getSize()[this.mainDimension]);e={grow:r.map(i=>+i.grow).reduce((i,o)=>i+o,0),px:SC(r,{spacing:this.spec.spacing})}}const n=this.spec[this.secondaryDimension]&&Lu(this.spec[this.secondaryDimension])||{grow:1};return(this.mainDimension=="height"?new on(n,e):new on(e,n)).addPadding(this.getPadding())})}render(e,n,r={}){if(!this.isVisible())return;n=n.shrink(this.getPadding()),e.pushView(this,n);const i=this.children.filter(u=>u.isVisible()),o=i.map(u=>u.getSize()[this.mainDimension]),s=Es(o,n[this.mainDimension],{spacing:this.spec.spacing,devicePixelRatio:this.context.glHelper.dpr}),a=i.map(u=>u.getEffectivePadding()).map(u=>this.mainDimension=="height"?[u.left,u.right]:[u.top,u.bottom]),c=hg(a);for(let u=0;u<i.length;u++){const f=i[u],l=s[u],h=c[0]-a[u][0],d=c[1]-a[u][1],p=n[this.secondaryDimension]-h-d,g=this.mainDimension=="height"?new bt(()=>n.x+h,()=>n.y+l.location,()=>p,()=>l.size):new bt(()=>n.x+l.location,()=>n.y+h,()=>l.size,()=>p);f.render(e,g,r)}e.popView(this)}*[Symbol.iterator](){for(const e of this.children)yield e}replaceChild(e,n){const r=this.children.indexOf(e);if(r>=0)this.children[r]=n;else throw new Error("Not my child view!")}addChildBySpec(e){const n=this.children.length,r=this.context.createView(e,this,"concat"+n);return this.children.push(r),r}addChild(e){const n=this.children.length;return e.name||(e.name="concat"+n),e.parent=this,this.children.push(e),e}getDefaultResolution(e,n){return"independent"}}function hg(t){return[0,1].map(e=>t.map(n=>n[e]).reduce((n,r)=>Math.max(n,r),0))}class AD{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(bD,e(fg)),this.addViewType(Gu,e(Ri)),this.addViewType(ju,e(Pe)),this.addViewType(pg,e(yr)),this.addViewType(Hu,e(yr)),this.addViewType(xD,e(yr))}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 ju(t){return"mark"in t&&(oe(t.mark)||ze(t.mark))}function Gu(t){return"layer"in t&&ze(t.layer)}function dg(t){return t&&(ju(t)||Gu(t))&&"aggregateSamples"in t}function bD(t){return"import"in t}function pg(t){return"vconcat"in t&&_e(t.vconcat)}function Hu(t){return"hconcat"in t&&_e(t.hconcat)}function xD(t){return"concat"in t&&_e(t.concat)}const vD={point:lC,rect:iC,rule:dC,link:yC,text:EC};class Pe extends At{constructor(e,n,r,i){super(e,n,r,i);this.spec=e;const o=vD[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()||(n=n.shrink(this.getPadding()),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(!Ke(o))continue;let s=nr((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!yi(s))continue;let a=this;for(;a.parent instanceof At&&["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 dD(s):new yD(s)),yi(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(Ai(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Ke(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 cg((o=n.type)!=null?o:"nominal",s.fromComplexInterval(r))}}extractDataDomain(e){var a;const r=(a=this._validateDomainQuery(e).type)!=null?a:"nominal",i=c=>{let u;const f=this.mark.encoding[c];if(f){const l=this.context.accessorFactory.createAccessor(f);if(l)if(u=cg(r),l.constant)u.extend(l({}));else{const h=this.getCollector();(h==null?void 0:h.completed)&&h.visitData(d=>u.extend(l(d)))}}return u};let o=i(e);const s=Vc[e];if(s){const c=i(s);c&&o.extendAll(c)}return o}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return mi.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(dg(this.spec))for(const r of this.spec.aggregateSamples){r.transform=[...(e=r.transform)!=null?e:[],{type:"mergeFacets"}],r.encoding=F(T({},(n=r.encoding)!=null?n:{}),{sample:null});const i=this.context.createView(r,this,"summaryView");i.getFacetFields=o=>{},this.sampleAggregateViews.push(i)}}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function gg(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 se{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function mg(t){var n,r;const e=T({},t.format);if((n=e.type)!=null||(e.type=CD(t)&&wD(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 wD(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const Ds=t=>typeof t!="object"?ED:SD,ED=t=>({data:t}),SD=t=>t;function CD(t){return"url"in t}function DD(t){return"dynamicCallbackSource"in t}class yg 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=Ds(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const Ag="chromosome_ticks_and_labels",bg={x:"width",y:"height"};function Qu(t){return t=="x"?"y":"x"}const xg=Object.fromEntries(Object.entries({x:["bottom","top"],y:["left","right"]}).map(([t,e])=>e.map(n=>[n,t])).flat(1));function Bn(t){return xg[t]}class Vu extends Ri{constructor(e,n,r,i){const o=n=="locus",s=T(T(T({},o?TD:vg),ID(n,e)),e);super(o?ND(s):wg(s),r,i,`axis_${e.orient}`);if(this.axisProps=s,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new yg(()=>this.ticks),o){const a=Bn(this.axisProps.orient),c=this.getScaleResolution(a).getGenome();this.findChildByName(Ag).getDynamicDataSource=()=>new yg(()=>c.chromosomes)}}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return xg[this.axisProps.orient]=="x"?new on(n,e):new on(e,n)}getPerpendicularSize(){return _u(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=Bn(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(Qd(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=MD(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[bg[Bn(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function _u(t){const e=Bn(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 MD(t,e,n,r=[]){const i=a=>25+60*gg(100,700,a);let o=ae(t.tickCount)?t.tickCount:Math.round(n/i(n));o=Kp(e,o,t.tickMinStep);const s=t.values?Jp(e,t.values,o):OC(e,o);if(qx(s,r,a=>a,a=>a.value))return r;{const a=PC(e,o,t.format);return s.map(c=>({value:c,label:a(c)}))}}const vg={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 ID(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 wg(t){const e=F(T({},t),{extent:_u(t)}),n=Bn(e.orient),r=Qu(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,dynamicData:!0},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label"}}}),c=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300,dynamicData:!0},encoding:{[r]:{value:o},[r+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),u=()=>({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(c()),e.labels&&h.layer.push(a()),h},l={[bg[Qu(Bn(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(u()),l}const TD=F(T({},vg),{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 ND(t){const e=F(T({},t),{extent:_u(t)}),n=Bn(e.orient),r=Qu(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,dynamicData:!0}}),s=()=>{let u;switch(e.orient){case"top":u={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":u={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":u={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":u={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:u={}}return{name:"chromosome_labels",mark:T({type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,dynamicData:!0},u),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 c=wg(T(T({},t),a));if(t.chromTicks||t.chromLabels){const u={name:Ag,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&u.layer.push(o()),t.chromLabels){u.layer.push(s());let f;c.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))}c.layer.push(u)}return c}const LD={x:["bottom","top"],y:["left","right"]};class Yu extends At{constructor(e,n){super({},e,n,"decorator");this.child=void 0,this.backgroundView=void 0,this.axisViews={top:void 0,right:void 0,bottom:void 0,left:void 0},["mousedown","wheel"].forEach(r=>this.addInteractionEventListener(r,this.handleMouseEvent.bind(this)))}initialize(){var n;Object.entries(LD).forEach(([r,i])=>this._initializeAxes(r,i)),this._invalidateCacheByPrefix("size/","ancestors");const e=(n=this.child.spec)==null?void 0:n.view;((e==null?void 0:e.fill)||(e==null?void 0:e.stroke))&&(this.backgroundView=new Pe(kD(e),this.context,this,"background"))}getEncoding(e){return Object.values(this.axisViews).find(n=>e===n)||e==this.backgroundView?{}:super.getEncoding()}getFacetAccessor(e){if(e==this.child&&this.parent)return this.parent.getFacetAccessor(this)}*[Symbol.iterator](){yield this.child,this.backgroundView&&(yield this.backgroundView);for(const e of Object.values(this.axisViews))e&&(yield e)}_getAxisExtents(){return this._cache("size/axisExtents",()=>{const e={};for(const n of Object.values(this.axisViews))n&&(e[n.getOrient()]=n.getPerpendicularSize());return Je.createFromRecord(e)})}_getAxisOffsets(){return this._cache("size/axisOffsets",()=>{const e={};for(const n of Object.values(this.axisViews))n&&(e[n.getOrient()]=n.axisProps.offset);return Je.createFromRecord(e)})}getEffectivePadding(){return this._cache("size/effectivePadding",()=>this.getPadding().add(this._getAxisExtents()))}getSize(){return this._cache("size/size",()=>this.child.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()).addPadding(this.getAxisSizes()):Yp)}getAxisSizes(){return this._cache("size/axisSizes",()=>this._getAxisExtents().add(this._getAxisOffsets()))}render(e,n,r={}){if(!this.isVisible()||!this.child.isVisible())return;n=n.shrink(this.getPadding()),e.pushView(this,n);const i=this._getAxisExtents(),o=n.shrink(i.add(this._getAxisOffsets()));this._childCoords=o,this.backgroundView&&this.backgroundView.render(e,o,r),this.child.render(e,o,r);const s=this._cache("axisViewEntries",()=>Object.entries(this.axisViews).filter(a=>!!a[1]));for(const[a,c]of s){const u=c.axisProps;let f;a=="bottom"?f=o.translate(0,o.height+u.offset).modify({height:i.bottom}):a=="top"?f=o.translate(0,-i.top-u.offset).modify({height:i.top}):a=="left"?f=o.translate(-i.left-u.offset,0).modify({width:i.left}):a=="right"&&(f=o.translate(o.width+u.offset,0).modify({width:i.right})),c.render(e,f)}e.popView(this)}_getResolutionParticipants(){return[...this.getAncestors(),...AM(this.child)]}_initializeAxes(e,n){const r=this._getResolutionParticipants().map(i=>i.resolutions.axis[e]).filter(i=>i);for(const i of r){const o=i.getAxisProps();if(o&&o.orient){if(!n.includes(o.orient))throw new Error(`Invalid axis orientation for '${e}' channel: ${o.orient}`);if(this.axisViews[o.orient])throw new Error(`The slot for ${o.orient} axis is already reserved!`);this.axisViews[o.orient]=new Vu(F(T({},o),{title:i.getTitle()}),i.scaleResolution.type,this.context,this)}}e:for(const i of r){const o=i.getAxisProps();if(o&&!o.orient){for(const s of n)if(!this.axisViews[s]){o.orient=s,this.axisViews[s]=new Vu(F(T({},o),{title:i.getTitle()}),i.scaleResolution.type,this.context,this);continue e}throw new Error("No room for axes. All slots are already reserved.")}}}handleMouseEvent(e,n){if(!!this.isZoomable()){if(n.type=="wheel"){n.uiEvent.preventDefault();const r=n.uiEvent,i=r.deltaMode?120:1;let{x:o,y:s}=n.point;const a=this.context.getCurrentHover();if(a){const c=e.shrink(this.getEffectivePadding()),u=a.mark.encoders;u.x&&!u.x2&&(o=+u.x(a.datum)*c.width+c.x),u.y&&!u.y2&&(s=(1-+u.y(a.datum))*c.height+c.y)}Math.abs(r.deltaX)<Math.abs(r.deltaY)?this._handleZoom(e,{x:o,y:s,xDelta:0,yDelta:0,zDelta:r.deltaY*i/300}):this._handleZoom(e,{x:o,y:s,xDelta:-r.deltaX*i,yDelta:0,zDelta:0})}else if(n.type=="mousedown"&&n.uiEvent.button===0){const r=n.uiEvent;r.preventDefault();let i=r;const o=a=>{this._handleZoom(e,{x:i.clientX,y:i.clientY,xDelta:a.clientX-i.clientX,yDelta:a.clientY-i.clientY,zDelta:0}),i=a},s=a=>{document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",s)};document.addEventListener("mouseup",s,!1),document.addEventListener("mousemove",o,!1)}}}isZoomable(){return this._cache("zoomable",()=>Object.values(this._getZoomableResolutions()).some(e=>e.size))}_getZoomableResolutions(){return this._cache("zoomableResolutions",()=>{const e={x:new Set,y:new Set};return this.child.visit(n=>{for(const[r,i]of Object.entries(e)){const o=n.getScaleResolution(r);o&&o.isZoomable()&&i.add(o)}}),e})}_handleZoom(e,n){for(const[r,i]of Object.entries(this._getZoomableResolutions())){if(i.size<=0)continue;const o=this._getAxisExtents(),s=e.shrink(o.add(this._getAxisOffsets())),a=s.normalizePoint(n.x,n.y),c=s.normalizePoint(n.x+n.xDelta,n.y+n.yDelta),u={x:c.x-a.x,y:c.y-a.y};for(const f of i)f.zoom(2**n.zDelta,r=="y"?1-a[r]:a[r],r=="x"?u.x:-u.y)}this.context.animator.requestRender()}}function kD(t){return{configurableVisibility:!1,data:{values:[{}]},mark:F(T({fill:null,strokeWidth:1},t),{type:"rect",clip:!1,tooltip:null})}}function*Wu(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of Wu(r,[...e,n]))yield i;else yield[[...e,n],r]}class Ui extends se{constructor(e){super();this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new So([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){cC(e)&&(this._data=[],this.facetBatches.set(qe(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?of(e.field,e.order):void 0,r=s=>{n&&s.sort(n)};if((o=this.params.groupby)==null?void 0:o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const s=this.params.groupby.map(c=>Z(c)),a=Do(this._data,...s);this.facetBatches.clear();for(const[c,u]of Wu(a))this.facetBatches.set(c,u)}for(const s of this.facetBatches.values())r(s);if(this.children.length)for(const s of this.facetBatches.values())for(const a of s)this._propagate(a);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 ji{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(this.ids[r]=e,this.values[r]=n;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 c=this.ids[s],u=this.values[s];const f=this.values[a];if(a<this.length&&f<u&&(s=a,c=this.ids[a],u=f),u>=r)break;this.ids[o]=c,this.values[o]=u,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]}}class OD extends se{get behavior(){return Nt}constructor(e){super();this.params=e,this.startAccessor=Z(e.start),this.endAccessor=Z(e.end),this.chromAccessor=e.chrom?Z(e.chrom):n=>{},this.weightAccessor=e.weight?Z(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 ji}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 c,u,f,l=0,h;const d=this.ends;d.clear();const p=(m,y,x)=>{if(m==y)return;let v=!1;c&&(c[e]===x?(c[n]=y,v=!0):c[e]!=0&&this._propagate(c)),v||(c=this.createSegment(m,y,x,f))},g=()=>{let m;for(;(m=d.peekValue())!==void 0;)p(h,m,l),h=m,l-=d.pop();h=void 0,c&&(this._propagate(c),c=void 0)};this.handle=m=>{const y=i(m);let x;for(;(x=d.peekValue())!==void 0&&x<y;)p(h,x,l),h=x,l-=d.pop();if(r){let S=s(m);S!==u&&(g(),f=S,u=f)}h!==void 0&&p(h,y,l),h=y;const v=a(m);l+=v,d.push(v,o(m))},this.complete=()=>{g(),super.complete()}}}function BD(t,e,n=0,r=t.length){const i=new ji,o=r-n;let s;for(s=0;s<e&&s<o;s++)i.push(s,t[n+s]);for(;s<o;s++){const u=t[n+s];u>=i.peekValue()&&(i.push(s,u),i.pop())}const a=[];let c;for(;(c=i.pop())!==void 0;)a.push(n+c);return a.reverse()}class PD{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 FD extends se{constructor(e,n){super();var i,o;if(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=Z(this.params.pos),this.posBisector=Eo(this.posAccessor),this.scoreAccessor=Z(this.params.score),this.widthAccessor=Z(this.params.width),this.laneAccessor=this.params.lane?Z(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 PD(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=BD(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const a of o){const c=this._data[a],u=e(this.posAccessor(c))*n,f=this.widthAccessor(c)/2+this.padding;this.reservationMaps.get(this.laneAccessor(c)).reserve(u-f,u+f)&&this._propagate(c)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class zD extends se{constructor(e){super();this.params=e,this.predicate=void 0}initialize(){this.predicate=Gc(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const RD="0".charCodeAt(0);function*UD(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-RD}yield r}class jD extends se{get behavior(){return Nt}constructor(e){super();var s,a;const n=Z((s=e.exons)!=null?s:"exons"),r=Z((a=e.start)!=null?a:"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=c=>{let u=r(c),f=u,l=!0;const h=n(c);for(const d of UD(h)){if(l)f=u+d;else{u=f+d;const p=Object.assign({},c);p[i]=f,p[o]=u,this._propagate(p)}l=!l}}}}class GD extends se{get behavior(){return Nt}constructor(e){super();const n=qe(e.field).map(o=>Z(o)),r=qe(e.separator),i=qe(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(c=>!c(o)))return;const s=n.map((c,u)=>c(o).split(r[u]));HD(s,o);const a=s[0].length;for(let c=0;c<a;c++){const u=Object.assign({},o);for(let f=0;f<n.length;f++)u[i[f]]=s[f][c];this._propagate(u)}}}}function HD(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 QD extends se{get behavior(){return rn}constructor(e){super();this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=Gc(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class Eg extends se{get behavior(){return rn}constructor(e,n){super();var p;const r=(p=e.channel)!=null?p:"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=Z(e.chrom),s=qe(e.pos).map(g=>Z(g)),a=qe(e.as);if(s.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=qe(e.offset);let u;if(c.length==0)u=new Array(s.length).fill(0);else if(c.length==1)u=new Array(s.length).fill(c[0]);else if(c.length==s.length)u=c;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",a.map((g,m)=>`datum[${JSON.stringify(g)}] = chromOffset + +posAccessors[${m}](datum) - ${u[m]};`).join(`
1548
- `));let l,h=0;const d=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,d(o(g)),s),this._propagate(g)}}}var Sg={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 VD extends se{get behavior(){return rn}constructor(e){super();const n=Iu(Sg),r=Z(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 _D=65536;class YD extends se{get behavior(){return rn}constructor(e){super();this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=ae(e.spacing)?e.spacing:1,i=Z(e.start),o=Z(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const s=new Float64Array(_D),a=Z(e.preference),c=e.preferredOrder;let u=1/0;this.handle=f=>{const l=i(f);l<u&&s.fill(-1/0),u=l;const h=c.indexOf(a(f));let d=-1;if(h>=0&&s[h]<l)d=h;else{const p=i(f);for(d=0;d<s.length&&!(s[d]<p);d++);if(d>=s.length)throw new Error("Out of lanes!")}s[d]=o(f)+r,f[n]=d,this._propagate(f)}}else{const s=new ji,a=new ji;let c=-1/0,u=0;this.handle=f=>{const l=i(f);for(;s.length&&(s.peekValue()<=l||l<c);){const d=s.pop();a.push(d,d)}c=l;let h=a.pop();h===void 0&&(h=u++),f[n]=h,this._propagate(f),s.push(h,o(f)+r)}}}}class WD extends se{get behavior(){return Nt}constructor(e){super();if(e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>Z(i)),r=e.as?e.as:n.map(be);this.handle=i=>{const o={};for(let s=0;s<n.length;s++)o[r[s]]=n[s](i);this._propagate(o)}}}class XD extends se{get behavior(){return rn}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=Z(e.field);this.handle=o=>{const s=i(o);if(oe(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 c=0;c<r.length;c++)o[r[c]]=a[c+1]}else if(e.skipInvalidInput)for(let c=0;c<r.length;c++)o[r[c]]=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 qD extends se{get behavior(){return Nt}constructor(e){super();const n=qe(e.columnRegex).map(h=>new RegExp(h)),r=qe(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,c;const u=h=>{var m;const d=Object.keys(h),p=new Map;for(const[y,x]of n.entries())for(const v of d){const S=(m=x.exec(v))==null?void 0:m[1];if(S!==void 0){let b=p.get(S);b||(b=[],p.set(S,b)),b[y]=v}}s=[...p.entries()],a=d.filter(y=>!n.some(x=>x.test(y))&&!(i&&i.test(y)));const g=[...a.map(y=>JSON.stringify(y)+": datum["+JSON.stringify(y)+"]"),JSON.stringify(o)+": sampleId",...r.map(y=>JSON.stringify(y)+": null")];c=new Function("datum","sampleId",`return {
1549
- `+g.join(`,
1343
+ */const PD="locus",FD="index";var zD=5;function RD(t){const e=t.type;return!t.bins&&(e===vr||e===Mi||e===Ti)}function jm(t){return ot(t)&&![gt,FD,PD].includes(t)}function Um(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var jD=qo(["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 Gm(t,e,n){n=Um(n);for(const r in t)if(!jD[r]){if(r==="padding"&&jm(e.type))continue;Oe(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}WD(e,t,_D(e,t,QD(e,t,n)))}function UD(t,e){const n=GD(t),r=q(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return Gm(t,i,e),i}function GD(t){var e=t.type,n="",r;return e===gt?gt+"-"+vr:(HD(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?gt+"-":r===3?br+"-":""),(n+e||vr).toLowerCase())}function HD(t){const e=t.type;return ot(e)&&e!==y0&&e!==v0&&(t.scheme||t.range&&t.range.length&&t.range.every(re))}function QD(t,e,n){if(!t.domain)return 0;n=Um(n);var r=VD(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,a=e.zero||e.zero===void 0&&RD(t),s,c;return i?(jm(o)&&e.padding&&i[0]!==nt(i)&&(i=YD(o,i,e.range,e.padding,e.exponent,e.constant)),(a||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(s=(i=i.slice()).length-1||1,a&&(i[0]>0&&(i[0]=0),i[s]<0&&(i[s]=0)),e.domainMin!=null&&(i[0]=e.domainMin),e.domainMax!=null&&(i[s]=e.domainMax),e.domainMid!=null&&(c=e.domainMid,(c<i[0]||c>i[s])&&n.warn("Scale domainMid exceeds domain min or max.",c),i.splice(s,0,c))),t.domain(Hm(o,i,n)),o===fu&&t.unknown(e.domainImplicit?Lc:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&zm(t,e.nice)||null),i.length):0}function VD(t,e,n){return e?(t.domain(Hm(t.type,e,n)),e.length):-1}function YD(t,e,n,r,i,o){var a=Math.abs(nt(n)-n[0]),s=a/(a-2*r),c=t===tn?ld(e,null,s):t===Ti?Zs(e,null,s,.5):t===Mi?Zs(e,null,s,i||1):t===xa?Z2(e,null,s,o||1):_o(e,null,s);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function Hm(t,e,n){if(E0(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: "+Zo(e))}return e}function _D(t,e,n){let r=e.bins;if(r&&!Xe(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,a=r.stop==null?nt(i):r.stop,s=r.step;s||ce("Scale bins parameter missing step property."),r=_t(o,a+s,s)}return r?t.bins=r:t.bins&&delete t.bins,t.type===hu&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function WD(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=XD(r,e,n);else if(e.scheme&&(o=ZD(r,e,n),Oe(o))){if(t.interpolator)return t.interpolator(o);ce(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&Ca(r))return t.interpolator(Sa(pl(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(D0(e.interpolate,e.interpolateGamma)):Oe(t.round)?t.round(i):Oe(t.rangeRound)&&t.interpolate(i?Ei:$t),o&&t.range(pl(o,e.reverse))}function XD(t,e,n){t!==x0&&t!==du&&ce("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===du?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*uu(n,i,r)]}function ZD(t,e,n){var r=e.schemeExtent,i,o;return Xe(e.scheme)?o=Sa(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=mu(i),o||ce(`Unrecognized scheme name: ${e.scheme}`)),n=t===A0?n+1:t===hu?n-1:t===lu||t===b0?+e.schemeCount||zD:n,Ca(t)?Qm(o,r,e.reverse):Oe(o)?_x(Qm(o,r),n):t===fu?o:o.slice(0,n)}function Qm(t,e,n){return Oe(t)&&(e||n)?Yx(t,pl(e||[0,1],n)):t}function pl(t,e){return e?t.slice().reverse():t}const ml=he(",d");function qD(t){return t.chrom+":"+ml(Math.floor(t.pos+1))}function KD(t,e){return t.chrom+":"+ml(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+ml(Math.ceil(e.pos))}const JD="https://genomespy.app/data/genomes/";class $D{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=JD;try{this.setChromSizes(eM(await xi({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=U(T({},e[r]),{continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)});this.chromosomes.push(o);const a=o.name.replace(/^chr/i,"");for(const s of["chr"+a,"CHR"+a,"Chr"+a,o.number,""+o.number,a,o.name])this.cumulativeChromPositions.set(s,n),this.chromosomesByName.set(s,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=lr(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 KD(...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,a;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,(i=n.pos)!=null?i:0),this.toContinuous(r.chrom,(a=r.pos)!=null?a:(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(s=>s===void 0)){const s=this.getChromosome(r);return s?[s.continuousStart,s.continuousEnd]:void 0}const i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),a=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):o;return[this.toContinuous(r,o-1),this.toContinuous(i,a)]}}}function eM(t){return pv(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function Vm(t){return Ge(t)&&"chrom"in t}function tM(t){return t.every(Vm)}class co extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof co&&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 gl extends co{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 Ym extends co{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 _m extends Ym{constructor(){super(),this.type="nominal"}}class nM extends co{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 Wm={quantitative:gl,index:gl,locus:gl,nominal:_m,ordinal:Ym};function Xm(t,e){if(t=="quantitative"&&rM(e)){const n=new nM(e);return n.type=t,n}else if(Wm[t]){const n=new Wm[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function rM(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function Zm(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function iM(t){return--t*t*t+1}function oM(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function aM(t){return 1-oM(t)}const qm="quantitative",yl="ordinal",vl="nominal",Km="locus",sM="index";class cM{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 a;const r=Du(e,n),i=r.type,o=(a=r==null?void 0:r.scale)==null?void 0:a.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&&!Wi(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 Fr(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Du(n.view,n.channel).scale).filter(n=>n!==void 0);return is(e,"scale",["domain"])})}getScaleProps(){return Fr(this,"scaleProps",()=>{var i,o;const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n=T(T({},this._getDefaultScaleProperties(this.type)),e);n.type||(n.type=uM(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:nn(n.type)&&(n.domain=new _m),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),this.channel=="y"&&nn(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),lM(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==Km?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>Wi(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>Wi(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){wm(this,"scaleProps");const e=this.getScaleProps();Gm(e,this._scale),ot(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=UD(e);return this._scale=n,BA(n)&&n.genome(this.getGenome()),ot(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()&&U0(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!tp(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 a=[...o],s=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(s+=i.align()),i.type){case"linear":case"index":case"locus":a=_2(a,r||0),a=_o(a,s,e);break;case"log":a=W2(a,r||0),a=ld(a,s,e);break;case"pow":case"sqrt":{const c=i;a=X2(a,r||0,c.exponent()),a=Zs(a,s,e,c.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(a=q2(a,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(c=>a[c]!=o[c])?(i.domain(a),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var s;if(Wo(n)&&(n=n?700:0),!this.isZoomable())throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(e),i=(s=this.members[0])==null?void 0:s.view.context.animator,o=this.getScale(),a=o.domain();if(n>0&&a.length==2){const c=a[1]-a[0],u=a[0]+c/2,f=r[1]-r[0],l=r[0]+f/2,d=_h([u,0,c],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*d.duration,easingFunction:Zm,onUpdate:h=>{const[p,,m]=d(h);o.domain([p-m/2,p+m/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}getZoomLevel(){return this.isZoomable()?Xo(this._zoomExtent)/Xo(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(fM(n)&&Xe(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),_i(n)?r.nice=!this.isExplicitDomain():Yn(n)?r.scheme=e==vl?"tableau10":e==yl?"blues":"viridis":La(n)?r.range=rp(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 Vm(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&tM(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 uM(t,e){if(e==sM||e==Km){if(tp(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][[vl,yl,qm].indexOf(e)]:e==qm?"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 lM(t,e){_i(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&ot(t.type)&&(t.clamp=!0)}function fM(t){return Ge(t)}function bl(...t){for(const e of t)if(e!==void 0)return e}class dM{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=ze(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 Fr(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:is(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var s;const a=Du(o.view,o.channel);if(!st(a))return{member:o,explicitTitle:bl((s=a.axis)==null?void 0:s.title,a.title),implicitTitle:bl(Vn(a)?a.field:void 0,Mu(a)?a.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var a;if(Wi(o.member.channel)&&!o.explicitTitle){const s=Er(o.member.channel);return((a=n.find(c=>c.member.view==o.member.view&&c.member.channel==s))==null?void 0:a.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>bl(o.explicitTitle,o.implicitTitle)).filter(re));return i.size?[...i].join(", "):null}}class Jm extends Pm{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class Ot extends Kn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,a)=>{if(Sl(o)||Cl(o))return n.createView(o,this,"layer"+a);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 $m{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 a=0;a<n;a++){const s=i*n+a;s<this.n&&o.push(s)}}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 a=0;a<r;a++){const s=a*n+i;s<this.n&&o.push(s)}}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 Pt(t){return()=>t}const Yt=class{static create(e,n,r,i){return new Yt(Pt(e),Pt(n),Pt(r),Pt(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"?Pt(i):typeof i=="function"?i:this._passThrough(r)};return new Yt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new Yt(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 Yt(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 Yt(()=>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 Yt(Pt(this.x),Pt(this.y),Pt(this.width),Pt(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 hn=Yt;P2(hn,"ZERO",Yt.create(0,0,0,0));function eg(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class Jn extends ue{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function tg(t){var n,r;const e=T({},t.format);if((n=e.type)!=null||(e.type=gM(t)&&hM(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 hM(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const os=t=>typeof t!="object"?pM:mM,pM=t=>({data:t}),mM=t=>t;function gM(t){return"url"in t}function yM(t){return"dynamicCallbackSource"in t}class ng extends Jn{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=os(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const rg="chromosome_ticks_and_labels",ig={x:"width",y:"height"};function Al(t){return t=="x"?"y":"x"}const xl={x:["bottom","top"],y:["left","right"]},og=Object.fromEntries(Object.entries(xl).map(([t,e])=>e.map(n=>[n,t])).flat(1));function $n(t){return og[t]}class ag extends Ot{constructor(e,n,r,i){const o=n=="locus",a=T(T(T({},o?AM:sg),bM(n,e)),e);if(super(o?xM(a):cg(a),r,i,`axis_${e.orient}`),this.axisProps=a,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new ng(()=>this.ticks),o){const s=$n(this.axisProps.orient),c=this.getScaleResolution(s).getGenome();this.findChildByName(rg).getDynamicDataSource=()=>new ng(()=>c.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return og[this.axisProps.orient]=="x"?new qn(n,e):new qn(e,n)}getPerpendicularSize(){return wl(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=$n(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(U0(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=vM(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[ig[$n(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function wl(t){const e=$n(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 vM(t,e,n,r=[]){const i=s=>25+60*eg(100,700,s);let o=le(t.tickCount)?t.tickCount:Math.round(n/i(n));o=zm(e,o,t.tickMinStep);const a=t.values?Rm(e,t.values,o):TD(e,o);if(sw(a,r,s=>s,s=>s.value))return r;{const s=kD(e,o,t.format);return a.map(c=>({value:c,label:s(c)}))}}const sg={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 bM(t,e){var s;const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",a=(s=e.labelAngle)!=null?s:(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(a)>30?(i=a>0==(n=="bottom")?"left":"right",o="middle"):o=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:a,labelBaseline:o}}function cg(t){const e=U(T({},t),{extent:wl(t)}),n=$n(e.orient),r=Al(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,a=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:o,size:e.domainWidth}}),s=()=>({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,dynamicData:!0},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label"}}}),c=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300,dynamicData:!0},encoding:{[r]:{value:o},[r+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),u=()=>({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 d={name:"ticks_and_labels",encoding:{[n]:{field:"value",type:"quantitative"}},layer:[]};return e.ticks&&d.layer.push(c()),e.labels&&d.layer.push(s()),d},l={[ig[Al($n(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(a()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(u()),l}const AM=U(T({},sg),{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 xM(t){const e=U(T({},t),{extent:wl(t)}),n=$n(e.orient),r=Al(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,dynamicData:!0}}),a=()=>{let u;switch(e.orient){case"top":u={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":u={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":u={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":u={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:u={}}return{name:"chromosome_labels",mark:T({type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,dynamicData:!0},u),encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name"}}}};let s;switch(e.orient){case"bottom":case"top":s={};break;case"left":s={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":s={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:s={}}const c=cg(T(T({},t),s));if(t.chromTicks||t.chromLabels){const u={name:rg,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&u.layer.push(o()),t.chromLabels){u.layer.push(a());let f;c.layer.filter(l=>l.name=="ticks_and_labels").forEach(l=>l.layer.filter(d=>d.name=="labels").forEach(d=>{f=d.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}c.layer.push(u)}return c}const ug={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"},wM={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},CM={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},SM={start:0,middle:.5,end:1},EM={start:"left",middle:"center",end:"right"};function DM(t){var u,f,l;if(!t)return;const e=re(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n=(u={"track-title":wM,overlay:CM}[e.style])!=null?u:{},r=T(T(T({},ug),n),e);let i={},o={x:0,y:0};const a=SM[(f=r.anchor)!=null?f:"middle"];switch(r.orient){case"top":o={x:a,y:1},i={baseline:"alphabetic",angle:0};break;case"right":o={x:1,y:1-a},i={baseline:"alphabetic",angle:90};break;case"bottom":o={x:a,y:0},i={baseline:"top",angle:0};break;case"left":o={x:0,y:a},i={baseline:"alphabetic",angle:-90};break}const s=T(T(T(T({},ug),i),n),e),c={xOffset:0,yOffset:0};switch(r.orient){case"top":c.yOffset=-s.offset;break;case"right":c.xOffset=s.offset;break;case"bottom":c.yOffset=s.offset;break;case"left":c.xOffset=-s.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:U(T(T({type:"text",tooltip:null,clip:!1},o),c),{text:s.text,align:(l=s.align)!=null?l:EM[s.anchor],angle:s.angle,baseline:s.baseline,dx:s.dx,dy:s.dy,color:s.color,font:s.font,size:s.fontSize,fontStyle:s.fontStyle,fontWeight:s.fontWeight})}}function lg(t,e,n,r){if(t.type=="wheel"){t.uiEvent.preventDefault();const i=t.uiEvent,o=i.deltaMode?120:1;let{x:a,y:s}=t.point;if(r){const c=r.mark.encoders;c.x&&!c.x2&&(a=+c.x(r.datum)*e.width+e.x),c.y&&!c.y2&&(s=(1-+c.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:a,y:s,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300}):n({x:a,y:s,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 a=c=>{n({x:o.clientX,y:o.clientY,xDelta:c.clientX-o.clientX,yDelta:c.clientY-o.clientY,zDelta:0}),o=c},s=c=>{document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",s)};document.addEventListener("mouseup",s,!1),document.addEventListener("mousemove",a,!1)}}class fg extends Kn{constructor(n,r,i,o,a){var s;super(n,r,i,o);Ne(this,Oo);Ne(this,Dt);Ne(this,Gs);Ne(this,Hs);Ne(this,cr);Ne(this,Po);Ne(this,Fo);Ne(this,zo);Ne(this,Qs);Ne(this,ei,1/0);Ne(this,ti,10);Ne(this,tt,[]);Ne(this,ni,0);this.spec=n,Uo(this,ti,(s=n.spacing)!=null?s:10),Uo(this,ei,a),Uo(this,tt,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){var r;(r=n.parent)!=null||(n.parent=this),se(this,tt).push(xe(this,Oo,id).call(this,n)),F2(this,ni)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=se(this,tt).findIndex(o=>o.view==n);if(i>=0)se(this,tt)[i]=xe(this,Oo,id).call(this,r);else throw new Error("Not my child view!")}get children(){return se(this,tt).map(n=>n.view)}get childCount(){return se(this,tt).length}onScalesResolved(){super.onScalesResolved(),xe(this,Hs,R2).call(this)}*[Symbol.iterator](){for(const n of se(this,tt)){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=xe(this,cr,Go).call(this,"column"),r=xe(this,cr,Go).call(this,"row");return!n.length||!r.length?$e.zero():new $e(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new qn(xe(this,Fo,ad).call(this,"column"),xe(this,Fo,ad).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding()))}render(n,r,i={}){var u;if(!this.isVisible())return;r=r.shrink(this.getPadding()),n.pushView(this,r);const o={devicePixelRatio:this.context.glHelper.dpr},a=ao(xe(this,Po,od).call(this,"column"),r.width,o),s=ao(xe(this,Po,od).call(this,"row"),r.height,o),c=new $m(se(this,Dt,Sn).length,(u=se(this,ei))!=null?u:1/0);for(const[f,l]of se(this,Dt,Sn).entries()){const{view:d,axes:h,background:p,title:m}=l,[g,y]=c.getCellCoords(f),x=a[xe(this,zo,sd).call(this,"column",g)],A=s[xe(this,zo,sd).call(this,"row",y)],C=d.getSize(),b=d.getPadding().subtract(d.getOverhang()),v=x.location+b.left,w=A.location+b.top,E=(C.width.grow?x.size:C.width.px)-b.width,k=(C.height.grow?A.size:C.height.px)-b.height,L=new hn(()=>r.x+v,()=>r.y+w,()=>E,()=>k);l.coords=L,p==null||p.render(n,L,i);const I=IM(d);I&&d.render(n,L,i);for(const[P,Z]of Object.entries(h)){const Q=Z.axisProps;let fe;const Se=Z.getPerpendicularSize();P=="bottom"?fe=L.translate(0,L.height+Q.offset).modify({height:Se}):P=="top"?fe=L.translate(0,-Se-Q.offset).modify({height:Se}):P=="left"?fe=L.translate(-Se-Q.offset,0).modify({width:Se}):P=="right"&&(fe=L.translate(L.width+Q.offset,0).modify({width:Se})),Z.render(n,fe)}I||d.render(n,L,i),m==null||m.render(n,L,U(T({},i),{clipRect:void 0}))}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=se(this,Dt,Sn).find(o=>o.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof Ae||i instanceof Ot)&&lg(n,r.coords,o=>xe(this,Qs,j2).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}ei=new WeakMap,ti=new WeakMap,tt=new WeakMap,ni=new WeakMap,Oo=new WeakSet,id=function(n){var i;const r={view:n,background:void 0,axes:{},coords:hn.ZERO};if(n instanceof Ae||n instanceof Ot){const o=(i=n.spec)==null?void 0:i.view;if((o==null?void 0:o.fill)||(o==null?void 0:o.stroke)){const s=new Ae(MM(o),this.context,n,"background"+se(this,ni));s.blockEncodingInheritance=!0,r.background=s}const a=DM(n.spec.title);if(a){const s=new Ae(a,this.context,n,"title"+se(this,ni));s.blockEncodingInheritance=!0,r.title=s}}return r},Dt=new WeakSet,Sn=function(){return se(this,tt).filter(n=>n.view.isVisible())},Gs=new WeakSet,z2=function(){var n;return new $m(se(this,Dt,Sn).length,(n=se(this,ei))!=null?n:1/0)},Hs=new WeakSet,R2=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of se(this,tt)){const{view:r,axes:i}=n,o=(a,s,c)=>{var f;const u=a.getAxisProps();if(u!==null){if(!u.orient){for(const l of xl[s])if(!i[l]){u.orient=l;break}if(!u.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if((f=u.title)!=null||(u.title=a.getTitle()),!xl[s].includes(u.orient))throw new Error(`Invalid axis orientation "${u.orient}" on channel "${s}"!`);if(i[u.orient])throw new Error(`An axis with the orient "${u.orient}" already exists!`);i[u.orient]=new ag(u,a.scaleResolution.type,this.context,c)}};if(r instanceof Ae||r instanceof Ot)for(const a of["x","y"]){const s=r.resolutions.axis[a];!s||o(s,a,r)}if(r instanceof Ot){for(const a of r.children)for(const[s,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&u.orient&&o(c,s,a)}for(const a of r.children)for(const[s,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&!u.orient&&o(c,s,a)}}}},cr=new WeakSet,Go=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",o=(a,s)=>a.map(c=>{const u=se(this,Dt,Sn)[c].axes[r[s]];if(u)return Math.max(u.getPerpendicularSize()+u.axisProps.offset,0);const f=se(this,Dt,Sn)[c].view.getOverhang();return n=="column"?s?f.right:f.left:s?f.bottom:f.top}).reduce((c,u)=>Math.max(c,u),0);return se(this,Gs,z2)[n=="column"?"colIndices":"rowIndices"].map(a=>({axisBefore:o(a,0),axisAfter:o(a,1),view:yD(a.map(s=>se(this,Dt,Sn)[s].view.getSize()[i]))}))},Po=new WeakSet,od=function(n){const r=xe(this,cr,Go).call(this,n),i=[];i.push(so);for(const[o,a]of r.entries())o>0&&i.push({px:se(this,ti),grow:0}),(o==0||this.wrappingFacet)&&i.push(so),i.push({px:a.axisBefore,grow:0}),i.push(a.view),i.push({px:a.axisAfter,grow:0}),(o==r.length-1||this.wrappingFacet)&&i.push(so);return i},Fo=new WeakSet,ad=function(n){var a,s;let r=0,i=0;const o=xe(this,cr,Go).call(this,n);for(const[c,u]of o.entries())c>0&&(i+=se(this,ti)),(c==0||this.wrappingFacet)&&(i+=0),i+=u.axisBefore,i+=(a=u.view.px)!=null?a:0,r+=(s=u.view.grow)!=null?s:0,i+=u.axisAfter,(c==o.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},zo=new WeakSet,sd=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Qs=new WeakSet,j2=function(n,r,i){for(const[o,a]of Object.entries(TM(r))){if(a.size<=0)continue;const s=n.normalizePoint(i.x,i.y),c=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),u={x:c.x-s.x,y:c.y-s.y};for(const f of a)f.zoom(2**i.zDelta,o=="y"?1-s[o]:s[o],o=="x"?u.x:-u.y)}this.context.animator.requestRender()};function MM(t){return{configurableVisibility:!1,data:{values:[{}]},mark:U(T({fill:null,strokeWidth:1,fillOpacity:t.fill?1:0},t),{type:"rect",clip:!1,tooltip:null})}}function TM(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 IM(t){let e=!0;return t.visit(n=>{n instanceof Ae&&e&&(e=n.mark.properties.clip)}),e}class jr extends fg{constructor(e,n,r,i){super(e,n,r,i,Dl(e)?e.columns:El(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=Dl(e)?e.concat:El(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class kM{constructor(){this.types=[];const e=n=>(r,i,o,a)=>{var s;return new n(r,i,o,(s=r.name)!=null?s:a)};this.addViewType(NM,e(Jm)),this.addViewType(Sl,e(Ot)),this.addViewType(Cl,e(Ae)),this.addViewType(El,e(jr)),this.addViewType(LM,e(jr)),this.addViewType(Dl,e(jr))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const o=this.types.find(a=>a.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 Cl(t){return"mark"in t&&(re(t.mark)||Ge(t.mark))}function Sl(t){return"layer"in t&&Ge(t.layer)}function dg(t){return t&&(Cl(t)||Sl(t))&&"aggregateSamples"in t}function NM(t){return"import"in t}function El(t){return"vconcat"in t&&Xe(t.vconcat)}function LM(t){return"hconcat"in t&&Xe(t.hconcat)}function Dl(t){return"concat"in t&&Xe(t.concat)}const BM={point:rD,rect:KE,rule:aD,link:lD,text:gD};class Ae extends Kn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=BM[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(!Je(o))continue;let a=Er((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!_i(a))continue;let s=this;for(;s.parent instanceof Kn&&["shared","excluded"].includes(s.parent.getConfiguredOrDefaultResolution(a,e))&&s.getConfiguredOrDefaultResolution(a,e)!="excluded";)s=s.parent;s.resolutions[e][a]||(s.resolutions[e][a]=e=="scale"?new cM(a):new dM(a)),_i(i)?s.resolutions[e][a].pushUnitView(this,i):e=="scale"&&s.resolutions[e][a].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(Wi(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Je(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 a=this.getScaleResolution((i=n.resolutionChannel)!=null?i:e);return Xm((o=n.type)!=null?o:"nominal",a.fromComplexInterval(r))}}extractDataDomain(e){var s;const r=(s=this._validateDomainQuery(e).type)!=null?s:"nominal",i=c=>{let u;const f=this.mark.encoding[c];if(f){const l=this.context.accessorFactory.createAccessor(f);if(l)if(u=Xm(r),l.constant)u.extend(l({}));else{const d=this.getCollector();d!=null&&d.completed&&d.visitData(h=>u.extend(l(h)))}}return u};let o=i(e);const a=Tu[e];if(a){const c=i(a);c&&o.extendAll(c)}return o}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return Yi.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(dg(this.spec))for(const r of this.spec.aggregateSamples){const i=(e=r.transform)!=null?e:[];i.length&&ze(i).type!="collect"&&i.push({type:"collect"}),i.push({type:"mergeFacets"}),r.transform=i,r.encoding=U(T({},(n=r.encoding)!=null?n:{}),{sample:null});const o=this.context.createView(r,this,"summaryView");o.getFacetFields=a=>{},this.sampleAggregateViews.push(o)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*Ml(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of Ml(r,[...e,n]))yield i;else yield[[...e,n],r]}class Ur extends ue{constructor(e){super(),this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new fr([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){tD(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?fd(e.field,e.order):void 0,r=a=>{n&&a.sort(n)};if((o=this.params.groupby)!=null&&o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const a=this.params.groupby.map(c=>J(c)),s=ai(this._data,...a);this.facetBatches.clear();for(const[c,u]of Ml(s))this.facetBatches.set(c,u)}for(const a of this.facetBatches.values())r(a);if(this.children.length)for(const[a,s]of this.facetBatches.entries()){if(a){const c={type:"facet",facetId:a};for(const u of this.children)u.beginBatch(c)}for(const c of s)this._propagate(c)}super.complete();for(const a of this.observers)a(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 uo{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 a=(o<<1)+1;const s=a+1;let c=this.ids[a],u=this.values[a];const f=this.values[s];if(s<this.length&&f<u&&(a=s,c=this.ids[s],u=f),u>=r)break;this.ids[o]=c,this.values[o]=u,o=a}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 OM extends ue{get behavior(){return Bt}constructor(e){super(),this.params=e,this.startAccessor=J(e.start),this.endAccessor=J(e.end),this.chromAccessor=e.chrom?J(e.chrom):n=>{},this.weightAccessor=e.weight?J(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 uo}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,a=this.chromAccessor,s=this.weightAccessor;let c,u,f,l=0,d;const h=this.ends;h.clear();const p=(g,y,x)=>{if(g==y)return;let A=!1;c&&(c[e]===x?(c[n]=y,A=!0):c[e]!=0&&this._propagate(c)),A||(c=this.createSegment(g,y,x,f))},m=()=>{let g;for(;(g=h.peekValue())!==void 0;)p(d,g,l),d=g,l-=h.pop();d=void 0,c&&(this._propagate(c),c=void 0)};this.handle=g=>{const y=i(g);let x;for(;(x=h.peekValue())!==void 0&&x<y;)p(d,x,l),d=x,l-=h.pop();if(r){let C=a(g);C!==u&&(m(),f=C,u=f)}d!==void 0&&p(d,y,l),d=y;const A=s(g);l+=A,h.push(A,o(g))},this.complete=()=>{m(),super.complete()}}}function PM(t,e,n=0,r=t.length){const i=new uo,o=r-n;let a;for(a=0;a<e&&a<o;a++)i.push(a,t[n+a]);for(;a<o;a++){const u=t[n+a];u>=i.peekValue()&&(i.push(a,u),i.pop())}const s=[];let c;for(;(c=i.pop())!==void 0;)s.push(n+c);return s.reverse()}class FM{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 zM extends ue{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=J(this.params.pos),this.posBisector=oi(this.posAccessor),this.scoreAccessor=J(this.params.score),this.widthAccessor=J(this.params.width),this.laneAccessor=this.params.lane?J(this.params.lane):a=>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",a=>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 FM(200));this.schedule(),super.complete()}_filterAndPropagate(){var a;super.reset();const e=this.resolution.getScale(),n=(a=this.resolution.members[0].view.coords)==null?void 0:a[this.channel=="x"?"width":"height"];if(!n)return;for(const s of this.reservationMaps.values())s.reset();const r=e.domain(),i=70,o=PM(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const s of o){const c=this._data[s],u=e(this.posAccessor(c))*n,f=this.widthAccessor(c)/2+this.padding;this.reservationMaps.get(this.laneAccessor(c)).reserve(u-f,u+f)&&this._propagate(c)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class RM extends ue{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=Eu(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const jM="0".charCodeAt(0);function*UM(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-jM}yield r}class GM extends ue{get behavior(){return Bt}constructor(e){var a,s;super();const n=J((a=e.exons)!=null?a:"exons"),r=J((s=e.start)!=null?s:"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=c=>{let u=r(c),f=u,l=!0;const d=n(c);for(const h of UM(d)){if(l)f=u+h;else{u=f+h;const p=Object.assign({},c);p[i]=f,p[o]=u,this._propagate(p)}l=!l}}}}class HM extends ue{get behavior(){return Bt}constructor(e){super();const n=Ke(e.field).map(o=>J(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(c=>!c(o)))return;const a=n.map((c,u)=>c(o).split(r[u]));QM(a,o);const s=a[0].length;for(let c=0;c<s;c++){const u=Object.assign({},o);for(let f=0;f<n.length;f++)u[i[f]]=a[f][c];this._propagate(u)}}}}function QM(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 VM extends ue{get behavior(){return dn}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=Eu(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class hg extends ue{get behavior(){return dn}constructor(e,n){var p;super();const r=(p=e.channel)!=null?p:"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=J(e.chrom),a=Ke(e.pos).map(m=>J(m)),s=Ke(e.as);if(a.length!=s.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=Ke(e.offset);let u;if(c.length==0)u=new Array(a.length).fill(0);else if(c.length==1)u=new Array(a.length).fill(c[0]);else if(c.length==a.length)u=c;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",s.map((m,g)=>`datum[${JSON.stringify(m)}] = chromOffset + +posAccessors[${g}](datum) - ${u[g]};`).join(`
1344
+ `));let l,d=0;const h=m=>{if(m!==l){if(d=i.cumulativeChromPositions.get(m),d===void 0)throw new Error("Unknown chromosome/contig: "+m);l=m}return d};this.handle=m=>{f(m,h(o(m)),a),this._propagate(m)}}}var pg={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 YM extends ue{get behavior(){return dn}constructor(e){super();const n=ul(pg),r=J(e.field),i=e.as,o=e.fontSize;this.handle=a=>{const s=r(a);s!==void 0?a[i]=n.measureWidth(s,o):a[i]=0,this._propagate(a)}}}const _M=65536;class WM extends ue{get behavior(){return dn}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=le(e.spacing)?e.spacing:1,i=J(e.start),o=J(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const a=new Float64Array(_M),s=J(e.preference),c=e.preferredOrder;let u=1/0;this.handle=f=>{const l=i(f);l<u&&a.fill(-1/0),u=l;const d=c.indexOf(s(f));let h=-1;if(d>=0&&a[d]<l)h=d;else{const p=i(f);for(h=0;h<a.length&&!(a[h]<p);h++);if(h>=a.length)throw new Error("Out of lanes!")}a[h]=o(f)+r,f[n]=h,this._propagate(f)}}else{const a=new uo,s=new uo;let c=-1/0,u=0;this.handle=f=>{const l=i(f);for(;a.length&&(a.peekValue()<=l||l<c);){const h=a.pop();s.push(h,h)}c=l;let d=s.pop();d===void 0&&(d=u++),f[n]=d,this._propagate(f),a.push(d,o(f)+r)}}}}class XM extends ue{get behavior(){return Bt}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=>J(i)),r=e.as?e.as:n.map(V);this.handle=i=>{const o={};for(let a=0;a<n.length;a++)o[r[a]]=n[a](i);this._propagate(o)}}}class ZM extends ue{get behavior(){return dn}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=J(e.field);this.handle=o=>{const a=i(o);if(re(a)){const s=a.match(n);if(s){if(s.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let c=0;c<r.length;c++)o[r[c]]=s[c+1]}else if(e.skipInvalidInput)for(let c=0;c<r.length;c++)o[r[c]]=void 0;else throw new Error(`"${a}" 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 a}, field content: "${a}".`);this._propagate(o)}}}class qM extends ue{get behavior(){return Bt}constructor(e){super();const n=Ke(e.columnRegex).map(d=>new RegExp(d)),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 a,s,c;const u=d=>{var g;const h=Object.keys(d),p=new Map;for(const[y,x]of n.entries())for(const A of h){const C=(g=x.exec(A))==null?void 0:g[1];if(C!==void 0){let b=p.get(C);b||(b=[],p.set(C,b)),b[y]=A}}a=[...p.entries()],s=h.filter(y=>!n.some(x=>x.test(y))&&!(i&&i.test(y)));const m=[...s.map(y=>JSON.stringify(y)+": datum["+JSON.stringify(y)+"]"),JSON.stringify(o)+": sampleId",...r.map(y=>JSON.stringify(y)+": null")];c=new Function("datum","sampleId",`return {
1345
+ `+m.join(`,
1550
1346
  `)+`
1551
- };`)},f=h=>{s||u(h);for(const[d,p]of s){const g=c(h,d);for(let m=0;m<p.length;m++)g[r[m]]=h[p[m]];this._propagate(g)}},l=h=>{u(h),f(h),this.handle=f};this.handle=l,this.beginBatch=h=>{Hp(h)&&(this.handle=l),super.beginBatch(h)}}}class ZD extends se{get behavior(){return rn}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?of(e.sort.field,e.sort.order):void 0,i=e.field?Z(e.field):()=>1,o=e.groupby.map(l=>Z(l)),s=cb(this.buffer,l=>o.map(h=>h(l)).join()).map(l=>l[1]);let a=l=>!0;if(e.baseField){const l=Z(e.baseField);a=h=>l(h)!==null}let c,u;switch(e.offset){case"normalize":c=(l,h)=>l/h,u=(l,h)=>Io(l,h);break;case"center":c=(l,h)=>l-h/2,u=(l,h)=>Io(l,h);break;case"information":{const l=Math.log2((f=e.cardinality)!=null?f:4);c=(h,d)=>h/d,u=(h,d)=>{const g=Io(h,v=>+!a(v)),m=Io(h,d),y=m-g;let x=0;for(let v=0;v<h.length;v++){const S=h[v];if(a(S)){const b=d(S)/y;x-=b*Math.log2(b)}}return y/(l-(x+0))*(y/m)}}break;default:c=(l,h)=>l,u=(l,h)=>1}for(const l of s){r&&l.sort(r);const h=u(l,i);let d=0;for(const p of l){const g=d+i(p);a(p)&&(p[n[0]]=c(d,h),p[n[1]]=c(g,h),this._propagate(p),d=g)}}super.complete()}}class KD extends se{get behavior(){return Nt}constructor(e){super();var o,s;const n=Z((o=e.field)!=null?o:"sequence"),[r,i]=(s=e.as)!=null?s:["pos","sequence"];this.handle=a=>{const c=Object.assign({},a,{[i]:"",[r]:0}),u=n(a);for(let f=0;f<u.length;f++){const l=Object.assign({},c);l[r]=f,l[i]=u.charAt(f),this._propagate(l)}}}}class JD extends se{get behavior(){return Nt}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=>Z(o)),i=Do(this.buffer,...r);for(const[o,s]of Wu(i)){const a={count:s.length};for(let c=0;c<n.length;c++)a[n[c]]=o[c];this._propagate(a)}super.complete()}}const $D="_uniqueId",Cg=1e4,Dg=[null];class Mg extends se{get behavior(){return rn}constructor(e){super();var n;this.params=e,this.as=(n=e.as)!=null?n:$D,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%Cg==0&&(this._id=this._getBlock()*Cg),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Dg.length;return Dg[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const Ig={aggregate:JD,collect:Ui,coverage:OD,filterScoredLabels:FD,filter:zD,flattenCompressedExons:jD,flattenDelimited:GD,flattenSequence:KD,formula:QD,identifier:Mg,linearizeGenomicCoordinate:Eg,measureText:VD,pileup:YD,project:WD,regexExtract:XD,regexFold:qD,sample:Qp,stack:ZD};function eM(t,e){const n=Ig[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function tM(t){return"values"in t}class nM extends On{constructor(e){super();var n;if(this.params=e,typeof e.values=="string"&&!((n=e==null?void 0:e.format)==null?void 0: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=Ds(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=rh(e,mg(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 rM(t){return"url"in t}class iM 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=>_r({baseURL:this.baseUrl}).load(o).catch(s=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${s.message}`)}),i=(o,s)=>{try{const a=rh(o,mg(this.params));this.beginBatch({type:"file",url:s});for(const c of a)this._propagate(c)}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 oM(t){return"sequence"in t}class sM extends On{constructor(e){super();if(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 aM(t){return"dynamicSource"in t}class cM extends On{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=Ds(r)),this._propagate(n(r));this.complete()}async load(){}}function Tg(t,e){if(tM(t))return new nM(t);if(rM(t))return new iM(t,e);if(oM(t))return new sM(t);if(aM(t))return new cM;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function uM(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(`,
1552
- `)+" };");return n.properties=e,n}class Ng extends se{get behavior(){return Nt}constructor(){super();const e=n=>{const r=uM(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{Hp(n)&&(this.handle=e),super.beginBatch(n)}}}class Lg{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)}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 lM(t){return"name"in t}class fM extends On{constructor(e,n){super();this.getNamedData=n,this.params=e}get identifier(){return this.params.name}_getValues(){const e=this.getNamedData(this.params.name);if(e)return e;throw new Error("Cannot find named data: "+this.params.name)}loadSynchronously(){const e=this._getValues();let n=r=>r;if(Array.isArray(e))e.length>0&&(n=Ds(e[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const r of e)this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}function kg(t,e){const n=[];let r;const i=e!=null?e:new Lg,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 c(f,l){for(const h of f){let d;try{d=eM(h,l)}catch(p){throw console.warn(p),new Error(`Cannot initialize "${h.type}" transform: ${p}`)}d.behavior&rn&&a(new Ng),a(d)}}const u=f=>{if(n.push(r),f.spec.data){const l=DD(f.spec.data)?f.getDynamicDataSource():lM(f.spec.data)?new fM(f.spec.data,f.context.getNamedData):Tg(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&c(f.spec.transform,f),f instanceof Pe){if(!r)throw new Error("A unit view has no (inherited) data source");const l=hM(f);if(l){o.push(l.rewrite);for(const d of l.transforms)a(d)}f.mark.isPickingParticipant()&&a(new Mg({type:"identifier"}));const h=new Ui({type:"collect",groupby:f.getFacetFields(),sort:dM(f,l==null?void 0:l.rewrittenEncoding)});s(h),i.addCollector(h,f)}dg(f.spec)};return u.postOrder=f=>{r=n.pop()},t.visit(u),o.forEach(f=>f()),i}function hM(t){var o,s,a,c;const e=[],n={},r=[];for(const[u,f]of Object.entries(t.getEncoding())){const l=u;yi(l)&&r0(f)&&r.push({channel:l,chromPosDef:f})}const i=Do(r,u=>nr(u.channel),u=>u.chromPosDef.chrom);for(const[u,f]of i.entries())for(const[l,h]of f.entries()){const d=[],p=[],g=[];for(const{channel:m,chromPosDef:y}of h){const x=b=>b.replace(/[^A-Za-z0-9_]/g,""),v=["_linearized_",x(y.chrom),"_",x(y.pos)].join(""),S=F(T({},(a=(s=(o=t.spec.encoding)==null?void 0:o[m])!=null?s:t.getEncoding()[m])!=null?a:{}),{field:v});delete S.chrom,delete S.pos,!S.type&&y.type&&(S.type=y.type),n[m]=S,d.push(y.pos),g.push((c=y.offset)!=null?c:0),p.push(v)}e.push(new Eg({type:"linearizeGenomicCoordinate",channel:u,chrom:l,pos:d,offset:g,as:p},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding=T(T({},t.spec.encoding),n),Bp(t.mark,"encoding")}}:void 0}function dM(t,e){var r;const n=T(T({},t.getEncoding()),e).x;if(Ke(n)&&((r=t.getScaleResolution("x"))==null?void 0:r.isZoomable())){if(Mn(n))return{field:n.field};if(!gi(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function pM(t,...e){let n=t;for(const o of e)n.addChild(o),n=o;let r;n instanceof Ui?r=n:(r=new Ui,n.addChild(r));let i;return t instanceof On?i=async()=>(await t.load(),r.getData()):i=async()=>{throw new Error("The root node is not derived from DataSource!")},{dataSource:t,collector:r,loadAndCollect:i}}function Og(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!Og(n,t))return!1;return!0}function Xu(t,e=!1){if(t instanceof Ng)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&Xu(n,e);return}t.behavior&Nt&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)Xu(t.children[n],e||n<r-1)}function gM(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 mM(t){if(Xu(t),!Og(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function yM(t){for(const e of t.dataSources)mM(e);gM(t)}function AM(t){const e=[];return t.visit(n=>{e.push(n)}),e}function Bg(t){t.visit(n=>{n instanceof Pe&&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 Pe&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function bM(t){for(const e of mi){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}function xM(t){let e=t;const n=r=>r&&!Ze(r);return t.visit(r=>{if(r instanceof Ri||r instanceof Pe){const i=r.getEncoding();if(r instanceof Pe&&!n(i.x)&&!n(i.y))return gr;const o=r.parent,s=new Yu(r.context,o);if(r.parent=s,s.child=r,s.name=r.name+"_decorator",o)if(o instanceof At)o.replaceChild(r,s);else{let a;if(t.visit(EM((c,u)=>{if(c===r)return a=pe(u),kn})),a instanceof At)a.replaceChild(r,s);else throw new Error("Cannot find parent while decorating: "+r.getPathString())}return s.resolutions=r.resolutions,r.resolutions={scale:{},axis:{}},s.spec.height=r.spec.height,r.spec.height="container",s.spec.width=r.spec.width,r.spec.width="container",s.spec.padding=r.spec.padding,r.spec.padding=void 0,r===t&&(e=s),s.initialize(),gr}}),e}function vM(t){const e=[];return t.visit(n=>{if(n instanceof Pe){const r=n.getEncoding();for(const[i,o]of Object.entries(r))Mn(o)&&"type"in o&&e.push({view:n,channel:i,field:o.field,type:o.type});return gr}}),e}async function wM(t,e,n){var s;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=_r({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}
1553
- 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 Pg(t){const e=[];t.visit(n=>{if(n instanceof fg)return e.push(n),gr});for(const n of e){const r=n.context,i=await wM(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await Pg(o)}}function EM(t){const e=[],n=r=>t(r,e);return n.beforeChildren=r=>{e.push(r)},n.afterChildren=r=>{e.pop()},n}function SM(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...ub(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const CM=t=>!/^(layer|concat)\d+$/.test(t);class qu{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Fg extends qu{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=Do(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(r(()=>s.prepareRender(this.globalOptions)));let c;for(const u of a){const f=u.coords;f.equals(c)||this.batch.push(r(()=>{n=s.setViewport(f,u.clipRect)})),this.batch.push(i(u.callback)),c=u.coords}}}}class DM extends qu{constructor(e){super(e);this.root=void 0,this.stack=[],this.lastAddition=void 0}pushView(e,n){const r=new MM(e,n);this.root?pe(this.stack).addChild(r):this.root=r,this.stack.push(r)}popView(e){this.stack.pop()}getLayout(){return this.root}}class MM{constructor(e,n){this.view=e,this.coords=n,this.children=[]}addChild(e){const n=pe(this.children);n&&e.view===n.view&&e.coords.equals(n.coords)||this.children.push(e)}dispatchInteractionEvent(e){if(this.coords.containsPoint(e.point.x,e.point.y)){if(this.view.handleInteractionEvent(this.coords,e,!0),e.stopped)return;if(this.children.length==0)e.target=this.view;else for(const n of this.children){if(n.dispatchInteractionEvent(e),e.target)break;if(e.stopped)return}this.view.handleInteractionEvent(this.coords,e,!1)}}}class IM extends qu{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 TM{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 NM{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 LM=t=>new Promise(e=>setTimeout(e,t));function Ms(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n==null?void 0:n.aborted)return o("aborted");const s=performance.now(),a=s+(t.duration||1e3),c=typeof t.from=="number"?t.from:0,u=typeof t.to=="number"?t.to:1,f=t.easingFunction||(g=>g),l=g=>(g-s)/(a-s),h=g=>g*(u-c)+c,d=g=>Math.max(0,Math.min(1,g)),p=g=>{(n==null?void 0:n.aborted)?o("aborted"):(t.onUpdate(h(f(d(l(g))))),g<a?e(p):(t.onUpdate(h(f(1))),i()))};e(p)});return t.delay?(n==null?void 0:n.aborted)?Promise.reject("aborted"):LM(t.delay).then(r):r()}class kM{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 Ms(T({requestAnimationFrame:n=>this.requestTransition(n)},e))}}function zg(){const t=e=>e;return t.invert=e=>e,t.copy=zg,t.invertRange=()=>{},t}class OM{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new iD(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}}}var BM="data:image/png;base64,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";const PM={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class FM{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new So([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Iu(Sg),texture:this._createTextureNow(BM)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(oe(r)&&(r=PM[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=RM(r,n),o=this.fontRepository+Rg(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=>Iu(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=Rg(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=>zM(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)=>{Si(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=Si(n,{src:e,min:n.LINEAR},(a,c,u)=>{a?s(a):o(c)})});return this._promises.push(i),r}}function Rg(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function zM(t){const e=t.split(`
1554
- `),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 RM(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 UM(t,e){const n=[];let r;for(const i of t.split(`
1555
- `))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 jM{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=Ly([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 GM(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 Is(t,e,n=!0){let r,i=s=>{};return function(...a){return new Promise((c,u)=>{const f=()=>{clearTimeout(r),i=l=>{},c(t(...a))};n&&i("debounced"),clearTimeout(r),i=u,r=setTimeout(f,e)})}}const Ug=new Map;async function HM(t,e,n){var o;const r=t.symbol;let i=(o=Ug.get(r))!=null?o:await _M(t.symbol);return i?(Ug.set(r,i),M`<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 QM(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 VM=Is(QM,500);function _M(t){return VM(t)}const YM=Le(".4~r"),WM=Le(".4~e");function jg(t){return t===null?M`<span class="na">NA</span>`:oe(t)?t.substring(0,30):Number.isInteger(t)?""+t:ae(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?WM(t):YM(t):ao(t)?t?"True":"False":"?"+typeof t+" "+t}async function XM(t,e,n){const r=(s,a)=>{var c;for(const[u,f]of Object.entries(e.encoders))if((c=f==null?void 0:f.accessor)==null?void 0:c.fields.includes(s))switch(u){case"color":case"fill":case"stroke":return M`<span class="color-legend" style="${`background-color: ${f(a)}`}"></span>`}return""},i=M`<table class="attributes">${Object.entries(t).filter(([s,a])=>!s.startsWith("_")).map(([s,a])=>M`<tr><th>${s}</th><td>${jg(a)} ${r(s,t)}</td></tr>`)}</table>`,o=e.unitView.spec.title?M`<div class="title"><strong>${e.unitView.spec.title}</strong></div>`:"";return M`${o}${i}`}W("index",Ya,["continuous"]),W("locus",wb,["continuous"]),W("null",zg,[]),nh("fasta",UM);class Gg{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new yw,this.viewFactory=new AD,this.namedDataProviders=[],this.animator=new kM(()=>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 jM(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=T({default:XM,refseqgene:HM},(i=r.tooltipHandlers)!=null?i:{}),this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedData(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}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 JS(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize(),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 Zx(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 OM(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Lg,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new FM(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedData:this.getNamedData.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(a,c)=>{document.addEventListener(a,c);let u=this._keyboardListeners.get(a);u||(u=[],this._keyboardListeners.set(a,u)),u.push(c)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:a=>e.viewFactory.isViewSpec(a),createView:function(a,c,u){return e.viewFactory.createView(a,n,c,u)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(a=>r.datasets[a]),this.viewRoot=n.createView(r,null,"viewRoot"),await Pg(this.viewRoot),Bg(this.viewRoot),bM(this.viewRoot),this.viewRoot=xM(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof Pe&&i.push(a)});const o=kg(this.viewRoot,n.dataFlow);yM(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(c=>{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 c of Object.values(a.resolutions.scale))c.reconfigure()}),this.broadcast("dataLoaded"),await s,this.viewRoot.visit(a=>{for(const c of Object.values(a.resolutions.scale))this._glHelper.createRangeTexture(c)});for(const a of i)a.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(a=>ki(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),qM(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(this.layout&&r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const o=e.getBoundingClientRect(),s=new NM(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=c=>{this.layout.dispatchInteractionEvent(new TM(s,c)),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 c=r;if(Math.abs(c.deltaX)>Math.abs(c.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const u=GM(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",F(T({},u),{deltaMode:0,deltaX:0,deltaY:f}));a(l)}),c.preventDefault();return}}if(r.type=="click"){const c=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(u=>u.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(u=>u(c))}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 Pe){if(s.mark.isPickingParticipant()){const a=s.mark.encoders.uniqueId.accessor;s.getCollector().visitData(c=>{a(c)==i&&(this._currentHover={mark:s.mark,datum:c,uniqueId:i})})}if(this._currentHover)return kn}}),this._currentHover){const s=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async a=>{var u;if(!s.isPickingParticipant())return;const c=s.properties.tooltip;if(c!==null){const f=(u=c==null?void 0:c.handler)!=null?u:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(a,s,c==null?void 0:c.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 Fg({picking:!1},this._glHelper),this._pickingContext=new Fg({picking:!0},this._glHelper);const r=new DM({});e.render(new IM(this._renderingContext,this._pickingContext,r),bt.create(0,0,n.width,n.height)),this.layout=r.getLayout(),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 Pe&&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 qM(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)}var CT="",ZM="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
1347
+ };`)},f=d=>{a||u(d);for(const[h,p]of a){const m=c(d,h);for(let g=0;g<p.length;g++)m[r[g]]=d[p[g]];this._propagate(m)}},l=d=>{u(d),f(d),this.handle=f};this.handle=l,this.beginBatch=d=>{km(d)&&(this.handle=l),super.beginBatch(d)}}}class KM extends ue{get behavior(){return dn}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?fd(e.sort.field,e.sort.order):void 0,i=e.field?J(e.field):()=>1,o=e.groupby.map(l=>J(l)),a=Iv(this.buffer,l=>o.map(d=>d(l)).join()).map(l=>l[1]);let s=l=>!0;if(e.baseField){const l=J(e.baseField);s=d=>l(d)!==null}let c,u;switch(e.offset){case"normalize":c=(l,d)=>l/d,u=(l,d)=>$o(l,d);break;case"center":c=(l,d)=>l-d/2,u=(l,d)=>$o(l,d);break;case"information":{const l=Math.log2((f=e.cardinality)!=null?f:4);c=(d,h)=>d/h,u=(d,h)=>{const m=$o(d,A=>+!s(A)),g=$o(d,h),y=g-m;let x=0;for(let A=0;A<d.length;A++){const C=d[A];if(s(C)){const b=h(C)/y;x-=b*Math.log2(b)}}return y/(l-(x+0))*(y/g)}}break;default:c=(l,d)=>l,u=(l,d)=>1}for(const l of a){r&&l.sort(r);const d=u(l,i);let h=0;for(const p of l){const m=h+i(p);s(p)&&(p[n[0]]=c(h,d),p[n[1]]=c(m,d),this._propagate(p),h=m)}}super.complete()}}class JM extends ue{get behavior(){return Bt}constructor(e){var o,a;super();const n=J((o=e.field)!=null?o:"sequence"),[r,i]=(a=e.as)!=null?a:["pos","sequence"];this.handle=s=>{const c=Object.assign({},s,{[i]:"",[r]:0}),u=n(s);for(let f=0;f<u.length;f++){const l=Object.assign({},c);l[r]=f,l[i]=u.charAt(f),this._propagate(l)}}}}class $M extends ue{get behavior(){return Bt}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=>J(o)),i=ai(this.buffer,...r);for(const[o,a]of Ml(i)){const s={count:a.length};for(let c=0;c<n.length;c++)s[n[c]]=o[c];this._propagate(s)}super.complete()}}const e8="_uniqueId",mg=1e4,gg=[null];class yg extends ue{get behavior(){return dn}constructor(e){var n;super(),this.params=e,this.as=(n=e.as)!=null?n:e8,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%mg==0&&(this._id=this._getBlock()*mg),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=gg.length;return gg[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const vg={aggregate:$M,collect:Ur,coverage:OM,filterScoredLabels:zM,filter:RM,flattenCompressedExons:GM,flattenDelimited:HM,flattenSequence:JM,formula:VM,identifier:yg,linearizeGenomicCoordinate:hg,measureText:YM,pileup:WM,project:XM,regexExtract:ZM,regexFold:qM,sample:Nm,stack:KM};function t8(t,e){const n=vg[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function n8(t){return"values"in t}class r8 extends Jn{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=os(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=ch(e,tg(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 i8(t){return"url"in t}class o8 extends Jn{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=>xi({baseURL:this.baseUrl}).load(o).catch(a=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${a.message}`)}),i=(o,a)=>{try{const s=ch(o,tg(this.params));this.beginBatch({type:"file",url:a});for(const c of s)this._propagate(c)}catch(s){throw new Error(`Cannot parse: ${a}: ${s.message}`)}};this.reset(),await Promise.all(n.map(o=>r(o).then(i))),this.complete()}}function a8(t){return"sequence"in t}class s8 extends Jn{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 c8(t){return"dynamicSource"in t}class u8 extends Jn{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=os(r)),this._propagate(n(r));this.complete()}async load(){}}function bg(t,e){if(n8(t))return new r8(t);if(i8(t))return new o8(t,e);if(a8(t))return new s8(t);if(c8(t))return new u8;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function l8(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(`,
1348
+ `)+" };");return n.properties=e,n}class Ag extends ue{get behavior(){return Bt}constructor(){super();const e=n=>{const r=l8(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{km(n)&&(this.handle=e),super.beginBatch(n)}}}class xg{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)}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 f8(t){return"name"in t}class d8 extends Jn{constructor(e,n){super(),this.getNamedData=n,this.params=e}get identifier(){return this.params.name}_getValues(){const e=this.getNamedData(this.params.name);if(e)return e;throw new Error("Cannot find named data: "+this.params.name)}loadSynchronously(){const e=this._getValues();let n=r=>r;if(Array.isArray(e))e.length>0&&(n=os(e[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const r of e)this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}function wg(t,e){const n=[];let r;const i=e!=null?e:new xg,o=[];function a(f,l=()=>{}){if(!r)throw l()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(f),r=f,f}function s(f,l){return a(f,()=>new Error(`Cannot append a transform because no (inherited) data are available! ${l?JSON.stringify(l):""}`))}function c(f,l){for(const d of f){let h;try{h=t8(d,l)}catch(p){throw console.warn(p),new Error(`Cannot initialize "${d.type}" transform: ${p}`)}h.behavior&dn&&s(new Ag),s(h)}}const u=f=>{if(n.push(r),f.spec.data){const l=yM(f.spec.data)?f.getDynamicDataSource():f8(f.spec.data)?new d8(f.spec.data,f.context.getNamedData):bg(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&c(f.spec.transform,f),f instanceof Ae){if(!r)throw new Error("A unit view has no (inherited) data source");const l=h8(f);if(l){o.push(l.rewrite);for(const h of l.transforms)s(h)}f.mark.isPickingParticipant()&&s(new yg({type:"identifier"}));const d=new Ur({type:"collect",groupby:f.getFacetFields(),sort:p8(f,l==null?void 0:l.rewrittenEncoding)});a(d),i.addCollector(d,f)}dg(f.spec)};return u.postOrder=f=>{r=n.pop()},t.visit(u),o.forEach(f=>f()),i}function h8(t){var o,a,s,c;const e=[],n={},r=[];for(const[u,f]of Object.entries(t.getEncoding())){const l=u;_i(l)&&ep(f)&&r.push({channel:l,chromPosDef:f})}const i=ai(r,u=>Er(u.channel),u=>u.chromPosDef.chrom);for(const[u,f]of i.entries())for(const[l,d]of f.entries()){const h=[],p=[],m=[];for(const{channel:g,chromPosDef:y}of d){const x=b=>b.replace(/[^A-Za-z0-9_]/g,""),A=["_linearized_",x(y.chrom),"_",x(y.pos)].join(""),C=U(T({},(s=(a=(o=t.spec.encoding)==null?void 0:o[g])!=null?a:t.getEncoding()[g])!=null?s:{}),{field:A});delete C.chrom,delete C.pos,!C.type&&y.type&&(C.type=y.type),n[g]=C,h.push(y.pos),m.push((c=y.offset)!=null?c:0),p.push(A)}e.push(new hg({type:"linearizeGenomicCoordinate",channel:u,chrom:l,pos:h,offset:m,as:p},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding=T(T({},t.spec.encoding),n),wm(t.mark,"encoding")}}:void 0}function p8(t,e){var r;const n=T(T({},t.getEncoding()),e).x;if(Je(n)&&(r=t.getScaleResolution("x"))!=null&&r.isZoomable()){if(Vn(n))return{field:n.field};if(!Vi(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function m8(t,...e){let n=t;for(const o of e)n.addChild(o),n=o;let r;n instanceof Ur?r=n:(r=new Ur,n.addChild(r));let i;return t instanceof Jn?i=async()=>(await t.load(),r.getData()):i=async()=>{throw new Error("The root node is not derived from DataSource!")},{dataSource:t,collector:r,loadAndCollect:i}}function Cg(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!Cg(n,t))return!1;return!0}function Tl(t,e=!1){if(t instanceof Ur&&(e=!0),t instanceof Ag)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&Tl(n,e);return}t.behavior&Bt&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)Tl(t.children[n],e||n<r-1)}function g8(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 y8(t){if(Tl(t),!Cg(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function v8(t){for(const e of t.dataSources)y8(e);g8(t)}function Sg(t){t.visit(n=>{n instanceof Ae&&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 Ae&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function b8(t){for(const e of Yi){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}function A8(t){const e=[];return t.visit(n=>{if(n instanceof Ae){const r=n.getEncoding();for(const[i,o]of Object.entries(r))Vn(o)&&"type"in o&&e.push({view:n,channel:i,field:o.field,type:o.type});return rs}}),e}async function x8(t,e,n){var a;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=xi({baseURL:e}),i=t.import.url,o=JSON.parse(await r.load(i).catch(s=>{throw new Error(`Could not load imported view spec: ${i}
1349
+ Reason: ${s.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(a=i.match(/^[^?#]*\//))==null?void 0:a[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function Eg(t){const e=[];t.visit(n=>{if(n instanceof Jm)return e.push(n),rs});for(const n of e){const r=n.context,i=await x8(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await Eg(o)}}function w8(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...kv(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const C8=t=>!/^(layer|concat)\d+$/.test(t);class Dg{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Mg extends Dg{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=a=>()=>{e&&a()},i=a=>()=>{e&&n&&a()},o=ai(this.buffer,a=>a.mark);for(const[a,s]of o.entries()){if(!a.isReady())continue;this.batch.push(()=>{e=a.unitView.getEffectiveOpacity()>0}),this.batch.push(r(()=>a.prepareRender(this.globalOptions)));let c;for(const u of s){const f=u.coords;f.equals(c)||this.batch.push(r(()=>{n=a.setViewport(f,u.clipRect)})),this.batch.push(i(u.callback)),c=u.coords}}}}class S8 extends Dg{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 E8{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 D8{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 M8=t=>new Promise(e=>setTimeout(e,t));function as(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n!=null&&n.aborted)return o("aborted");const a=performance.now(),s=a+(t.duration||1e3),c=typeof t.from=="number"?t.from:0,u=typeof t.to=="number"?t.to:1,f=t.easingFunction||(m=>m),l=m=>(m-a)/(s-a),d=m=>m*(u-c)+c,h=m=>Math.max(0,Math.min(1,m)),p=m=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(d(f(h(l(m))))),m<s?e(p):(t.onUpdate(d(f(1))),i()))};e(p)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):M8(t.delay).then(r):r()}class T8{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 as(T({requestAnimationFrame:n=>this.requestTransition(n)},e))}}function Tg(){const t=e=>e;return t.invert=e=>e,t.copy=Tg,t.invertRange=()=>{},t}class I8{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new $D(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}}}var k8="data:image/png;base64,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";const N8={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class L8{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new fr([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:ul(pg),texture:this._createTextureNow(k8)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(re(r)&&(r=N8[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=O8(r,n),o=this.fontRepository+Ig(n.family)+"/"+i.replace(/\.\w+/,""),a=this._createTexture(o+".png"),s=this._loadFont(o+".json");e.texture=await a,e.metrics=await s}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=>ul(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=Ig(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=>B8(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)=>{$i(n,{src:e,min:n.LINEAR},(o,a,s)=>{o?i(o):r(a)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((o,a)=>{r=$i(n,{src:e,min:n.LINEAR},(s,c,u)=>{s?a(s):o(c)})});return this._promises.push(i),r}}function Ig(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function B8(t){const e=t.split(`
1350
+ `),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 a=o[1];r[a]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const a=o[1];r[a]=+o[2]}}return n}function O8(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 P8(t,e){const n=[];let r;for(const i of t.split(`
1351
+ `))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 F8{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=ov([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 z8(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 ss(t,e,n=!0){let r,i=a=>{};return function(...s){return new Promise((c,u)=>{const f=()=>{clearTimeout(r),i=l=>{},c(t(...s))};n&&i("debounced"),clearTimeout(r),i=u,r=setTimeout(f,e)})}}const kg=new Map;async function R8(t,e,n){var o;const r=t.symbol;let i=(o=kg.get(r))!=null?o:await G8(t.symbol);return i?(kg.set(r,i),D`<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 j8(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(a=>a.json())).result[r]:null}const U8=ss(j8,500);function G8(t){return U8(t)}const H8=he(".4~r"),Q8=he(".4~e");function Ng(t){return t===null?D`<span class="na">NA</span>`:re(t)?t.substring(0,30):Number.isInteger(t)?""+t:le(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?Q8(t):H8(t):Wo(t)?t?"True":"False":"?"+typeof t+" "+t}async function V8(t,e,n){const r=(s,c)=>{var u;for(const[f,l]of Object.entries(e.encoders))if((u=l==null?void 0:l.accessor)!=null&&u.fields.includes(s))switch(f){case"color":case"fill":case"stroke":return D`<span class="color-legend" style="${`background-color: ${l(c)}`}"></span>`}return""},i=D`<table class="attributes">${Object.entries(t).filter(([s,c])=>!s.startsWith("_")).map(([s,c])=>D`<tr><th>${s}</th><td>${Ng(c)} ${r(s,t)}</td></tr>`)}</table>`,o=e.unitView.getTitleText(),a=o?D`<div class="title"><strong>${o}</strong></div>`:"";return D`${a}${i}`}class Y8 extends fg{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}q("index",Nc,["continuous"]),q("locus",LA,["continuous"]),q("null",Tg,[]),sh("fasta",P8);class Lg{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new I4,this.viewFactory=new kM,this.namedDataProviders=[],this.animator=new T8(()=>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 F8(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=T({default:V8,refseqgene:R8},(i=r.tooltipHandlers)!=null?i:{}),this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedData(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}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 YE(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 cw(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 I8(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new xg,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new L8(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedData:this.getNamedData.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(s,c)=>{document.addEventListener(s,c);let u=this._keyboardListeners.get(s);u||(u=[],this._keyboardListeners.set(s,u)),u.push(c)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:s=>e.viewFactory.isViewSpec(s),createView:function(s,c,u){return e.viewFactory.createView(s,n,c,u)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(s=>r.datasets[s]),this.viewRoot=n.createView(r,null,"viewRoot"),await Eg(this.viewRoot),(this.viewRoot instanceof Ae||this.viewRoot instanceof Ot)&&(this.viewRoot=new Y8(n,this.viewRoot)),Sg(this.viewRoot),b8(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(s=>{s instanceof Ae&&i.push(s)});const o=wg(this.viewRoot,n.dataFlow);v8(o),this.broadcast("dataFlowBuilt",o),o.dataSources.forEach(s=>console.log(s.subtreeToString())),i.forEach(s=>s.mark.initializeEncoders());const a=Promise.all(i.map(s=>s.mark.initializeGraphics()));for(const s of i)o.addObserver(c=>{s.mark.initializeData(),s.mark.updateGraphicsData()},s);await n.fontManager.waitUntilReady(),o.initialize(),await Promise.all(o.dataSources.map(s=>s.load())),this.viewRoot.visit(s=>{for(const c of Object.values(s.resolutions.scale))c.reconfigure()}),this.broadcast("dataLoaded"),await a,this.viewRoot.visit(s=>{for(const c of Object.values(s.resolutions.scale))this._glHelper.createRangeTexture(c)});for(const s of i)s.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(s=>no(s,"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),_8(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(),a=new D8(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),s=c=>{this.viewRoot.propagateInteractionEvent(new E8(a,c)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(a.x,a.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const c=r;if(Math.abs(c.deltaX)>Math.abs(c.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const u=z8(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",U(T({},u),{deltaMode:0,deltaX:0,deltaY:f}));s(l)}),c.preventDefault();return}}if(r.type=="click"){const c=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(u=>u.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(u=>u(c))}s(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(a=>{if(a instanceof Ae){if(a.mark.isPickingParticipant()){const s=a.mark.encoders.uniqueId.accessor;a.getCollector().visitData(c=>{s(c)==i&&(this._currentHover={mark:a.mark,datum:c,uniqueId:i})})}if(this._currentHover)return zr}}),this._currentHover){const a=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async s=>{var u;if(!a.isPickingParticipant())return;const c=a.properties.tooltip;if(c!==null){const f=(u=c==null?void 0:c.handler)!=null?u:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(s,a,c==null?void 0:c.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 Mg({picking:!1},this._glHelper),this._pickingContext=new Mg({picking:!0},this._glHelper),e.render(new S8(this._renderingContext,this._pickingContext),hn.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 Ae&&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 _8(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)}var Gk="",W8="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
1556
1352
  * @license
1557
1353
  * Copyright 2019 Google LLC
1558
1354
  * SPDX-License-Identifier: BSD-3-Clause
1559
- */const Zu=window.ShadowRoot&&(window.ShadyCSS===void 0||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Hg=Symbol(),Qg=new Map;class KM{constructor(e,n){if(this._$cssResult$=!0,n!==Hg)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e}get styleSheet(){let e=Qg.get(this.cssText);return Zu&&e===void 0&&(Qg.set(this.cssText,e=new CSSStyleSheet),e.replaceSync(this.cssText)),e}toString(){return this.cssText}}const JM=t=>new KM(typeof t=="string"?t:t+"",Hg),$M=(t,e)=>{Zu?t.adoptedStyleSheets=e.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet):e.forEach(n=>{const r=document.createElement("style"),i=window.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=n.cssText,t.appendChild(r)})},Vg=Zu?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let n="";for(const r of e.cssRules)n+=r.cssText;return JM(n)})(t):t;/**
1355
+ */const Il=window.ShadowRoot&&(window.ShadyCSS===void 0||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Bg=Symbol(),Og=new Map;class X8{constructor(e,n){if(this._$cssResult$=!0,n!==Bg)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e}get styleSheet(){let e=Og.get(this.cssText);return Il&&e===void 0&&(Og.set(this.cssText,e=new CSSStyleSheet),e.replaceSync(this.cssText)),e}toString(){return this.cssText}}const Z8=t=>new X8(typeof t=="string"?t:t+"",Bg),q8=(t,e)=>{Il?t.adoptedStyleSheets=e.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet):e.forEach(n=>{const r=document.createElement("style"),i=window.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=n.cssText,t.appendChild(r)})},Pg=Il?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let n="";for(const r of e.cssRules)n+=r.cssText;return Z8(n)})(t):t;/**
1560
1356
  * @license
1561
1357
  * Copyright 2017 Google LLC
1562
1358
  * SPDX-License-Identifier: BSD-3-Clause
1563
- */var Ku;const _g=window.reactiveElementPolyfillSupport,Ju={toAttribute(t,e){switch(e){case Boolean:t=t?"":null;break;case Object:case Array:t=t==null?t:JSON.stringify(t)}return t},fromAttribute(t,e){let n=t;switch(e){case Boolean:n=t!==null;break;case Number:n=t===null?null:Number(t);break;case Object:case Array:try{n=JSON.parse(t)}catch{n=null}}return n}},Yg=(t,e)=>e!==t&&(e==e||t==t),$u={attribute:!0,type:String,converter:Ju,reflect:!1,hasChanged:Yg};class Ar extends HTMLElement{constructor(){super(),this._$Et=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Ei=null,this.o()}static addInitializer(e){var n;(n=this.l)!==null&&n!==void 0||(this.l=[]),this.l.push(e)}static get observedAttributes(){this.finalize();const e=[];return this.elementProperties.forEach((n,r)=>{const i=this._$Eh(r,n);i!==void 0&&(this._$Eu.set(i,r),e.push(i))}),e}static createProperty(e,n=$u){if(n.state&&(n.attribute=!1),this.finalize(),this.elementProperties.set(e,n),!n.noAccessor&&!this.prototype.hasOwnProperty(e)){const r=typeof e=="symbol"?Symbol():"__"+e,i=this.getPropertyDescriptor(e,r,n);i!==void 0&&Object.defineProperty(this.prototype,e,i)}}static getPropertyDescriptor(e,n,r){return{get(){return this[n]},set(i){const o=this[e];this[n]=i,this.requestUpdate(e,o,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)||$u}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const e=Object.getPrototypeOf(this);if(e.finalize(),this.elementProperties=new Map(e.elementProperties),this._$Eu=new Map,this.hasOwnProperty("properties")){const n=this.properties,r=[...Object.getOwnPropertyNames(n),...Object.getOwnPropertySymbols(n)];for(const i of r)this.createProperty(i,n[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(e){const n=[];if(Array.isArray(e)){const r=new Set(e.flat(1/0).reverse());for(const i of r)n.unshift(Vg(i))}else e!==void 0&&n.push(Vg(e));return n}static _$Eh(e,n){const r=n.attribute;return r===!1?void 0:typeof r=="string"?r:typeof e=="string"?e.toLowerCase():void 0}o(){var e;this._$Ev=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$Ep(),this.requestUpdate(),(e=this.constructor.l)===null||e===void 0||e.forEach(n=>n(this))}addController(e){var n,r;((n=this._$Em)!==null&&n!==void 0?n:this._$Em=[]).push(e),this.renderRoot!==void 0&&this.isConnected&&((r=e.hostConnected)===null||r===void 0||r.call(e))}removeController(e){var n;(n=this._$Em)===null||n===void 0||n.splice(this._$Em.indexOf(e)>>>0,1)}_$Ep(){this.constructor.elementProperties.forEach((e,n)=>{this.hasOwnProperty(n)&&(this._$Et.set(n,this[n]),delete this[n])})}createRenderRoot(){var e;const n=(e=this.shadowRoot)!==null&&e!==void 0?e:this.attachShadow(this.constructor.shadowRootOptions);return $M(n,this.constructor.elementStyles),n}connectedCallback(){var e;this.renderRoot===void 0&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$Em)===null||e===void 0||e.forEach(n=>{var r;return(r=n.hostConnected)===null||r===void 0?void 0:r.call(n)})}enableUpdating(e){}disconnectedCallback(){var e;(e=this._$Em)===null||e===void 0||e.forEach(n=>{var r;return(r=n.hostDisconnected)===null||r===void 0?void 0:r.call(n)})}attributeChangedCallback(e,n,r){this._$AK(e,r)}_$Eg(e,n,r=$u){var i,o;const s=this.constructor._$Eh(e,r);if(s!==void 0&&r.reflect===!0){const a=((o=(i=r.converter)===null||i===void 0?void 0:i.toAttribute)!==null&&o!==void 0?o:Ju.toAttribute)(n,r.type);this._$Ei=e,a==null?this.removeAttribute(s):this.setAttribute(s,a),this._$Ei=null}}_$AK(e,n){var r,i,o;const s=this.constructor,a=s._$Eu.get(e);if(a!==void 0&&this._$Ei!==a){const c=s.getPropertyOptions(a),u=c.converter,f=(o=(i=(r=u)===null||r===void 0?void 0:r.fromAttribute)!==null&&i!==void 0?i:typeof u=="function"?u:null)!==null&&o!==void 0?o:Ju.fromAttribute;this._$Ei=a,this[a]=f(n,c.type),this._$Ei=null}}requestUpdate(e,n,r){let i=!0;e!==void 0&&(((r=r||this.constructor.getPropertyOptions(e)).hasChanged||Yg)(this[e],n)?(this._$AL.has(e)||this._$AL.set(e,n),r.reflect===!0&&this._$Ei!==e&&(this._$ES===void 0&&(this._$ES=new Map),this._$ES.set(e,r))):i=!1),!this.isUpdatePending&&i&&(this._$Ev=this._$EC())}async _$EC(){this.isUpdatePending=!0;try{await this._$Ev}catch(n){Promise.reject(n)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var e;if(!this.isUpdatePending)return;this.hasUpdated,this._$Et&&(this._$Et.forEach((i,o)=>this[o]=i),this._$Et=void 0);let n=!1;const r=this._$AL;try{n=this.shouldUpdate(r),n?(this.willUpdate(r),(e=this._$Em)===null||e===void 0||e.forEach(i=>{var o;return(o=i.hostUpdate)===null||o===void 0?void 0:o.call(i)}),this.update(r)):this._$EU()}catch(i){throw n=!1,this._$EU(),i}n&&this._$AE(r)}willUpdate(e){}_$AE(e){var n;(n=this._$Em)===null||n===void 0||n.forEach(r=>{var i;return(i=r.hostUpdated)===null||i===void 0?void 0:i.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Ev}shouldUpdate(e){return!0}update(e){this._$ES!==void 0&&(this._$ES.forEach((n,r)=>this._$Eg(r,this[r],n)),this._$ES=void 0),this._$EU()}updated(e){}firstUpdated(e){}}Ar.finalized=!0,Ar.elementProperties=new Map,Ar.elementStyles=[],Ar.shadowRootOptions={mode:"open"},_g==null||_g({ReactiveElement:Ar}),((Ku=globalThis.reactiveElementVersions)!==null&&Ku!==void 0?Ku:globalThis.reactiveElementVersions=[]).push("1.0.1");/**
1359
+ */var kl;const Fg=window.trustedTypes,K8=Fg?Fg.emptyScript:"",zg=window.reactiveElementPolyfillSupport,Nl={toAttribute(t,e){switch(e){case Boolean:t=t?K8:null;break;case Object:case Array:t=t==null?t:JSON.stringify(t)}return t},fromAttribute(t,e){let n=t;switch(e){case Boolean:n=t!==null;break;case Number:n=t===null?null:Number(t);break;case Object:case Array:try{n=JSON.parse(t)}catch{n=null}}return n}},Rg=(t,e)=>e!==t&&(e==e||t==t),Ll={attribute:!0,type:String,converter:Nl,reflect:!1,hasChanged:Rg};class Gr extends HTMLElement{constructor(){super(),this._$Et=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Ei=null,this.o()}static addInitializer(e){var n;(n=this.l)!==null&&n!==void 0||(this.l=[]),this.l.push(e)}static get observedAttributes(){this.finalize();const e=[];return this.elementProperties.forEach((n,r)=>{const i=this._$Eh(r,n);i!==void 0&&(this._$Eu.set(i,r),e.push(i))}),e}static createProperty(e,n=Ll){if(n.state&&(n.attribute=!1),this.finalize(),this.elementProperties.set(e,n),!n.noAccessor&&!this.prototype.hasOwnProperty(e)){const r=typeof e=="symbol"?Symbol():"__"+e,i=this.getPropertyDescriptor(e,r,n);i!==void 0&&Object.defineProperty(this.prototype,e,i)}}static getPropertyDescriptor(e,n,r){return{get(){return this[n]},set(i){const o=this[e];this[n]=i,this.requestUpdate(e,o,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)||Ll}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const e=Object.getPrototypeOf(this);if(e.finalize(),this.elementProperties=new Map(e.elementProperties),this._$Eu=new Map,this.hasOwnProperty("properties")){const n=this.properties,r=[...Object.getOwnPropertyNames(n),...Object.getOwnPropertySymbols(n)];for(const i of r)this.createProperty(i,n[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(e){const n=[];if(Array.isArray(e)){const r=new Set(e.flat(1/0).reverse());for(const i of r)n.unshift(Pg(i))}else e!==void 0&&n.push(Pg(e));return n}static _$Eh(e,n){const r=n.attribute;return r===!1?void 0:typeof r=="string"?r:typeof e=="string"?e.toLowerCase():void 0}o(){var e;this._$Ep=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$Em(),this.requestUpdate(),(e=this.constructor.l)===null||e===void 0||e.forEach(n=>n(this))}addController(e){var n,r;((n=this._$Eg)!==null&&n!==void 0?n:this._$Eg=[]).push(e),this.renderRoot!==void 0&&this.isConnected&&((r=e.hostConnected)===null||r===void 0||r.call(e))}removeController(e){var n;(n=this._$Eg)===null||n===void 0||n.splice(this._$Eg.indexOf(e)>>>0,1)}_$Em(){this.constructor.elementProperties.forEach((e,n)=>{this.hasOwnProperty(n)&&(this._$Et.set(n,this[n]),delete this[n])})}createRenderRoot(){var e;const n=(e=this.shadowRoot)!==null&&e!==void 0?e:this.attachShadow(this.constructor.shadowRootOptions);return q8(n,this.constructor.elementStyles),n}connectedCallback(){var e;this.renderRoot===void 0&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$Eg)===null||e===void 0||e.forEach(n=>{var r;return(r=n.hostConnected)===null||r===void 0?void 0:r.call(n)})}enableUpdating(e){}disconnectedCallback(){var e;(e=this._$Eg)===null||e===void 0||e.forEach(n=>{var r;return(r=n.hostDisconnected)===null||r===void 0?void 0:r.call(n)})}attributeChangedCallback(e,n,r){this._$AK(e,r)}_$ES(e,n,r=Ll){var i,o;const a=this.constructor._$Eh(e,r);if(a!==void 0&&r.reflect===!0){const s=((o=(i=r.converter)===null||i===void 0?void 0:i.toAttribute)!==null&&o!==void 0?o:Nl.toAttribute)(n,r.type);this._$Ei=e,s==null?this.removeAttribute(a):this.setAttribute(a,s),this._$Ei=null}}_$AK(e,n){var r,i,o;const a=this.constructor,s=a._$Eu.get(e);if(s!==void 0&&this._$Ei!==s){const c=a.getPropertyOptions(s),u=c.converter,f=(o=(i=(r=u)===null||r===void 0?void 0:r.fromAttribute)!==null&&i!==void 0?i:typeof u=="function"?u:null)!==null&&o!==void 0?o:Nl.fromAttribute;this._$Ei=s,this[s]=f(n,c.type),this._$Ei=null}}requestUpdate(e,n,r){let i=!0;e!==void 0&&(((r=r||this.constructor.getPropertyOptions(e)).hasChanged||Rg)(this[e],n)?(this._$AL.has(e)||this._$AL.set(e,n),r.reflect===!0&&this._$Ei!==e&&(this._$EC===void 0&&(this._$EC=new Map),this._$EC.set(e,r))):i=!1),!this.isUpdatePending&&i&&(this._$Ep=this._$E_())}async _$E_(){this.isUpdatePending=!0;try{await this._$Ep}catch(n){Promise.reject(n)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var e;if(!this.isUpdatePending)return;this.hasUpdated,this._$Et&&(this._$Et.forEach((i,o)=>this[o]=i),this._$Et=void 0);let n=!1;const r=this._$AL;try{n=this.shouldUpdate(r),n?(this.willUpdate(r),(e=this._$Eg)===null||e===void 0||e.forEach(i=>{var o;return(o=i.hostUpdate)===null||o===void 0?void 0:o.call(i)}),this.update(r)):this._$EU()}catch(i){throw n=!1,this._$EU(),i}n&&this._$AE(r)}willUpdate(e){}_$AE(e){var n;(n=this._$Eg)===null||n===void 0||n.forEach(r=>{var i;return(i=r.hostUpdated)===null||i===void 0?void 0:i.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Ep}shouldUpdate(e){return!0}update(e){this._$EC!==void 0&&(this._$EC.forEach((n,r)=>this._$ES(r,this[r],n)),this._$EC=void 0),this._$EU()}updated(e){}firstUpdated(e){}}Gr.finalized=!0,Gr.elementProperties=new Map,Gr.elementStyles=[],Gr.shadowRootOptions={mode:"open"},zg==null||zg({ReactiveElement:Gr}),((kl=globalThis.reactiveElementVersions)!==null&&kl!==void 0?kl:globalThis.reactiveElementVersions=[]).push("1.3.2");/**
1564
1360
  * @license
1565
1361
  * Copyright 2017 Google LLC
1566
1362
  * SPDX-License-Identifier: BSD-3-Clause
1567
- */var el,tl;class kt extends Ar{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var e,n;const r=super.createRenderRoot();return(e=(n=this.renderOptions).renderBefore)!==null&&e!==void 0||(n.renderBefore=r.firstChild),r}update(e){const n=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Dt=Xe(n,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),(e=this._$Dt)===null||e===void 0||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),(e=this._$Dt)===null||e===void 0||e.setConnected(!1)}render(){return xe}}kt.finalized=!0,kt._$litElement$=!0,(el=globalThis.litElementHydrateSupport)===null||el===void 0||el.call(globalThis,{LitElement:kt});const Wg=globalThis.litElementPolyfillSupport;Wg==null||Wg({LitElement:kt}),((tl=globalThis.litElementVersions)!==null&&tl!==void 0?tl:globalThis.litElementVersions=[]).push("3.0.1");/**
1363
+ */var Bl,Ol;class Ft extends Gr{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var e,n;const r=super.createRenderRoot();return(e=(n=this.renderOptions).renderBefore)!==null&&e!==void 0||(n.renderBefore=r.firstChild),r}update(e){const n=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Dt=He(n,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),(e=this._$Dt)===null||e===void 0||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),(e=this._$Dt)===null||e===void 0||e.setConnected(!1)}render(){return Ee}}Ft.finalized=!0,Ft._$litElement$=!0,(Bl=globalThis.litElementHydrateSupport)===null||Bl===void 0||Bl.call(globalThis,{LitElement:Ft});const jg=globalThis.litElementPolyfillSupport;jg==null||jg({LitElement:Ft}),((Ol=globalThis.litElementVersions)!==null&&Ol!==void 0?Ol:globalThis.litElementVersions=[]).push("3.2.0");/**
1568
1364
  * @license
1569
1365
  * Copyright 2017 Google LLC
1570
1366
  * SPDX-License-Identifier: BSD-3-Clause
1571
- */const Ot={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},br=t=>(...e)=>({_$litDirective$:t,values:e});class Gi{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,n,r){this._$Ct=e,this._$AM=n,this._$Ci=r}_$AS(e,n){return this.update(e,n)}update(e,n){return this.render(...n)}}/**
1367
+ */const zt={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Hr=t=>(...e)=>({_$litDirective$:t,values:e});class lo{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,n,r){this._$Ct=e,this._$AM=n,this._$Ci=r}_$AS(e,n){return this.update(e,n)}update(e,n){return this.render(...n)}}/**
1572
1368
  * @license
1573
1369
  * Copyright 2018 Google LLC
1574
1370
  * SPDX-License-Identifier: BSD-3-Clause
1575
- */const e8=br(class extends Gi{constructor(t){var e;if(super(t),t.type!==Ot.ATTRIBUTE||t.name!=="class"||((e=t.strings)===null||e===void 0?void 0:e.length)>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return" "+Object.keys(t).filter(e=>t[e]).join(" ")+" "}update(t,[e]){var n,r;if(this.st===void 0){this.st=new Set,t.strings!==void 0&&(this.et=new Set(t.strings.join(" ").split(/\s/).filter(o=>o!=="")));for(const o in e)e[o]&&!((n=this.et)===null||n===void 0?void 0:n.has(o))&&this.st.add(o);return this.render(e)}const i=t.element.classList;this.st.forEach(o=>{o in e||(i.remove(o),this.st.delete(o))});for(const o in e){const s=!!e[o];s===this.st.has(o)||((r=this.et)===null||r===void 0?void 0:r.has(o))||(s?(i.add(o),this.st.add(o)):(i.remove(o),this.st.delete(o)))}return xe}});/*!
1576
- * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
1371
+ */const J8=Hr(class extends lo{constructor(t){var e;if(super(t),t.type!==zt.ATTRIBUTE||t.name!=="class"||((e=t.strings)===null||e===void 0?void 0:e.length)>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return" "+Object.keys(t).filter(e=>t[e]).join(" ")+" "}update(t,[e]){var n,r;if(this.et===void 0){this.et=new Set,t.strings!==void 0&&(this.st=new Set(t.strings.join(" ").split(/\s/).filter(o=>o!=="")));for(const o in e)e[o]&&!(!((n=this.st)===null||n===void 0)&&n.has(o))&&this.et.add(o);return this.render(e)}const i=t.element.classList;this.et.forEach(o=>{o in e||(i.remove(o),this.et.delete(o))});for(const o in e){const a=!!e[o];a===this.et.has(o)||((r=this.st)===null||r===void 0?void 0:r.has(o))||(a?(i.add(o),this.et.add(o)):(i.remove(o),this.et.delete(o)))}return Ee}});/*!
1372
+ * Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com
1577
1373
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
1578
- */var t8={prefix:"fas",iconName:"arrows-alt-v",icon:[256,512,[],"f338","M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z"]},Xg={prefix:"fas",iconName:"bookmark",icon:[384,512,[],"f02e","M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z"]},n8={prefix:"fas",iconName:"check",icon:[512,512,[],"f00c","M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"]},r8={prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"]},qg={prefix:"fas",iconName:"circle",icon:[512,512,[],"f111","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"]},i8={prefix:"fas",iconName:"ellipsis-h",icon:[512,512,[],"f141","M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"]},o8={prefix:"fas",iconName:"ellipsis-v",icon:[192,512,[],"f142","M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z"]},s8={prefix:"fas",iconName:"exclamation-circle",icon:[512,512,[],"f06a","M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"]},a8={prefix:"fas",iconName:"expand-arrows-alt",icon:[448,512,[],"f31e","M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z"]},Hi={prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z"]},Zg={prefix:"fas",iconName:"info-circle",icon:[512,512,[],"f05a","M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"]},c8={prefix:"fas",iconName:"medal",icon:[512,512,[],"f5a2","M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z"]},Kg={prefix:"fas",iconName:"object-group",icon:[512,512,[],"f247","M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z"]},u8={prefix:"fas",iconName:"pen",icon:[512,512,[],"f304","M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z"]},l8={prefix:"fas",iconName:"question-circle",icon:[512,512,[],"f059","M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z"]},f8={prefix:"fas",iconName:"redo",icon:[512,512,[],"f01e","M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z"]},nl={prefix:"fas",iconName:"share",icon:[512,512,[],"f064","M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"]},h8={prefix:"fas",iconName:"sliders-h",icon:[512,512,[],"f1de","M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z"]},d8={prefix:"fas",iconName:"sort-amount-down",icon:[512,512,[],"f160","M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},p8={prefix:"fas",iconName:"step-backward",icon:[448,512,[],"f048","M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z"]},g8={prefix:"fas",iconName:"step-forward",icon:[448,512,[],"f051","M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z"]},m8={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"]},rl={prefix:"fas",iconName:"trash-alt",icon:[448,512,[],"f2ed","M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},y8={prefix:"fas",iconName:"undo",icon:[512,512,[],"f0e2","M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"]};/*!
1579
- * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
1374
+ * Copyright 2022 Fonticons, Inc.
1375
+ */var $8={prefix:"fas",iconName:"arrow-down-wide-short",icon:[576,512,["sort-amount-asc","sort-amount-down"],"f160","M416 288h-95.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H416c17.67 0 32-14.33 32-32S433.7 288 416 288zM544 32h-223.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H544c17.67 0 32-14.33 32-32S561.7 32 544 32zM352 416h-32c-17.67 0-32 14.33-32 32s14.33 32 32 32h32c17.67 0 31.1-14.33 31.1-32S369.7 416 352 416zM480 160h-159.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H480c17.67 0 32-14.33 32-32S497.7 160 480 160zM192.4 330.7L160 366.1V64.03C160 46.33 145.7 32 128 32S96 46.33 96 64.03v302L63.6 330.7c-6.312-6.883-14.94-10.38-23.61-10.38c-7.719 0-15.47 2.781-21.61 8.414c-13.03 11.95-13.9 32.22-1.969 45.27l87.1 96.09c12.12 13.26 35.06 13.26 47.19 0l87.1-96.09c11.94-13.05 11.06-33.31-1.969-45.27C224.6 316.8 204.4 317.7 192.4 330.7z"]},e5=$8,t5={prefix:"fas",iconName:"arrow-rotate-left",icon:[512,512,[8634,"arrow-left-rotate","arrow-rotate-back","arrow-rotate-backward","undo"],"f0e2","M480 256c0 123.4-100.5 223.9-223.9 223.9c-48.86 0-95.19-15.58-134.2-44.86c-14.14-10.59-17-30.66-6.391-44.81c10.61-14.09 30.69-16.97 44.8-6.375c27.84 20.91 61 31.94 95.89 31.94C344.3 415.8 416 344.1 416 256s-71.67-159.8-159.8-159.8C205.9 96.22 158.6 120.3 128.6 160H192c17.67 0 32 14.31 32 32S209.7 224 192 224H48c-17.67 0-32-14.31-32-32V48c0-17.69 14.33-32 32-32s32 14.31 32 32v70.23C122.1 64.58 186.1 32.11 256.1 32.11C379.5 32.11 480 132.6 480 256z"]},n5=t5,r5={prefix:"fas",iconName:"arrow-rotate-right",icon:[512,512,[8635,"arrow-right-rotate","arrow-rotate-forward","redo"],"f01e","M496 48V192c0 17.69-14.31 32-32 32H320c-17.69 0-32-14.31-32-32s14.31-32 32-32h63.39c-29.97-39.7-77.25-63.78-127.6-63.78C167.7 96.22 96 167.9 96 256s71.69 159.8 159.8 159.8c34.88 0 68.03-11.03 95.88-31.94c14.22-10.53 34.22-7.75 44.81 6.375c10.59 14.16 7.75 34.22-6.375 44.81c-39.03 29.28-85.36 44.86-134.2 44.86C132.5 479.9 32 379.4 32 256s100.5-223.9 223.9-223.9c69.15 0 134 32.47 176.1 86.12V48c0-17.69 14.31-32 32-32S496 30.31 496 48z"]},i5=r5,o5={prefix:"fas",iconName:"backward-step",icon:[320,512,["step-backward"],"f048","M31.1 64.03c-17.67 0-31.1 14.33-31.1 32v319.9c0 17.67 14.33 32 32 32C49.67 447.1 64 433.6 64 415.1V96.03C64 78.36 49.67 64.03 31.1 64.03zM267.5 71.41l-192 159.1C67.82 237.8 64 246.9 64 256c0 9.094 3.82 18.18 11.44 24.62l192 159.1c20.63 17.12 52.51 2.75 52.51-24.62v-319.9C319.1 68.66 288.1 54.28 267.5 71.41z"]},a5=o5,Ug={prefix:"fas",iconName:"bookmark",icon:[384,512,[61591,128278],"f02e","M384 48V512l-192-112L0 512V48C0 21.5 21.5 0 48 0h288C362.5 0 384 21.5 384 48z"]},s5={prefix:"fas",iconName:"check",icon:[448,512,[10004,10003],"f00c","M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"]},c5={prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"]},Gg={prefix:"fas",iconName:"circle",icon:[512,512,[128308,128309,128992,128993,128994,128995,128996,9898,9899,11044,61708,61915,9679],"f111","M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256z"]},u5={prefix:"fas",iconName:"circle-exclamation",icon:[512,512,["exclamation-circle"],"f06a","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM232 152C232 138.8 242.8 128 256 128s24 10.75 24 24v128c0 13.25-10.75 24-24 24S232 293.3 232 280V152zM256 400c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 385.9 273.4 400 256 400z"]},l5=u5,f5={prefix:"fas",iconName:"circle-info",icon:[512,512,["info-circle"],"f05a","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"]},Hg=f5,d5={prefix:"fas",iconName:"circle-question",icon:[512,512,[62108,"question-circle"],"f059","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 400c-18 0-32-14-32-32s13.1-32 32-32c17.1 0 32 14 32 32S273.1 400 256 400zM325.1 258L280 286V288c0 13-11 24-24 24S232 301 232 288V272c0-8 4-16 12-21l57-34C308 213 312 206 312 198C312 186 301.1 176 289.1 176h-51.1C225.1 176 216 186 216 198c0 13-11 24-24 24s-24-11-24-24C168 159 199 128 237.1 128h51.1C329 128 360 159 360 198C360 222 347 245 325.1 258z"]},h5=d5,p5={prefix:"fas",iconName:"ellipsis",icon:[448,512,["ellipsis-h"],"f141","M120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200C94.93 200 120 225.1 120 256zM280 256C280 286.9 254.9 312 224 312C193.1 312 168 286.9 168 256C168 225.1 193.1 200 224 200C254.9 200 280 225.1 280 256zM328 256C328 225.1 353.1 200 384 200C414.9 200 440 225.1 440 256C440 286.9 414.9 312 384 312C353.1 312 328 286.9 328 256z"]},m5=p5,g5={prefix:"fas",iconName:"ellipsis-vertical",icon:[128,512,["ellipsis-v"],"f142","M64 360C94.93 360 120 385.1 120 416C120 446.9 94.93 472 64 472C33.07 472 8 446.9 8 416C8 385.1 33.07 360 64 360zM64 200C94.93 200 120 225.1 120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200zM64 152C33.07 152 8 126.9 8 96C8 65.07 33.07 40 64 40C94.93 40 120 65.07 120 96C120 126.9 94.93 152 64 152z"]},y5=g5,fo={prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M3.853 54.87C10.47 40.9 24.54 32 40 32H472C487.5 32 501.5 40.9 508.1 54.87C514.8 68.84 512.7 85.37 502.1 97.33L320 320.9V448C320 460.1 313.2 471.2 302.3 476.6C291.5 482 278.5 480.9 268.8 473.6L204.8 425.6C196.7 419.6 192 410.1 192 400V320.9L9.042 97.33C-.745 85.37-2.765 68.84 3.854 54.87L3.853 54.87z"]},v5={prefix:"fas",iconName:"forward-step",icon:[320,512,["step-forward"],"f051","M287.1 447.1c17.67 0 31.1-14.33 31.1-32V96.03c0-17.67-14.33-32-32-32c-17.67 0-31.1 14.33-31.1 31.1v319.9C255.1 433.6 270.3 447.1 287.1 447.1zM52.51 440.6l192-159.1c7.625-6.436 11.43-15.53 11.43-24.62c0-9.094-3.809-18.18-11.43-24.62l-192-159.1C31.88 54.28 0 68.66 0 96.03v319.9C0 443.3 31.88 457.7 52.51 440.6z"]},b5=v5,A5={prefix:"fas",iconName:"maximize",icon:[448,512,["expand-arrows-alt"],"f31e","M447.1 319.1v135.1c0 13.26-10.75 23.1-23.1 23.1h-135.1c-12.94 0-24.61-7.781-29.56-19.75c-4.906-11.1-2.203-25.72 6.937-34.87l30.06-30.06L224 323.9l-71.43 71.44l30.06 30.06c9.156 9.156 11.91 22.91 6.937 34.87C184.6 472.2 172.9 479.1 160 479.1H24c-13.25 0-23.1-10.74-23.1-23.1v-135.1c0-12.94 7.781-24.61 19.75-29.56C23.72 288.8 27.88 288 32 288c8.312 0 16.5 3.242 22.63 9.367l30.06 30.06l71.44-71.44L84.69 184.6L54.63 214.6c-9.156 9.156-22.91 11.91-34.87 6.937C7.798 216.6 .0013 204.9 .0013 191.1v-135.1c0-13.26 10.75-23.1 23.1-23.1h135.1c12.94 0 24.61 7.781 29.56 19.75C191.2 55.72 191.1 59.87 191.1 63.1c0 8.312-3.237 16.5-9.362 22.63L152.6 116.7l71.44 71.44l71.43-71.44l-30.06-30.06c-9.156-9.156-11.91-22.91-6.937-34.87c4.937-11.95 16.62-19.75 29.56-19.75h135.1c13.26 0 23.1 10.75 23.1 23.1v135.1c0 12.94-7.781 24.61-19.75 29.56c-11.1 4.906-25.72 2.203-34.87-6.937l-30.06-30.06l-71.43 71.43l71.44 71.44l30.06-30.06c9.156-9.156 22.91-11.91 34.87-6.937C440.2 295.4 447.1 307.1 447.1 319.1z"]},x5=A5,w5={prefix:"fas",iconName:"medal",icon:[512,512,[127941],"f5a2","M223.7 130.8L149.1 7.77C147.1 2.949 141.9 0 136.3 0H16.03c-12.95 0-20.53 14.58-13.1 25.18l111.3 158.9C143.9 156.4 181.7 137.3 223.7 130.8zM256 160c-97.25 0-176 78.75-176 176S158.8 512 256 512s176-78.75 176-176S353.3 160 256 160zM348.5 317.3l-37.88 37l8.875 52.25c1.625 9.25-8.25 16.5-16.63 12l-46.88-24.62L209.1 418.5c-8.375 4.5-18.25-2.75-16.63-12l8.875-52.25l-37.88-37C156.6 310.6 160.5 299 169.9 297.6l52.38-7.625L245.7 242.5c2-4.25 6.125-6.375 10.25-6.375S264.2 238.3 266.2 242.5l23.5 47.5l52.38 7.625C351.6 299 355.4 310.6 348.5 317.3zM495.1 0H375.7c-5.621 0-10.83 2.949-13.72 7.77l-73.76 122.1c42 6.5 79.88 25.62 109.5 53.38l111.3-158.9C516.5 14.58 508.9 0 495.1 0z"]},ho={prefix:"fas",iconName:"object-group",icon:[576,512,[],"f247","M128 160C128 142.3 142.3 128 160 128H288C305.7 128 320 142.3 320 160V256C320 273.7 305.7 288 288 288H160C142.3 288 128 273.7 128 256V160zM288 320C323.3 320 352 291.3 352 256V224H416C433.7 224 448 238.3 448 256V352C448 369.7 433.7 384 416 384H288C270.3 384 256 369.7 256 352V320H288zM32 119.4C12.87 108.4 0 87.69 0 64C0 28.65 28.65 0 64 0C87.69 0 108.4 12.87 119.4 32H456.6C467.6 12.87 488.3 0 512 0C547.3 0 576 28.65 576 64C576 87.69 563.1 108.4 544 119.4V392.6C563.1 403.6 576 424.3 576 448C576 483.3 547.3 512 512 512C488.3 512 467.6 499.1 456.6 480H119.4C108.4 499.1 87.69 512 64 512C28.65 512 0 483.3 0 448C0 424.3 12.87 403.6 32 392.6V119.4zM119.4 96C113.8 105.7 105.7 113.8 96 119.4V392.6C105.7 398.2 113.8 406.3 119.4 416H456.6C462.2 406.3 470.3 398.2 480 392.6V119.4C470.3 113.8 462.2 105.7 456.6 96H119.4z"]},C5={prefix:"fas",iconName:"pen",icon:[512,512,[128394],"f304","M362.7 19.32C387.7-5.678 428.3-5.678 453.3 19.32L492.7 58.75C517.7 83.74 517.7 124.3 492.7 149.3L444.3 197.7L314.3 67.72L362.7 19.32zM421.7 220.3L188.5 453.4C178.1 463.8 165.2 471.5 151.1 475.6L30.77 511C22.35 513.5 13.24 511.2 7.03 504.1C.8198 498.8-1.502 489.7 .976 481.2L36.37 360.9C40.53 346.8 48.16 333.9 58.57 323.5L291.7 90.34L421.7 220.3z"]},Pl={prefix:"fas",iconName:"share",icon:[512,512,["arrow-turn-right","mail-forward"],"f064","M503.7 226.2l-176 151.1c-15.38 13.3-39.69 2.545-39.69-18.16V272.1C132.9 274.3 66.06 312.8 111.4 457.8c5.031 16.09-14.41 28.56-28.06 18.62C39.59 444.6 0 383.8 0 322.3c0-152.2 127.4-184.4 288-186.3V56.02c0-20.67 24.28-31.46 39.69-18.16l176 151.1C514.8 199.4 514.8 216.6 503.7 226.2z"]},S5={prefix:"fas",iconName:"sliders",icon:[512,512,["sliders-h"],"f1de","M0 416C0 398.3 14.33 384 32 384H86.66C99 355.7 127.2 336 160 336C192.8 336 220.1 355.7 233.3 384H480C497.7 384 512 398.3 512 416C512 433.7 497.7 448 480 448H233.3C220.1 476.3 192.8 496 160 496C127.2 496 99 476.3 86.66 448H32C14.33 448 0 433.7 0 416V416zM192 416C192 398.3 177.7 384 160 384C142.3 384 128 398.3 128 416C128 433.7 142.3 448 160 448C177.7 448 192 433.7 192 416zM352 176C384.8 176 412.1 195.7 425.3 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H425.3C412.1 316.3 384.8 336 352 336C319.2 336 291 316.3 278.7 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H278.7C291 195.7 319.2 176 352 176zM384 256C384 238.3 369.7 224 352 224C334.3 224 320 238.3 320 256C320 273.7 334.3 288 352 288C369.7 288 384 273.7 384 256zM480 64C497.7 64 512 78.33 512 96C512 113.7 497.7 128 480 128H265.3C252.1 156.3 224.8 176 192 176C159.2 176 131 156.3 118.7 128H32C14.33 128 0 113.7 0 96C0 78.33 14.33 64 32 64H118.7C131 35.75 159.2 16 192 16C224.8 16 252.1 35.75 265.3 64H480zM160 96C160 113.7 174.3 128 192 128C209.7 128 224 113.7 224 96C224 78.33 209.7 64 192 64C174.3 64 160 78.33 160 96z"]},E5=S5,D5={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM394.8 466.1C393.2 492.3 372.3 512 346.9 512H101.1C75.75 512 54.77 492.3 53.19 466.1L31.1 128H416L394.8 466.1z"]},M5={prefix:"fas",iconName:"trash-can",icon:[448,512,[61460,"trash-alt"],"f2ed","M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM31.1 128H416V448C416 483.3 387.3 512 352 512H95.1C60.65 512 31.1 483.3 31.1 448V128zM111.1 208V432C111.1 440.8 119.2 448 127.1 448C136.8 448 143.1 440.8 143.1 432V208C143.1 199.2 136.8 192 127.1 192C119.2 192 111.1 199.2 111.1 208zM207.1 208V432C207.1 440.8 215.2 448 223.1 448C232.8 448 240 440.8 240 432V208C240 199.2 232.8 192 223.1 192C215.2 192 207.1 199.2 207.1 208zM304 208V432C304 440.8 311.2 448 320 448C328.8 448 336 440.8 336 432V208C336 199.2 328.8 192 320 192C311.2 192 304 199.2 304 208z"]},Fl=M5,T5={prefix:"fas",iconName:"up-down",icon:[256,512,[11021,8597,"arrows-alt-v"],"f338","M249.6 392.3l-104 112c-9.094 9.781-26.09 9.781-35.19 0l-103.1-112c-6.484-6.984-8.219-17.17-4.406-25.92S14.45 352 24 352H80V160H24C14.45 160 5.812 154.3 1.999 145.6C-1.813 136.8-.0781 126.7 6.406 119.7l104-112c9.094-9.781 26.09-9.781 35.19 0l104 112c6.484 6.984 8.219 17.17 4.406 25.92C250.2 154.3 241.5 160 232 160H176v192h56c9.547 0 18.19 5.656 22 14.41S256.1 385.3 249.6 392.3z"]},I5=T5;/*!
1376
+ * Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com
1580
1377
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
1581
- */function A8(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Jg(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function b8(t,e,n){return e&&Jg(t.prototype,e),n&&Jg(t,n),t}function x8(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function _(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{},r=Object.keys(n);typeof Object.getOwnPropertySymbols=="function"&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(i){return Object.getOwnPropertyDescriptor(n,i).enumerable}))),r.forEach(function(i){x8(t,i,n[i])})}return t}function $g(t,e){return v8(t)||w8(t,e)||E8()}function v8(t){if(Array.isArray(t))return t}function w8(t,e){var n=[],r=!0,i=!1,o=void 0;try{for(var s=t[Symbol.iterator](),a;!(r=(a=s.next()).done)&&(n.push(a.value),!(e&&n.length===e));r=!0);}catch(c){i=!0,o=c}finally{try{!r&&s.return!=null&&s.return()}finally{if(i)throw o}}return n}function E8(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}var em=function(){},il={},tm={},S8=null,nm={mark:em,measure:em};try{typeof window!="undefined"&&(il=window),typeof document!="undefined"&&(tm=document),typeof MutationObserver!="undefined"&&(S8=MutationObserver),typeof performance!="undefined"&&(nm=performance)}catch{}var C8=il.navigator||{},rm=C8.userAgent,im=rm===void 0?"":rm,Ts=il,Ie=tm,Ns=nm;Ts.document;var ol=!!Ie.documentElement&&!!Ie.head&&typeof Ie.addEventListener=="function"&&typeof Ie.createElement=="function";~im.indexOf("MSIE")||~im.indexOf("Trident/");var Bt="___FONT_AWESOME___",om="fa",sm="svg-inline--fa",D8="data-fa-i2svg";(function(){try{return!0}catch{return!1}})();var sl={GROUP:"group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},am=Ts.FontAwesomeConfig||{};function M8(t){var e=Ie.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}function I8(t){return t===""?!0:t==="false"?!1:t==="true"?!0:t}if(Ie&&typeof Ie.querySelector=="function"){var T8=[["data-family-prefix","familyPrefix"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]];T8.forEach(function(t){var e=$g(t,2),n=e[0],r=e[1],i=I8(M8(n));i!=null&&(am[r]=i)})}var N8={familyPrefix:om,replacementClass:sm,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},al=_({},N8,am);al.autoReplaceSvg||(al.observeMutations=!1);var Ue=_({},al);Ts.FontAwesomeConfig=Ue;var Pt=Ts||{};Pt[Bt]||(Pt[Bt]={}),Pt[Bt].styles||(Pt[Bt].styles={}),Pt[Bt].hooks||(Pt[Bt].hooks={}),Pt[Bt].shims||(Pt[Bt].shims=[]);var xt=Pt[Bt],L8=[],k8=function t(){Ie.removeEventListener("DOMContentLoaded",t),cl=1,L8.map(function(e){return e()})},cl=!1;ol&&(cl=(Ie.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(Ie.readyState),cl||Ie.addEventListener("DOMContentLoaded",k8)),typeof global!="undefined"&&typeof global.process!="undefined"&&global.process.emit,typeof setImmediate=="undefined"||setImmediate;var xr={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function O8(t){if(!(!t||!ol)){var e=Ie.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=Ie.head.childNodes,r=null,i=n.length-1;i>-1;i--){var o=n[i],s=(o.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(s)>-1&&(r=o)}return Ie.head.insertBefore(e,r),t}}var B8="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function Ls(){for(var t=12,e="";t-- >0;)e+=B8[Math.random()*62|0];return e}function cm(t){return"".concat(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function P8(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,'="').concat(cm(t[n]),'" ')},"").trim()}function um(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,": ").concat(t[n],";")},"")}function lm(t){return t.size!==xr.size||t.x!==xr.x||t.y!==xr.y||t.rotate!==xr.rotate||t.flipX||t.flipY}function fm(t){var e=t.transform,n=t.containerWidth,r=t.iconWidth,i={transform:"translate(".concat(n/2," 256)")},o="translate(".concat(e.x*32,", ").concat(e.y*32,") "),s="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),a="rotate(".concat(e.rotate," 0 0)"),c={transform:"".concat(o," ").concat(s," ").concat(a)},u={transform:"translate(".concat(r/2*-1," -256)")};return{outer:i,inner:c,path:u}}var ul={x:0,y:0,width:"100%",height:"100%"};function hm(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return t.attributes&&(t.attributes.fill||e)&&(t.attributes.fill="black"),t}function F8(t){return t.tag==="g"?t.children:[t]}function z8(t){var e=t.children,n=t.attributes,r=t.main,i=t.mask,o=t.maskId,s=t.transform,a=r.width,c=r.icon,u=i.width,f=i.icon,l=fm({transform:s,containerWidth:u,iconWidth:a}),h={tag:"rect",attributes:_({},ul,{fill:"white"})},d=c.children?{children:c.children.map(hm)}:{},p={tag:"g",attributes:_({},l.inner),children:[hm(_({tag:c.tag,attributes:_({},c.attributes,l.path)},d))]},g={tag:"g",attributes:_({},l.outer),children:[p]},m="mask-".concat(o||Ls()),y="clip-".concat(o||Ls()),x={tag:"mask",attributes:_({},ul,{id:m,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[h,g]},v={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:F8(f)},x]};return e.push(v,{tag:"rect",attributes:_({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(m,")")},ul)}),{children:e,attributes:n}}function R8(t){var e=t.children,n=t.attributes,r=t.main,i=t.transform,o=t.styles,s=um(o);if(s.length>0&&(n.style=s),lm(i)){var a=fm({transform:i,containerWidth:r.width,iconWidth:r.width});e.push({tag:"g",attributes:_({},a.outer),children:[{tag:"g",attributes:_({},a.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:_({},r.icon.attributes,a.path)}]}]})}else e.push(r.icon);return{children:e,attributes:n}}function U8(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,s=t.transform;if(lm(s)&&n.found&&!r.found){var a=n.width,c=n.height,u={x:a/c/2,y:.5};i.style=um(_({},o,{"transform-origin":"".concat(u.x+s.x/16,"em ").concat(u.y+s.y/16,"em")}))}return[{tag:"svg",attributes:i,children:e}]}function j8(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,o=t.symbol,s=o===!0?"".concat(e,"-").concat(Ue.familyPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:_({},i,{id:s}),children:r}]}]}function G8(t){var e=t.icons,n=e.main,r=e.mask,i=t.prefix,o=t.iconName,s=t.transform,a=t.symbol,c=t.title,u=t.maskId,f=t.titleId,l=t.extra,h=t.watchable,d=h===void 0?!1:h,p=r.found?r:n,g=p.width,m=p.height,y=i==="fak",x=y?"":"fa-w-".concat(Math.ceil(g/m*16)),v=[Ue.replacementClass,o?"".concat(Ue.familyPrefix,"-").concat(o):"",x].filter(function(O){return l.classes.indexOf(O)===-1}).filter(function(O){return O!==""||!!O}).concat(l.classes).join(" "),S={children:[],attributes:_({},l.attributes,{"data-prefix":i,"data-icon":o,class:v,role:l.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(g," ").concat(m)})},b=y&&!~l.classes.indexOf("fa-fw")?{width:"".concat(g/m*16*.0625,"em")}:{};d&&(S.attributes[D8]=""),c&&S.children.push({tag:"title",attributes:{id:S.attributes["aria-labelledby"]||"title-".concat(f||Ls())},children:[c]});var A=_({},S,{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:s,symbol:a,styles:_({},b,l.styles)}),w=r.found&&n.found?z8(A):R8(A),E=w.children,B=w.attributes;return A.children=E,A.attributes=B,a?j8(A):U8(A)}var dm=function(){};Ue.measurePerformance&&Ns&&Ns.mark&&Ns.measure;var H8=function(e,n){return function(r,i,o,s){return e.call(n,r,i,o,s)}},ll=function(e,n,r,i){var o=Object.keys(e),s=o.length,a=i!==void 0?H8(n,i):n,c,u,f;for(r===void 0?(c=1,f=e[o[0]]):(c=0,f=r);c<s;c++)u=o[c],f=a(f,e[u],u,e);return f};function pm(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,i=r===void 0?!1:r,o=Object.keys(e).reduce(function(s,a){var c=e[a],u=!!c.icon;return u?s[c.iconName]=c.icon:s[a]=c,s},{});typeof xt.hooks.addPack=="function"&&!i?xt.hooks.addPack(t,o):xt.styles[t]=_({},xt.styles[t]||{},o),t==="fas"&&pm("fa",e)}var gm=xt.styles,Q8=xt.shims,mm=function(){var e=function(i){return ll(gm,function(o,s,a){return o[a]=ll(s,i,{}),o},{})};e(function(r,i,o){return i[3]&&(r[i[3]]=o),r}),e(function(r,i,o){var s=i[2];return r[o]=o,s.forEach(function(a){r[a]=o}),r});var n="far"in gm;ll(Q8,function(r,i){var o=i[0],s=i[1],a=i[2];return s==="far"&&!n&&(s="fas"),r[o]={prefix:s,iconName:a},r},{})};mm(),xt.styles;function ym(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}function Am(t){var e=t.tag,n=t.attributes,r=n===void 0?{}:n,i=t.children,o=i===void 0?[]:i;return typeof t=="string"?cm(t):"<".concat(e," ").concat(P8(r),">").concat(o.map(Am).join(""),"</").concat(e,">")}function fl(t){this.name="MissingIcon",this.message=t||"Icon unavailable",this.stack=new Error().stack}fl.prototype=Object.create(Error.prototype),fl.prototype.constructor=fl;var ks={fill:"currentColor"},bm={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};_({},ks,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"});var hl=_({},bm,{attributeName:"opacity"});_({},ks,{cx:"256",cy:"364",r:"28"}),_({},bm,{attributeName:"r",values:"28;14;28;28;14;28;"}),_({},hl,{values:"1;0;1;1;0;1;"}),_({},ks,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),_({},hl,{values:"1;0;0;0;0;1;"}),_({},ks,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),_({},hl,{values:"0;0;1;1;0;0;"}),xt.styles;function xm(t){var e=t[0],n=t[1],r=t.slice(4),i=$g(r,1),o=i[0],s=null;return Array.isArray(o)?s={tag:"g",attributes:{class:"".concat(Ue.familyPrefix,"-").concat(sl.GROUP)},children:[{tag:"path",attributes:{class:"".concat(Ue.familyPrefix,"-").concat(sl.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(Ue.familyPrefix,"-").concat(sl.PRIMARY),fill:"currentColor",d:o[1]}}]}:s={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:s}}xt.styles;var V8=`svg:not(:root).svg-inline--fa {
1378
+ * Copyright 2022 Fonticons, Inc.
1379
+ */function Qg(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function N(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Qg(Object(n),!0).forEach(function(r){L5(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Qg(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function cs(t){return cs=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},cs(t)}function k5(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Vg(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function N5(t,e,n){return e&&Vg(t.prototype,e),n&&Vg(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function L5(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function zl(t,e){return O5(t)||F5(t,e)||Yg(t,e)||R5()}function us(t){return B5(t)||P5(t)||Yg(t)||z5()}function B5(t){if(Array.isArray(t))return Rl(t)}function O5(t){if(Array.isArray(t))return t}function P5(t){if(typeof Symbol!="undefined"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function F5(t,e){var n=t==null?null:typeof Symbol!="undefined"&&t[Symbol.iterator]||t["@@iterator"];if(n!=null){var r=[],i=!0,o=!1,a,s;try{for(n=n.call(t);!(i=(a=n.next()).done)&&(r.push(a.value),!(e&&r.length===e));i=!0);}catch(c){o=!0,s=c}finally{try{!i&&n.return!=null&&n.return()}finally{if(o)throw s}}return r}}function Yg(t,e){if(!!t){if(typeof t=="string")return Rl(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);if(n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set")return Array.from(t);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Rl(t,e)}}function Rl(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function z5(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
1380
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function R5(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
1381
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var _g=function(){},jl={},Wg={},Xg=null,Zg={mark:_g,measure:_g};try{typeof window!="undefined"&&(jl=window),typeof document!="undefined"&&(Wg=document),typeof MutationObserver!="undefined"&&(Xg=MutationObserver),typeof performance!="undefined"&&(Zg=performance)}catch{}var j5=jl.navigator||{},qg=j5.userAgent,Kg=qg===void 0?"":qg,pn=jl,te=Wg,Jg=Xg,ls=Zg;pn.document;var Rt=!!te.documentElement&&!!te.head&&typeof te.addEventListener=="function"&&typeof te.createElement=="function",$g=~Kg.indexOf("MSIE")||~Kg.indexOf("Trident/"),jt="___FONT_AWESOME___",Ul=16,e1="fa",t1="svg-inline--fa",er="data-fa-i2svg",Gl="data-fa-pseudo-element",U5="data-fa-pseudo-element-pending",Hl="data-prefix",Ql="data-icon",n1="fontawesome-i2svg",G5="async",H5=["HTML","HEAD","STYLE","SCRIPT"],r1=function(){try{return!0}catch{return!1}}(),Vl={fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit","fa-kit":"kit",fa:"solid"},fs={solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"},i1={fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},Q5={"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},V5=/fa[srltdbk\-\ ]/,o1="fa-layers-text",Y5=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Kit)?.*/i,_5={"900":"fas","400":"far",normal:"far","300":"fal","100":"fat"},a1=[1,2,3,4,5,6,7,8,9,10],W5=a1.concat([11,12,13,14,15,16,17,18,19,20]),X5=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],tr={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},Z5=[].concat(us(Object.keys(fs)),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",tr.GROUP,tr.SWAP_OPACITY,tr.PRIMARY,tr.SECONDARY]).concat(a1.map(function(t){return"".concat(t,"x")})).concat(W5.map(function(t){return"w-".concat(t)})),s1=pn.FontAwesomeConfig||{};function q5(t){var e=te.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}function K5(t){return t===""?!0:t==="false"?!1:t==="true"?!0:t}if(te&&typeof te.querySelector=="function"){var J5=[["data-family-prefix","familyPrefix"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]];J5.forEach(function(t){var e=zl(t,2),n=e[0],r=e[1],i=K5(q5(n));i!=null&&(s1[r]=i)})}var $5={familyPrefix:e1,styleDefault:"solid",replacementClass:t1,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},po=N(N({},$5),s1);po.autoReplaceSvg||(po.observeMutations=!1);var F={};Object.keys(po).forEach(function(t){Object.defineProperty(F,t,{enumerable:!0,set:function(n){po[t]=n,ds.forEach(function(r){return r(F)})},get:function(){return po[t]}})}),pn.FontAwesomeConfig=F;var ds=[];function eT(t){return ds.push(t),function(){ds.splice(ds.indexOf(t),1)}}var mn=Ul,At={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function tT(t){if(!(!t||!Rt)){var e=te.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=te.head.childNodes,r=null,i=n.length-1;i>-1;i--){var o=n[i],a=(o.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(a)>-1&&(r=o)}return te.head.insertBefore(e,r),t}}var nT="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function mo(){for(var t=12,e="";t-- >0;)e+=nT[Math.random()*62|0];return e}function Qr(t){for(var e=[],n=(t||[]).length>>>0;n--;)e[n]=t[n];return e}function Yl(t){return t.classList?Qr(t.classList):(t.getAttribute("class")||"").split(" ").filter(function(e){return e})}function c1(t){return"".concat(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function rT(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,'="').concat(c1(t[n]),'" ')},"").trim()}function hs(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,": ").concat(t[n].trim(),";")},"")}function _l(t){return t.size!==At.size||t.x!==At.x||t.y!==At.y||t.rotate!==At.rotate||t.flipX||t.flipY}function iT(t){var e=t.transform,n=t.containerWidth,r=t.iconWidth,i={transform:"translate(".concat(n/2," 256)")},o="translate(".concat(e.x*32,", ").concat(e.y*32,") "),a="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),s="rotate(".concat(e.rotate," 0 0)"),c={transform:"".concat(o," ").concat(a," ").concat(s)},u={transform:"translate(".concat(r/2*-1," -256)")};return{outer:i,inner:c,path:u}}function oT(t){var e=t.transform,n=t.width,r=n===void 0?Ul:n,i=t.height,o=i===void 0?Ul:i,a=t.startCentered,s=a===void 0?!1:a,c="";return s&&$g?c+="translate(".concat(e.x/mn-r/2,"em, ").concat(e.y/mn-o/2,"em) "):s?c+="translate(calc(-50% + ".concat(e.x/mn,"em), calc(-50% + ").concat(e.y/mn,"em)) "):c+="translate(".concat(e.x/mn,"em, ").concat(e.y/mn,"em) "),c+="scale(".concat(e.size/mn*(e.flipX?-1:1),", ").concat(e.size/mn*(e.flipY?-1:1),") "),c+="rotate(".concat(e.rotate,"deg) "),c}var aT=`:root, :host {
1382
+ --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";
1383
+ --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";
1384
+ --fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";
1385
+ --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin";
1386
+ --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone";
1387
+ --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";
1388
+ }
1389
+
1390
+ svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
1582
1391
  overflow: visible;
1392
+ box-sizing: content-box;
1583
1393
  }
1584
1394
 
1585
1395
  .svg-inline--fa {
1586
- display: inline-block;
1587
- font-size: inherit;
1396
+ display: var(--fa-display, inline-block);
1588
1397
  height: 1em;
1589
1398
  overflow: visible;
1590
1399
  vertical-align: -0.125em;
1591
1400
  }
1592
- .svg-inline--fa.fa-lg {
1593
- vertical-align: -0.225em;
1594
- }
1595
- .svg-inline--fa.fa-w-1 {
1596
- width: 0.0625em;
1597
- }
1598
- .svg-inline--fa.fa-w-2 {
1599
- width: 0.125em;
1600
- }
1601
- .svg-inline--fa.fa-w-3 {
1602
- width: 0.1875em;
1603
- }
1604
- .svg-inline--fa.fa-w-4 {
1605
- width: 0.25em;
1606
- }
1607
- .svg-inline--fa.fa-w-5 {
1608
- width: 0.3125em;
1401
+ .svg-inline--fa.fa-2xs {
1402
+ vertical-align: 0.1em;
1609
1403
  }
1610
- .svg-inline--fa.fa-w-6 {
1611
- width: 0.375em;
1404
+ .svg-inline--fa.fa-xs {
1405
+ vertical-align: 0em;
1612
1406
  }
1613
- .svg-inline--fa.fa-w-7 {
1614
- width: 0.4375em;
1407
+ .svg-inline--fa.fa-sm {
1408
+ vertical-align: -0.0714285705em;
1615
1409
  }
1616
- .svg-inline--fa.fa-w-8 {
1617
- width: 0.5em;
1618
- }
1619
- .svg-inline--fa.fa-w-9 {
1620
- width: 0.5625em;
1621
- }
1622
- .svg-inline--fa.fa-w-10 {
1623
- width: 0.625em;
1624
- }
1625
- .svg-inline--fa.fa-w-11 {
1626
- width: 0.6875em;
1627
- }
1628
- .svg-inline--fa.fa-w-12 {
1629
- width: 0.75em;
1630
- }
1631
- .svg-inline--fa.fa-w-13 {
1632
- width: 0.8125em;
1633
- }
1634
- .svg-inline--fa.fa-w-14 {
1635
- width: 0.875em;
1636
- }
1637
- .svg-inline--fa.fa-w-15 {
1638
- width: 0.9375em;
1639
- }
1640
- .svg-inline--fa.fa-w-16 {
1641
- width: 1em;
1642
- }
1643
- .svg-inline--fa.fa-w-17 {
1644
- width: 1.0625em;
1645
- }
1646
- .svg-inline--fa.fa-w-18 {
1647
- width: 1.125em;
1410
+ .svg-inline--fa.fa-lg {
1411
+ vertical-align: -0.2em;
1648
1412
  }
1649
- .svg-inline--fa.fa-w-19 {
1650
- width: 1.1875em;
1413
+ .svg-inline--fa.fa-xl {
1414
+ vertical-align: -0.25em;
1651
1415
  }
1652
- .svg-inline--fa.fa-w-20 {
1653
- width: 1.25em;
1416
+ .svg-inline--fa.fa-2xl {
1417
+ vertical-align: -0.3125em;
1654
1418
  }
1655
1419
  .svg-inline--fa.fa-pull-left {
1656
- margin-right: 0.3em;
1420
+ margin-right: var(--fa-pull-margin, 0.3em);
1657
1421
  width: auto;
1658
1422
  }
1659
1423
  .svg-inline--fa.fa-pull-right {
1660
- margin-left: 0.3em;
1424
+ margin-left: var(--fa-pull-margin, 0.3em);
1661
1425
  width: auto;
1662
1426
  }
1663
- .svg-inline--fa.fa-border {
1664
- height: 1.5em;
1665
- }
1666
1427
  .svg-inline--fa.fa-li {
1667
- width: 2em;
1428
+ width: var(--fa-li-width, 2em);
1429
+ top: 0.25em;
1668
1430
  }
1669
1431
  .svg-inline--fa.fa-fw {
1670
- width: 1.25em;
1432
+ width: var(--fa-fw-width, 1.25em);
1671
1433
  }
1672
1434
 
1673
1435
  .fa-layers svg.svg-inline--fa {
@@ -1679,6 +1441,12 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1679
1441
  top: 0;
1680
1442
  }
1681
1443
 
1444
+ .fa-layers-counter, .fa-layers-text {
1445
+ display: inline-block;
1446
+ position: absolute;
1447
+ text-align: center;
1448
+ }
1449
+
1682
1450
  .fa-layers {
1683
1451
  display: inline-block;
1684
1452
  height: 1em;
@@ -1692,12 +1460,6 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1692
1460
  transform-origin: center center;
1693
1461
  }
1694
1462
 
1695
- .fa-layers-counter, .fa-layers-text {
1696
- display: inline-block;
1697
- position: absolute;
1698
- text-align: center;
1699
- }
1700
-
1701
1463
  .fa-layers-text {
1702
1464
  left: 50%;
1703
1465
  top: 50%;
@@ -1708,80 +1470,64 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1708
1470
  }
1709
1471
 
1710
1472
  .fa-layers-counter {
1711
- background-color: #ff253a;
1712
- border-radius: 1em;
1713
- -webkit-box-sizing: border-box;
1714
- box-sizing: border-box;
1715
- color: #fff;
1716
- height: 1.5em;
1717
- line-height: 1;
1718
- max-width: 5em;
1719
- min-width: 1.5em;
1473
+ background-color: var(--fa-counter-background-color, #ff253a);
1474
+ border-radius: var(--fa-counter-border-radius, 1em);
1475
+ box-sizing: border-box;
1476
+ color: var(--fa-inverse, #fff);
1477
+ line-height: var(--fa-counter-line-height, 1);
1478
+ max-width: var(--fa-counter-max-width, 5em);
1479
+ min-width: var(--fa-counter-min-width, 1.5em);
1720
1480
  overflow: hidden;
1721
- padding: 0.25em;
1722
- right: 0;
1481
+ padding: var(--fa-counter-padding, 0.25em 0.5em);
1482
+ right: var(--fa-right, 0);
1723
1483
  text-overflow: ellipsis;
1724
- top: 0;
1725
- -webkit-transform: scale(0.25);
1726
- transform: scale(0.25);
1484
+ top: var(--fa-top, 0);
1485
+ -webkit-transform: scale(var(--fa-counter-scale, 0.25));
1486
+ transform: scale(var(--fa-counter-scale, 0.25));
1727
1487
  -webkit-transform-origin: top right;
1728
1488
  transform-origin: top right;
1729
1489
  }
1730
1490
 
1731
1491
  .fa-layers-bottom-right {
1732
- bottom: 0;
1733
- right: 0;
1492
+ bottom: var(--fa-bottom, 0);
1493
+ right: var(--fa-right, 0);
1734
1494
  top: auto;
1735
- -webkit-transform: scale(0.25);
1736
- transform: scale(0.25);
1495
+ -webkit-transform: scale(var(--fa-layers-scale, 0.25));
1496
+ transform: scale(var(--fa-layers-scale, 0.25));
1737
1497
  -webkit-transform-origin: bottom right;
1738
1498
  transform-origin: bottom right;
1739
1499
  }
1740
1500
 
1741
1501
  .fa-layers-bottom-left {
1742
- bottom: 0;
1743
- left: 0;
1502
+ bottom: var(--fa-bottom, 0);
1503
+ left: var(--fa-left, 0);
1744
1504
  right: auto;
1745
1505
  top: auto;
1746
- -webkit-transform: scale(0.25);
1747
- transform: scale(0.25);
1506
+ -webkit-transform: scale(var(--fa-layers-scale, 0.25));
1507
+ transform: scale(var(--fa-layers-scale, 0.25));
1748
1508
  -webkit-transform-origin: bottom left;
1749
1509
  transform-origin: bottom left;
1750
1510
  }
1751
1511
 
1752
1512
  .fa-layers-top-right {
1753
- right: 0;
1754
- top: 0;
1755
- -webkit-transform: scale(0.25);
1756
- transform: scale(0.25);
1513
+ top: var(--fa-top, 0);
1514
+ right: var(--fa-right, 0);
1515
+ -webkit-transform: scale(var(--fa-layers-scale, 0.25));
1516
+ transform: scale(var(--fa-layers-scale, 0.25));
1757
1517
  -webkit-transform-origin: top right;
1758
1518
  transform-origin: top right;
1759
1519
  }
1760
1520
 
1761
1521
  .fa-layers-top-left {
1762
- left: 0;
1522
+ left: var(--fa-left, 0);
1763
1523
  right: auto;
1764
- top: 0;
1765
- -webkit-transform: scale(0.25);
1766
- transform: scale(0.25);
1524
+ top: var(--fa-top, 0);
1525
+ -webkit-transform: scale(var(--fa-layers-scale, 0.25));
1526
+ transform: scale(var(--fa-layers-scale, 0.25));
1767
1527
  -webkit-transform-origin: top left;
1768
1528
  transform-origin: top left;
1769
1529
  }
1770
1530
 
1771
- .fa-lg {
1772
- font-size: 1.3333333333em;
1773
- line-height: 0.75em;
1774
- vertical-align: -0.0667em;
1775
- }
1776
-
1777
- .fa-xs {
1778
- font-size: 0.75em;
1779
- }
1780
-
1781
- .fa-sm {
1782
- font-size: 0.875em;
1783
- }
1784
-
1785
1531
  .fa-1x {
1786
1532
  font-size: 1em;
1787
1533
  }
@@ -1822,6 +1568,42 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1822
1568
  font-size: 10em;
1823
1569
  }
1824
1570
 
1571
+ .fa-2xs {
1572
+ font-size: 0.625em;
1573
+ line-height: 0.1em;
1574
+ vertical-align: 0.225em;
1575
+ }
1576
+
1577
+ .fa-xs {
1578
+ font-size: 0.75em;
1579
+ line-height: 0.0833333337em;
1580
+ vertical-align: 0.125em;
1581
+ }
1582
+
1583
+ .fa-sm {
1584
+ font-size: 0.875em;
1585
+ line-height: 0.0714285718em;
1586
+ vertical-align: 0.0535714295em;
1587
+ }
1588
+
1589
+ .fa-lg {
1590
+ font-size: 1.25em;
1591
+ line-height: 0.05em;
1592
+ vertical-align: -0.075em;
1593
+ }
1594
+
1595
+ .fa-xl {
1596
+ font-size: 1.5em;
1597
+ line-height: 0.0416666682em;
1598
+ vertical-align: -0.125em;
1599
+ }
1600
+
1601
+ .fa-2xl {
1602
+ font-size: 2em;
1603
+ line-height: 0.03125em;
1604
+ vertical-align: -0.1875em;
1605
+ }
1606
+
1825
1607
  .fa-fw {
1826
1608
  text-align: center;
1827
1609
  width: 1.25em;
@@ -1829,7 +1611,7 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1829
1611
 
1830
1612
  .fa-ul {
1831
1613
  list-style-type: none;
1832
- margin-left: 2.5em;
1614
+ margin-left: var(--fa-li-margin, 2.5em);
1833
1615
  padding-left: 0;
1834
1616
  }
1835
1617
  .fa-ul > li {
@@ -1837,52 +1619,376 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1837
1619
  }
1838
1620
 
1839
1621
  .fa-li {
1840
- left: -2em;
1622
+ left: calc(var(--fa-li-width, 2em) * -1);
1841
1623
  position: absolute;
1842
1624
  text-align: center;
1843
- width: 2em;
1625
+ width: var(--fa-li-width, 2em);
1844
1626
  line-height: inherit;
1845
1627
  }
1846
1628
 
1847
1629
  .fa-border {
1848
- border: solid 0.08em #eee;
1849
- border-radius: 0.1em;
1850
- padding: 0.2em 0.25em 0.15em;
1630
+ border-color: var(--fa-border-color, #eee);
1631
+ border-radius: var(--fa-border-radius, 0.1em);
1632
+ border-style: var(--fa-border-style, solid);
1633
+ border-width: var(--fa-border-width, 0.08em);
1634
+ padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);
1851
1635
  }
1852
1636
 
1853
1637
  .fa-pull-left {
1854
1638
  float: left;
1639
+ margin-right: var(--fa-pull-margin, 0.3em);
1855
1640
  }
1856
1641
 
1857
1642
  .fa-pull-right {
1858
1643
  float: right;
1644
+ margin-left: var(--fa-pull-margin, 0.3em);
1645
+ }
1646
+
1647
+ .fa-beat {
1648
+ -webkit-animation-name: fa-beat;
1649
+ animation-name: fa-beat;
1650
+ -webkit-animation-delay: var(--fa-animation-delay, 0);
1651
+ animation-delay: var(--fa-animation-delay, 0);
1652
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1653
+ animation-direction: var(--fa-animation-direction, normal);
1654
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
1655
+ animation-duration: var(--fa-animation-duration, 1s);
1656
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1657
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1658
+ -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
1659
+ animation-timing-function: var(--fa-animation-timing, ease-in-out);
1660
+ }
1661
+
1662
+ .fa-bounce {
1663
+ -webkit-animation-name: fa-bounce;
1664
+ animation-name: fa-bounce;
1665
+ -webkit-animation-delay: var(--fa-animation-delay, 0);
1666
+ animation-delay: var(--fa-animation-delay, 0);
1667
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1668
+ animation-direction: var(--fa-animation-direction, normal);
1669
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
1670
+ animation-duration: var(--fa-animation-duration, 1s);
1671
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1672
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1673
+ -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
1674
+ animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
1675
+ }
1676
+
1677
+ .fa-fade {
1678
+ -webkit-animation-name: fa-fade;
1679
+ animation-name: fa-fade;
1680
+ -webkit-animation-delay: var(--fa-animation-delay, 0);
1681
+ animation-delay: var(--fa-animation-delay, 0);
1682
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1683
+ animation-direction: var(--fa-animation-direction, normal);
1684
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
1685
+ animation-duration: var(--fa-animation-duration, 1s);
1686
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1687
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1688
+ -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
1689
+ animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
1690
+ }
1691
+
1692
+ .fa-beat-fade {
1693
+ -webkit-animation-name: fa-beat-fade;
1694
+ animation-name: fa-beat-fade;
1695
+ -webkit-animation-delay: var(--fa-animation-delay, 0);
1696
+ animation-delay: var(--fa-animation-delay, 0);
1697
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1698
+ animation-direction: var(--fa-animation-direction, normal);
1699
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
1700
+ animation-duration: var(--fa-animation-duration, 1s);
1701
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1702
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1703
+ -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
1704
+ animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
1705
+ }
1706
+
1707
+ .fa-flip {
1708
+ -webkit-animation-name: fa-flip;
1709
+ animation-name: fa-flip;
1710
+ -webkit-animation-delay: var(--fa-animation-delay, 0);
1711
+ animation-delay: var(--fa-animation-delay, 0);
1712
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1713
+ animation-direction: var(--fa-animation-direction, normal);
1714
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
1715
+ animation-duration: var(--fa-animation-duration, 1s);
1716
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1717
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1718
+ -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
1719
+ animation-timing-function: var(--fa-animation-timing, ease-in-out);
1720
+ }
1721
+
1722
+ .fa-shake {
1723
+ -webkit-animation-name: fa-shake;
1724
+ animation-name: fa-shake;
1725
+ -webkit-animation-delay: var(--fa-animation-delay, 0);
1726
+ animation-delay: var(--fa-animation-delay, 0);
1727
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1728
+ animation-direction: var(--fa-animation-direction, normal);
1729
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
1730
+ animation-duration: var(--fa-animation-duration, 1s);
1731
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1732
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1733
+ -webkit-animation-timing-function: var(--fa-animation-timing, linear);
1734
+ animation-timing-function: var(--fa-animation-timing, linear);
1859
1735
  }
1860
1736
 
1861
- .fa.fa-pull-left,
1862
- .fas.fa-pull-left,
1863
- .far.fa-pull-left,
1864
- .fal.fa-pull-left,
1865
- .fab.fa-pull-left {
1866
- margin-right: 0.3em;
1737
+ .fa-spin {
1738
+ -webkit-animation-name: fa-spin;
1739
+ animation-name: fa-spin;
1740
+ -webkit-animation-delay: var(--fa-animation-delay, 0);
1741
+ animation-delay: var(--fa-animation-delay, 0);
1742
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1743
+ animation-direction: var(--fa-animation-direction, normal);
1744
+ -webkit-animation-duration: var(--fa-animation-duration, 2s);
1745
+ animation-duration: var(--fa-animation-duration, 2s);
1746
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1747
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1748
+ -webkit-animation-timing-function: var(--fa-animation-timing, linear);
1749
+ animation-timing-function: var(--fa-animation-timing, linear);
1750
+ }
1751
+
1752
+ .fa-spin-reverse {
1753
+ --fa-animation-direction: reverse;
1754
+ }
1755
+
1756
+ .fa-pulse,
1757
+ .fa-spin-pulse {
1758
+ -webkit-animation-name: fa-spin;
1759
+ animation-name: fa-spin;
1760
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1761
+ animation-direction: var(--fa-animation-direction, normal);
1762
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
1763
+ animation-duration: var(--fa-animation-duration, 1s);
1764
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1765
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1766
+ -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
1767
+ animation-timing-function: var(--fa-animation-timing, steps(8));
1768
+ }
1769
+
1770
+ @media (prefers-reduced-motion: reduce) {
1771
+ .fa-beat,
1772
+ .fa-bounce,
1773
+ .fa-fade,
1774
+ .fa-beat-fade,
1775
+ .fa-flip,
1776
+ .fa-pulse,
1777
+ .fa-shake,
1778
+ .fa-spin,
1779
+ .fa-spin-pulse {
1780
+ -webkit-animation-delay: -1ms;
1781
+ animation-delay: -1ms;
1782
+ -webkit-animation-duration: 1ms;
1783
+ animation-duration: 1ms;
1784
+ -webkit-animation-iteration-count: 1;
1785
+ animation-iteration-count: 1;
1786
+ transition-delay: 0s;
1787
+ transition-duration: 0s;
1788
+ }
1867
1789
  }
1868
- .fa.fa-pull-right,
1869
- .fas.fa-pull-right,
1870
- .far.fa-pull-right,
1871
- .fal.fa-pull-right,
1872
- .fab.fa-pull-right {
1873
- margin-left: 0.3em;
1790
+ @-webkit-keyframes fa-beat {
1791
+ 0%, 90% {
1792
+ -webkit-transform: scale(1);
1793
+ transform: scale(1);
1794
+ }
1795
+ 45% {
1796
+ -webkit-transform: scale(var(--fa-beat-scale, 1.25));
1797
+ transform: scale(var(--fa-beat-scale, 1.25));
1798
+ }
1874
1799
  }
1875
-
1876
- .fa-spin {
1877
- -webkit-animation: fa-spin 2s infinite linear;
1878
- animation: fa-spin 2s infinite linear;
1800
+ @keyframes fa-beat {
1801
+ 0%, 90% {
1802
+ -webkit-transform: scale(1);
1803
+ transform: scale(1);
1804
+ }
1805
+ 45% {
1806
+ -webkit-transform: scale(var(--fa-beat-scale, 1.25));
1807
+ transform: scale(var(--fa-beat-scale, 1.25));
1808
+ }
1879
1809
  }
1880
-
1881
- .fa-pulse {
1882
- -webkit-animation: fa-spin 1s infinite steps(8);
1883
- animation: fa-spin 1s infinite steps(8);
1810
+ @-webkit-keyframes fa-bounce {
1811
+ 0% {
1812
+ -webkit-transform: scale(1, 1) translateY(0);
1813
+ transform: scale(1, 1) translateY(0);
1814
+ }
1815
+ 10% {
1816
+ -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
1817
+ transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
1818
+ }
1819
+ 30% {
1820
+ -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
1821
+ transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
1822
+ }
1823
+ 50% {
1824
+ -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
1825
+ transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
1826
+ }
1827
+ 57% {
1828
+ -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
1829
+ transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
1830
+ }
1831
+ 64% {
1832
+ -webkit-transform: scale(1, 1) translateY(0);
1833
+ transform: scale(1, 1) translateY(0);
1834
+ }
1835
+ 100% {
1836
+ -webkit-transform: scale(1, 1) translateY(0);
1837
+ transform: scale(1, 1) translateY(0);
1838
+ }
1839
+ }
1840
+ @keyframes fa-bounce {
1841
+ 0% {
1842
+ -webkit-transform: scale(1, 1) translateY(0);
1843
+ transform: scale(1, 1) translateY(0);
1844
+ }
1845
+ 10% {
1846
+ -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
1847
+ transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
1848
+ }
1849
+ 30% {
1850
+ -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
1851
+ transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
1852
+ }
1853
+ 50% {
1854
+ -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
1855
+ transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
1856
+ }
1857
+ 57% {
1858
+ -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
1859
+ transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
1860
+ }
1861
+ 64% {
1862
+ -webkit-transform: scale(1, 1) translateY(0);
1863
+ transform: scale(1, 1) translateY(0);
1864
+ }
1865
+ 100% {
1866
+ -webkit-transform: scale(1, 1) translateY(0);
1867
+ transform: scale(1, 1) translateY(0);
1868
+ }
1869
+ }
1870
+ @-webkit-keyframes fa-fade {
1871
+ 50% {
1872
+ opacity: var(--fa-fade-opacity, 0.4);
1873
+ }
1874
+ }
1875
+ @keyframes fa-fade {
1876
+ 50% {
1877
+ opacity: var(--fa-fade-opacity, 0.4);
1878
+ }
1879
+ }
1880
+ @-webkit-keyframes fa-beat-fade {
1881
+ 0%, 100% {
1882
+ opacity: var(--fa-beat-fade-opacity, 0.4);
1883
+ -webkit-transform: scale(1);
1884
+ transform: scale(1);
1885
+ }
1886
+ 50% {
1887
+ opacity: 1;
1888
+ -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
1889
+ transform: scale(var(--fa-beat-fade-scale, 1.125));
1890
+ }
1891
+ }
1892
+ @keyframes fa-beat-fade {
1893
+ 0%, 100% {
1894
+ opacity: var(--fa-beat-fade-opacity, 0.4);
1895
+ -webkit-transform: scale(1);
1896
+ transform: scale(1);
1897
+ }
1898
+ 50% {
1899
+ opacity: 1;
1900
+ -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
1901
+ transform: scale(var(--fa-beat-fade-scale, 1.125));
1902
+ }
1903
+ }
1904
+ @-webkit-keyframes fa-flip {
1905
+ 50% {
1906
+ -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
1907
+ transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
1908
+ }
1909
+ }
1910
+ @keyframes fa-flip {
1911
+ 50% {
1912
+ -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
1913
+ transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
1914
+ }
1915
+ }
1916
+ @-webkit-keyframes fa-shake {
1917
+ 0% {
1918
+ -webkit-transform: rotate(-15deg);
1919
+ transform: rotate(-15deg);
1920
+ }
1921
+ 4% {
1922
+ -webkit-transform: rotate(15deg);
1923
+ transform: rotate(15deg);
1924
+ }
1925
+ 8%, 24% {
1926
+ -webkit-transform: rotate(-18deg);
1927
+ transform: rotate(-18deg);
1928
+ }
1929
+ 12%, 28% {
1930
+ -webkit-transform: rotate(18deg);
1931
+ transform: rotate(18deg);
1932
+ }
1933
+ 16% {
1934
+ -webkit-transform: rotate(-22deg);
1935
+ transform: rotate(-22deg);
1936
+ }
1937
+ 20% {
1938
+ -webkit-transform: rotate(22deg);
1939
+ transform: rotate(22deg);
1940
+ }
1941
+ 32% {
1942
+ -webkit-transform: rotate(-12deg);
1943
+ transform: rotate(-12deg);
1944
+ }
1945
+ 36% {
1946
+ -webkit-transform: rotate(12deg);
1947
+ transform: rotate(12deg);
1948
+ }
1949
+ 40%, 100% {
1950
+ -webkit-transform: rotate(0deg);
1951
+ transform: rotate(0deg);
1952
+ }
1953
+ }
1954
+ @keyframes fa-shake {
1955
+ 0% {
1956
+ -webkit-transform: rotate(-15deg);
1957
+ transform: rotate(-15deg);
1958
+ }
1959
+ 4% {
1960
+ -webkit-transform: rotate(15deg);
1961
+ transform: rotate(15deg);
1962
+ }
1963
+ 8%, 24% {
1964
+ -webkit-transform: rotate(-18deg);
1965
+ transform: rotate(-18deg);
1966
+ }
1967
+ 12%, 28% {
1968
+ -webkit-transform: rotate(18deg);
1969
+ transform: rotate(18deg);
1970
+ }
1971
+ 16% {
1972
+ -webkit-transform: rotate(-22deg);
1973
+ transform: rotate(-22deg);
1974
+ }
1975
+ 20% {
1976
+ -webkit-transform: rotate(22deg);
1977
+ transform: rotate(22deg);
1978
+ }
1979
+ 32% {
1980
+ -webkit-transform: rotate(-12deg);
1981
+ transform: rotate(-12deg);
1982
+ }
1983
+ 36% {
1984
+ -webkit-transform: rotate(12deg);
1985
+ transform: rotate(12deg);
1986
+ }
1987
+ 40%, 100% {
1988
+ -webkit-transform: rotate(0deg);
1989
+ transform: rotate(0deg);
1990
+ }
1884
1991
  }
1885
-
1886
1992
  @-webkit-keyframes fa-spin {
1887
1993
  0% {
1888
1994
  -webkit-transform: rotate(0deg);
@@ -1893,7 +1999,6 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1893
1999
  transform: rotate(360deg);
1894
2000
  }
1895
2001
  }
1896
-
1897
2002
  @keyframes fa-spin {
1898
2003
  0% {
1899
2004
  -webkit-transform: rotate(0deg);
@@ -1905,53 +2010,44 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1905
2010
  }
1906
2011
  }
1907
2012
  .fa-rotate-90 {
1908
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
1909
2013
  -webkit-transform: rotate(90deg);
1910
2014
  transform: rotate(90deg);
1911
2015
  }
1912
2016
 
1913
2017
  .fa-rotate-180 {
1914
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
1915
2018
  -webkit-transform: rotate(180deg);
1916
2019
  transform: rotate(180deg);
1917
2020
  }
1918
2021
 
1919
2022
  .fa-rotate-270 {
1920
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
1921
2023
  -webkit-transform: rotate(270deg);
1922
2024
  transform: rotate(270deg);
1923
2025
  }
1924
2026
 
1925
2027
  .fa-flip-horizontal {
1926
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
1927
2028
  -webkit-transform: scale(-1, 1);
1928
2029
  transform: scale(-1, 1);
1929
2030
  }
1930
2031
 
1931
2032
  .fa-flip-vertical {
1932
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
1933
2033
  -webkit-transform: scale(1, -1);
1934
2034
  transform: scale(1, -1);
1935
2035
  }
1936
2036
 
1937
- .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
1938
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
2037
+ .fa-flip-both,
2038
+ .fa-flip-horizontal.fa-flip-vertical {
1939
2039
  -webkit-transform: scale(-1, -1);
1940
2040
  transform: scale(-1, -1);
1941
2041
  }
1942
2042
 
1943
- :root .fa-rotate-90,
1944
- :root .fa-rotate-180,
1945
- :root .fa-rotate-270,
1946
- :root .fa-flip-horizontal,
1947
- :root .fa-flip-vertical,
1948
- :root .fa-flip-both {
1949
- -webkit-filter: none;
1950
- filter: none;
2043
+ .fa-rotate-by {
2044
+ -webkit-transform: rotate(var(--fa-rotate-angle, none));
2045
+ transform: rotate(var(--fa-rotate-angle, none));
1951
2046
  }
1952
2047
 
1953
2048
  .fa-stack {
1954
2049
  display: inline-block;
2050
+ vertical-align: middle;
1955
2051
  height: 2em;
1956
2052
  position: relative;
1957
2053
  width: 2.5em;
@@ -1965,6 +2061,7 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1965
2061
  position: absolute;
1966
2062
  right: 0;
1967
2063
  top: 0;
2064
+ z-index: var(--fa-stack-z-index, auto);
1968
2065
  }
1969
2066
 
1970
2067
  .svg-inline--fa.fa-stack-1x {
@@ -1977,48 +2074,50 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1977
2074
  }
1978
2075
 
1979
2076
  .fa-inverse {
1980
- color: #fff;
2077
+ color: var(--fa-inverse, #fff);
1981
2078
  }
1982
2079
 
1983
- .sr-only {
1984
- border: 0;
1985
- clip: rect(0, 0, 0, 0);
2080
+ .sr-only,
2081
+ .fa-sr-only {
2082
+ position: absolute;
2083
+ width: 1px;
1986
2084
  height: 1px;
2085
+ padding: 0;
1987
2086
  margin: -1px;
1988
2087
  overflow: hidden;
1989
- padding: 0;
1990
- position: absolute;
1991
- width: 1px;
2088
+ clip: rect(0, 0, 0, 0);
2089
+ white-space: nowrap;
2090
+ border-width: 0;
1992
2091
  }
1993
2092
 
1994
- .sr-only-focusable:active, .sr-only-focusable:focus {
1995
- clip: auto;
1996
- height: auto;
1997
- margin: 0;
1998
- overflow: visible;
1999
- position: static;
2000
- width: auto;
2093
+ .sr-only-focusable:not(:focus),
2094
+ .fa-sr-only-focusable:not(:focus) {
2095
+ position: absolute;
2096
+ width: 1px;
2097
+ height: 1px;
2098
+ padding: 0;
2099
+ margin: -1px;
2100
+ overflow: hidden;
2101
+ clip: rect(0, 0, 0, 0);
2102
+ white-space: nowrap;
2103
+ border-width: 0;
2001
2104
  }
2002
2105
 
2003
2106
  .svg-inline--fa .fa-primary {
2004
2107
  fill: var(--fa-primary-color, currentColor);
2005
- opacity: 1;
2006
2108
  opacity: var(--fa-primary-opacity, 1);
2007
2109
  }
2008
2110
 
2009
2111
  .svg-inline--fa .fa-secondary {
2010
2112
  fill: var(--fa-secondary-color, currentColor);
2011
- opacity: 0.4;
2012
2113
  opacity: var(--fa-secondary-opacity, 0.4);
2013
2114
  }
2014
2115
 
2015
2116
  .svg-inline--fa.fa-swap-opacity .fa-primary {
2016
- opacity: 0.4;
2017
2117
  opacity: var(--fa-secondary-opacity, 0.4);
2018
2118
  }
2019
2119
 
2020
2120
  .svg-inline--fa.fa-swap-opacity .fa-secondary {
2021
- opacity: 1;
2022
2121
  opacity: var(--fa-primary-opacity, 1);
2023
2122
  }
2024
2123
 
@@ -2027,40 +2126,43 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
2027
2126
  fill: black;
2028
2127
  }
2029
2128
 
2030
- .fad.fa-inverse {
2031
- color: #fff;
2032
- }`;function _8(){var t=om,e=sm,n=Ue.familyPrefix,r=Ue.replacementClass,i=V8;if(n!==t||r!==e){var o=new RegExp("\\.".concat(t,"\\-"),"g"),s=new RegExp("\\--".concat(t,"\\-"),"g"),a=new RegExp("\\.".concat(e),"g");i=i.replace(o,".".concat(n,"-")).replace(s,"--".concat(n,"-")).replace(a,".".concat(r))}return i}var Y8=function(){function t(){A8(this,t),this.definitions={}}return b8(t,[{key:"add",value:function(){for(var n=this,r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];var s=i.reduce(this._pullDefinitions,{});Object.keys(s).forEach(function(a){n.definitions[a]=_({},n.definitions[a]||{},s[a]),pm(a,s[a]),mm()})}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(n,r){var i=r.prefix&&r.iconName&&r.icon?{0:r}:r;return Object.keys(i).map(function(o){var s=i[o],a=s.prefix,c=s.iconName,u=s.icon;n[a]||(n[a]={}),n[a][c]=u}),n}}]),t}();function W8(){Ue.autoAddCss&&!wm&&(O8(_8()),wm=!0)}function X8(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map(function(r){return Am(r)})}}),Object.defineProperty(t,"node",{get:function(){if(!!ol){var r=Ie.createElement("div");return r.innerHTML=t.html,r.children}}}),t}function vm(t){var e=t.prefix,n=e===void 0?"fa":e,r=t.iconName;if(!!r)return ym(Z8.definitions,n,r)||ym(xt.styles,n,r)}function q8(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(e||{}).icon?e:vm(e||{}),i=n.mask;return i&&(i=(i||{}).icon?i:vm(i||{})),t(r,_({},n,{mask:i}))}}var Z8=new Y8,wm=!1,te=q8(function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.transform,r=n===void 0?xr:n,i=e.symbol,o=i===void 0?!1:i,s=e.mask,a=s===void 0?null:s,c=e.maskId,u=c===void 0?null:c,f=e.title,l=f===void 0?null:f,h=e.titleId,d=h===void 0?null:h,p=e.classes,g=p===void 0?[]:p,m=e.attributes,y=m===void 0?{}:m,x=e.styles,v=x===void 0?{}:x;if(!!t){var S=t.prefix,b=t.iconName,A=t.icon;return X8(_({type:"icon"},t),function(){return W8(),Ue.autoA11y&&(l?y["aria-labelledby"]="".concat(Ue.replacementClass,"-title-").concat(d||Ls()):(y["aria-hidden"]="true",y.focusable="false")),G8({icons:{main:xm(A),mask:a?xm(a.icon):{found:!1,width:null,height:null,icon:{}}},prefix:S,iconName:b,transform:_({},xr,r),symbol:o,title:l,maskId:u,titleId:d,extra:{attributes:y,styles:v,classes:g}})})}});/**
2129
+ .fad.fa-inverse,
2130
+ .fa-duotone.fa-inverse {
2131
+ color: var(--fa-inverse, #fff);
2132
+ }`;function u1(){var t=e1,e=t1,n=F.familyPrefix,r=F.replacementClass,i=aT;if(n!==t||r!==e){var o=new RegExp("\\.".concat(t,"\\-"),"g"),a=new RegExp("\\--".concat(t,"\\-"),"g"),s=new RegExp("\\.".concat(e),"g");i=i.replace(o,".".concat(n,"-")).replace(a,"--".concat(n,"-")).replace(s,".".concat(r))}return i}var l1=!1;function Wl(){F.autoAddCss&&!l1&&(tT(u1()),l1=!0)}var sT={mixout:function(){return{dom:{css:u1,insertCss:Wl}}},hooks:function(){return{beforeDOMElementCreation:function(){Wl()},beforeI2svg:function(){Wl()}}}},Ut=pn||{};Ut[jt]||(Ut[jt]={}),Ut[jt].styles||(Ut[jt].styles={}),Ut[jt].hooks||(Ut[jt].hooks={}),Ut[jt].shims||(Ut[jt].shims=[]);var lt=Ut[jt],f1=[],cT=function t(){te.removeEventListener("DOMContentLoaded",t),ps=1,f1.map(function(e){return e()})},ps=!1;Rt&&(ps=(te.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(te.readyState),ps||te.addEventListener("DOMContentLoaded",cT));function uT(t){!Rt||(ps?setTimeout(t,0):f1.push(t))}function go(t){var e=t.tag,n=t.attributes,r=n===void 0?{}:n,i=t.children,o=i===void 0?[]:i;return typeof t=="string"?c1(t):"<".concat(e," ").concat(rT(r),">").concat(o.map(go).join(""),"</").concat(e,">")}function d1(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}var lT=function(e,n){return function(r,i,o,a){return e.call(n,r,i,o,a)}},Xl=function(e,n,r,i){var o=Object.keys(e),a=o.length,s=i!==void 0?lT(n,i):n,c,u,f;for(r===void 0?(c=1,f=e[o[0]]):(c=0,f=r);c<a;c++)u=o[c],f=s(f,e[u],u,e);return f};function fT(t){for(var e=[],n=0,r=t.length;n<r;){var i=t.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){var o=t.charCodeAt(n++);(o&64512)==56320?e.push(((i&1023)<<10)+(o&1023)+65536):(e.push(i),n--)}else e.push(i)}return e}function Zl(t){var e=fT(t);return e.length===1?e[0].toString(16):null}function dT(t,e){var n=t.length,r=t.charCodeAt(e),i;return r>=55296&&r<=56319&&n>e+1&&(i=t.charCodeAt(e+1),i>=56320&&i<=57343)?(r-55296)*1024+i-56320+65536:r}function h1(t){return Object.keys(t).reduce(function(e,n){var r=t[n],i=!!r.icon;return i?e[r.iconName]=r.icon:e[n]=r,e},{})}function ql(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,i=r===void 0?!1:r,o=h1(e);typeof lt.hooks.addPack=="function"&&!i?lt.hooks.addPack(t,h1(e)):lt.styles[t]=N(N({},lt.styles[t]||{}),o),t==="fas"&&ql("fa",e)}var yo=lt.styles,hT=lt.shims,pT=Object.values(i1),Kl=null,p1={},m1={},g1={},y1={},v1={},mT=Object.keys(Vl);function gT(t){return~Z5.indexOf(t)}function yT(t,e){var n=e.split("-"),r=n[0],i=n.slice(1).join("-");return r===t&&i!==""&&!gT(i)?i:null}var b1=function(){var e=function(o){return Xl(yo,function(a,s,c){return a[c]=Xl(s,o,{}),a},{})};p1=e(function(i,o,a){if(o[3]&&(i[o[3]]=a),o[2]){var s=o[2].filter(function(c){return typeof c=="number"});s.forEach(function(c){i[c.toString(16)]=a})}return i}),m1=e(function(i,o,a){if(i[a]=a,o[2]){var s=o[2].filter(function(c){return typeof c=="string"});s.forEach(function(c){i[c]=a})}return i}),v1=e(function(i,o,a){var s=o[2];return i[a]=a,s.forEach(function(c){i[c]=a}),i});var n="far"in yo||F.autoFetchSvg,r=Xl(hT,function(i,o){var a=o[0],s=o[1],c=o[2];return s==="far"&&!n&&(s="fas"),typeof a=="string"&&(i.names[a]={prefix:s,iconName:c}),typeof a=="number"&&(i.unicodes[a.toString(16)]={prefix:s,iconName:c}),i},{names:{},unicodes:{}});g1=r.names,y1=r.unicodes,Kl=ms(F.styleDefault)};eT(function(t){Kl=ms(t.styleDefault)}),b1();function Jl(t,e){return(p1[t]||{})[e]}function vT(t,e){return(m1[t]||{})[e]}function Vr(t,e){return(v1[t]||{})[e]}function A1(t){return g1[t]||{prefix:null,iconName:null}}function bT(t){var e=y1[t],n=Jl("fas",t);return e||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function gn(){return Kl}var $l=function(){return{prefix:null,iconName:null,rest:[]}};function ms(t){var e=Vl[t],n=fs[t]||fs[e],r=t in lt.styles?t:null;return n||r||null}function gs(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.skipLookups,r=n===void 0?!1:n,i=null,o=t.reduce(function(a,s){var c=yT(F.familyPrefix,s);if(yo[s]?(s=pT.includes(s)?Q5[s]:s,i=s,a.prefix=s):mT.indexOf(s)>-1?(i=s,a.prefix=ms(s)):c?a.iconName=c:s!==F.replacementClass&&a.rest.push(s),!r&&a.prefix&&a.iconName){var u=i==="fa"?A1(a.iconName):{},f=Vr(a.prefix,a.iconName);u.prefix&&(i=null),a.iconName=u.iconName||f||a.iconName,a.prefix=u.prefix||a.prefix,a.prefix==="far"&&!yo.far&&yo.fas&&!F.autoFetchSvg&&(a.prefix="fas")}return a},$l());return(o.prefix==="fa"||i==="fa")&&(o.prefix=gn()||"fas"),o}var AT=function(){function t(){k5(this,t),this.definitions={}}return N5(t,[{key:"add",value:function(){for(var n=this,r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];var a=i.reduce(this._pullDefinitions,{});Object.keys(a).forEach(function(s){n.definitions[s]=N(N({},n.definitions[s]||{}),a[s]),ql(s,a[s]);var c=i1[s];c&&ql(c,a[s]),b1()})}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(n,r){var i=r.prefix&&r.iconName&&r.icon?{0:r}:r;return Object.keys(i).map(function(o){var a=i[o],s=a.prefix,c=a.iconName,u=a.icon,f=u[2];n[s]||(n[s]={}),f.length>0&&f.forEach(function(l){typeof l=="string"&&(n[s][l]=u)}),n[s][c]=u}),n}}]),t}(),x1=[],Yr={},_r={},xT=Object.keys(_r);function wT(t,e){var n=e.mixoutsTo;return x1=t,Yr={},Object.keys(_r).forEach(function(r){xT.indexOf(r)===-1&&delete _r[r]}),x1.forEach(function(r){var i=r.mixout?r.mixout():{};if(Object.keys(i).forEach(function(a){typeof i[a]=="function"&&(n[a]=i[a]),cs(i[a])==="object"&&Object.keys(i[a]).forEach(function(s){n[a]||(n[a]={}),n[a][s]=i[a][s]})}),r.hooks){var o=r.hooks();Object.keys(o).forEach(function(a){Yr[a]||(Yr[a]=[]),Yr[a].push(o[a])})}r.provides&&r.provides(_r)}),n}function ef(t,e){for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];var o=Yr[t]||[];return o.forEach(function(a){e=a.apply(null,[e].concat(r))}),e}function nr(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var i=Yr[t]||[];i.forEach(function(o){o.apply(null,n)})}function Gt(){var t=arguments[0],e=Array.prototype.slice.call(arguments,1);return _r[t]?_r[t].apply(null,e):void 0}function tf(t){t.prefix==="fa"&&(t.prefix="fas");var e=t.iconName,n=t.prefix||gn();if(!!e)return e=Vr(n,e)||e,d1(w1.definitions,n,e)||d1(lt.styles,n,e)}var w1=new AT,CT=function(){F.autoReplaceSvg=!1,F.observeMutations=!1,nr("noAuto")},ST={i2svg:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Rt?(nr("beforeI2svg",e),Gt("pseudoElements2svg",e),Gt("i2svg",e)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot;F.autoReplaceSvg===!1&&(F.autoReplaceSvg=!0),F.observeMutations=!0,uT(function(){DT({autoReplaceSvgRoot:n}),nr("watch",e)})}},ET={icon:function(e){if(e===null)return null;if(cs(e)==="object"&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:Vr(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&e.length===2){var n=e[1].indexOf("fa-")===0?e[1].slice(3):e[1],r=ms(e[0]);return{prefix:r,iconName:Vr(r,n)||n}}if(typeof e=="string"&&(e.indexOf("".concat(F.familyPrefix,"-"))>-1||e.match(V5))){var i=gs(e.split(" "),{skipLookups:!0});return{prefix:i.prefix||gn(),iconName:Vr(i.prefix,i.iconName)||i.iconName}}if(typeof e=="string"){var o=gn();return{prefix:o,iconName:Vr(o,e)||e}}}},Qe={noAuto:CT,config:F,dom:ST,parse:ET,library:w1,findIconDefinition:tf,toHtml:go},DT=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot,r=n===void 0?te:n;(Object.keys(lt.styles).length>0||F.autoFetchSvg)&&Rt&&F.autoReplaceSvg&&Qe.dom.i2svg({node:r})};function ys(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map(function(r){return go(r)})}}),Object.defineProperty(t,"node",{get:function(){if(!!Rt){var r=te.createElement("div");return r.innerHTML=t.html,r.children}}}),t}function MT(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,a=t.transform;if(_l(a)&&n.found&&!r.found){var s=n.width,c=n.height,u={x:s/c/2,y:.5};i.style=hs(N(N({},o),{},{"transform-origin":"".concat(u.x+a.x/16,"em ").concat(u.y+a.y/16,"em")}))}return[{tag:"svg",attributes:i,children:e}]}function TT(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,o=t.symbol,a=o===!0?"".concat(e,"-").concat(F.familyPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:N(N({},i),{},{id:a}),children:r}]}]}function nf(t){var e=t.icons,n=e.main,r=e.mask,i=t.prefix,o=t.iconName,a=t.transform,s=t.symbol,c=t.title,u=t.maskId,f=t.titleId,l=t.extra,d=t.watchable,h=d===void 0?!1:d,p=r.found?r:n,m=p.width,g=p.height,y=i==="fak",x=[F.replacementClass,o?"".concat(F.familyPrefix,"-").concat(o):""].filter(function(k){return l.classes.indexOf(k)===-1}).filter(function(k){return k!==""||!!k}).concat(l.classes).join(" "),A={children:[],attributes:N(N({},l.attributes),{},{"data-prefix":i,"data-icon":o,class:x,role:l.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(m," ").concat(g)})},C=y&&!~l.classes.indexOf("fa-fw")?{width:"".concat(m/g*16*.0625,"em")}:{};h&&(A.attributes[er]=""),c&&(A.children.push({tag:"title",attributes:{id:A.attributes["aria-labelledby"]||"title-".concat(f||mo())},children:[c]}),delete A.attributes.title);var b=N(N({},A),{},{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:a,symbol:s,styles:N(N({},C),l.styles)}),v=r.found&&n.found?Gt("generateAbstractMask",b)||{children:[],attributes:{}}:Gt("generateAbstractIcon",b)||{children:[],attributes:{}},w=v.children,E=v.attributes;return b.children=w,b.attributes=E,s?TT(b):MT(b)}function C1(t){var e=t.content,n=t.width,r=t.height,i=t.transform,o=t.title,a=t.extra,s=t.watchable,c=s===void 0?!1:s,u=N(N(N({},a.attributes),o?{title:o}:{}),{},{class:a.classes.join(" ")});c&&(u[er]="");var f=N({},a.styles);_l(i)&&(f.transform=oT({transform:i,startCentered:!0,width:n,height:r}),f["-webkit-transform"]=f.transform);var l=hs(f);l.length>0&&(u.style=l);var d=[];return d.push({tag:"span",attributes:u,children:[e]}),o&&d.push({tag:"span",attributes:{class:"sr-only"},children:[o]}),d}function IT(t){var e=t.content,n=t.title,r=t.extra,i=N(N(N({},r.attributes),n?{title:n}:{}),{},{class:r.classes.join(" ")}),o=hs(r.styles);o.length>0&&(i.style=o);var a=[];return a.push({tag:"span",attributes:i,children:[e]}),n&&a.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),a}var rf=lt.styles;function of(t){var e=t[0],n=t[1],r=t.slice(4),i=zl(r,1),o=i[0],a=null;return Array.isArray(o)?a={tag:"g",attributes:{class:"".concat(F.familyPrefix,"-").concat(tr.GROUP)},children:[{tag:"path",attributes:{class:"".concat(F.familyPrefix,"-").concat(tr.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(F.familyPrefix,"-").concat(tr.PRIMARY),fill:"currentColor",d:o[1]}}]}:a={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:a}}var kT={found:!1,width:512,height:512};function NT(t,e){!r1&&!F.showMissingIcons&&t&&console.error('Icon with name "'.concat(t,'" and prefix "').concat(e,'" is missing.'))}function af(t,e){var n=e;return e==="fa"&&F.styleDefault!==null&&(e=gn()),new Promise(function(r,i){if(Gt("missingIconAbstract"),n==="fa"){var o=A1(t)||{};t=o.iconName||t,e=o.prefix||e}if(t&&e&&rf[e]&&rf[e][t]){var a=rf[e][t];return r(of(a))}NT(t,e),r(N(N({},kT),{},{icon:F.showMissingIcons&&t?Gt("missingIconAbstract")||{}:{}}))})}var S1=function(){},sf=F.measurePerformance&&ls&&ls.mark&&ls.measure?ls:{mark:S1,measure:S1},vo='FA "6.1.1"',LT=function(e){return sf.mark("".concat(vo," ").concat(e," begins")),function(){return E1(e)}},E1=function(e){sf.mark("".concat(vo," ").concat(e," ends")),sf.measure("".concat(vo," ").concat(e),"".concat(vo," ").concat(e," begins"),"".concat(vo," ").concat(e," ends"))},cf={begin:LT,end:E1},vs=function(){};function D1(t){var e=t.getAttribute?t.getAttribute(er):null;return typeof e=="string"}function BT(t){var e=t.getAttribute?t.getAttribute(Hl):null,n=t.getAttribute?t.getAttribute(Ql):null;return e&&n}function OT(t){return t&&t.classList&&t.classList.contains&&t.classList.contains(F.replacementClass)}function PT(){if(F.autoReplaceSvg===!0)return bs.replace;var t=bs[F.autoReplaceSvg];return t||bs.replace}function FT(t){return te.createElementNS("http://www.w3.org/2000/svg",t)}function zT(t){return te.createElement(t)}function M1(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.ceFn,r=n===void 0?t.tag==="svg"?FT:zT:n;if(typeof t=="string")return te.createTextNode(t);var i=r(t.tag);Object.keys(t.attributes||[]).forEach(function(a){i.setAttribute(a,t.attributes[a])});var o=t.children||[];return o.forEach(function(a){i.appendChild(M1(a,{ceFn:r}))}),i}function RT(t){var e=" ".concat(t.outerHTML," ");return e="".concat(e,"Font Awesome fontawesome.com "),e}var bs={replace:function(e){var n=e[0];if(n.parentNode)if(e[1].forEach(function(i){n.parentNode.insertBefore(M1(i),n)}),n.getAttribute(er)===null&&F.keepOriginalSource){var r=te.createComment(RT(n));n.parentNode.replaceChild(r,n)}else n.remove()},nest:function(e){var n=e[0],r=e[1];if(~Yl(n).indexOf(F.replacementClass))return bs.replace(e);var i=new RegExp("".concat(F.familyPrefix,"-.*"));if(delete r[0].attributes.id,r[0].attributes.class){var o=r[0].attributes.class.split(" ").reduce(function(s,c){return c===F.replacementClass||c.match(i)?s.toSvg.push(c):s.toNode.push(c),s},{toNode:[],toSvg:[]});r[0].attributes.class=o.toSvg.join(" "),o.toNode.length===0?n.removeAttribute("class"):n.setAttribute("class",o.toNode.join(" "))}var a=r.map(function(s){return go(s)}).join(`
2133
+ `);n.setAttribute(er,""),n.innerHTML=a}};function T1(t){t()}function I1(t,e){var n=typeof e=="function"?e:vs;if(t.length===0)n();else{var r=T1;F.mutateApproach===G5&&(r=pn.requestAnimationFrame||T1),r(function(){var i=PT(),o=cf.begin("mutate");t.map(i),o(),n()})}}var uf=!1;function k1(){uf=!0}function lf(){uf=!1}var As=null;function N1(t){if(!!Jg&&!!F.observeMutations){var e=t.treeCallback,n=e===void 0?vs:e,r=t.nodeCallback,i=r===void 0?vs:r,o=t.pseudoElementsCallback,a=o===void 0?vs:o,s=t.observeMutationsRoot,c=s===void 0?te:s;As=new Jg(function(u){if(!uf){var f=gn();Qr(u).forEach(function(l){if(l.type==="childList"&&l.addedNodes.length>0&&!D1(l.addedNodes[0])&&(F.searchPseudoElements&&a(l.target),n(l.target)),l.type==="attributes"&&l.target.parentNode&&F.searchPseudoElements&&a(l.target.parentNode),l.type==="attributes"&&D1(l.target)&&~X5.indexOf(l.attributeName))if(l.attributeName==="class"&&BT(l.target)){var d=gs(Yl(l.target)),h=d.prefix,p=d.iconName;l.target.setAttribute(Hl,h||f),p&&l.target.setAttribute(Ql,p)}else OT(l.target)&&i(l.target)})}}),Rt&&As.observe(c,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function jT(){!As||As.disconnect()}function UT(t){var e=t.getAttribute("style"),n=[];return e&&(n=e.split(";").reduce(function(r,i){var o=i.split(":"),a=o[0],s=o.slice(1);return a&&s.length>0&&(r[a]=s.join(":").trim()),r},{})),n}function GT(t){var e=t.getAttribute("data-prefix"),n=t.getAttribute("data-icon"),r=t.innerText!==void 0?t.innerText.trim():"",i=gs(Yl(t));return i.prefix||(i.prefix=gn()),e&&n&&(i.prefix=e,i.iconName=n),i.iconName&&i.prefix||i.prefix&&r.length>0&&(i.iconName=vT(i.prefix,t.innerText)||Jl(i.prefix,Zl(t.innerText))),i}function HT(t){var e=Qr(t.attributes).reduce(function(i,o){return i.name!=="class"&&i.name!=="style"&&(i[o.name]=o.value),i},{}),n=t.getAttribute("title"),r=t.getAttribute("data-fa-title-id");return F.autoA11y&&(n?e["aria-labelledby"]="".concat(F.replacementClass,"-title-").concat(r||mo()):(e["aria-hidden"]="true",e.focusable="false")),e}function QT(){return{iconName:null,title:null,titleId:null,prefix:null,transform:At,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function L1(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0},n=GT(t),r=n.iconName,i=n.prefix,o=n.rest,a=HT(t),s=ef("parseNodeAttributes",{},t),c=e.styleParser?UT(t):[];return N({iconName:r,title:t.getAttribute("title"),titleId:t.getAttribute("data-fa-title-id"),prefix:i,transform:At,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:o,styles:c,attributes:a}},s)}var VT=lt.styles;function B1(t){var e=F.autoReplaceSvg==="nest"?L1(t,{styleParser:!1}):L1(t);return~e.extra.classes.indexOf(o1)?Gt("generateLayersText",t,e):Gt("generateSvgReplacementMutation",t,e)}function O1(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!Rt)return Promise.resolve();var n=te.documentElement.classList,r=function(l){return n.add("".concat(n1,"-").concat(l))},i=function(l){return n.remove("".concat(n1,"-").concat(l))},o=F.autoFetchSvg?Object.keys(Vl):Object.keys(VT),a=[".".concat(o1,":not([").concat(er,"])")].concat(o.map(function(f){return".".concat(f,":not([").concat(er,"])")})).join(", ");if(a.length===0)return Promise.resolve();var s=[];try{s=Qr(t.querySelectorAll(a))}catch{}if(s.length>0)r("pending"),i("complete");else return Promise.resolve();var c=cf.begin("onTree"),u=s.reduce(function(f,l){try{var d=B1(l);d&&f.push(d)}catch(h){r1||h.name==="MissingIcon"&&console.error(h)}return f},[]);return new Promise(function(f,l){Promise.all(u).then(function(d){I1(d,function(){r("active"),r("complete"),i("pending"),typeof e=="function"&&e(),c(),f()})}).catch(function(d){c(),l(d)})})}function YT(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;B1(t).then(function(n){n&&I1([n],e)})}function _T(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(e||{}).icon?e:tf(e||{}),i=n.mask;return i&&(i=(i||{}).icon?i:tf(i||{})),t(r,N(N({},n),{},{mask:i}))}}var WT=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.transform,i=r===void 0?At:r,o=n.symbol,a=o===void 0?!1:o,s=n.mask,c=s===void 0?null:s,u=n.maskId,f=u===void 0?null:u,l=n.title,d=l===void 0?null:l,h=n.titleId,p=h===void 0?null:h,m=n.classes,g=m===void 0?[]:m,y=n.attributes,x=y===void 0?{}:y,A=n.styles,C=A===void 0?{}:A;if(!!e){var b=e.prefix,v=e.iconName,w=e.icon;return ys(N({type:"icon"},e),function(){return nr("beforeDOMElementCreation",{iconDefinition:e,params:n}),F.autoA11y&&(d?x["aria-labelledby"]="".concat(F.replacementClass,"-title-").concat(p||mo()):(x["aria-hidden"]="true",x.focusable="false")),nf({icons:{main:of(w),mask:c?of(c.icon):{found:!1,width:null,height:null,icon:{}}},prefix:b,iconName:v,transform:N(N({},At),i),symbol:a,title:d,maskId:f,titleId:p,extra:{attributes:x,styles:C,classes:g}})})}},XT={mixout:function(){return{icon:_T(WT)}},hooks:function(){return{mutationObserverCallbacks:function(n){return n.treeCallback=O1,n.nodeCallback=YT,n}}},provides:function(e){e.i2svg=function(n){var r=n.node,i=r===void 0?te:r,o=n.callback,a=o===void 0?function(){}:o;return O1(i,a)},e.generateSvgReplacementMutation=function(n,r){var i=r.iconName,o=r.title,a=r.titleId,s=r.prefix,c=r.transform,u=r.symbol,f=r.mask,l=r.maskId,d=r.extra;return new Promise(function(h,p){Promise.all([af(i,s),f.iconName?af(f.iconName,f.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(function(m){var g=zl(m,2),y=g[0],x=g[1];h([n,nf({icons:{main:y,mask:x},prefix:s,iconName:i,transform:c,symbol:u,maskId:l,title:o,titleId:a,extra:d,watchable:!0})])}).catch(p)})},e.generateAbstractIcon=function(n){var r=n.children,i=n.attributes,o=n.main,a=n.transform,s=n.styles,c=hs(s);c.length>0&&(i.style=c);var u;return _l(a)&&(u=Gt("generateAbstractTransformGrouping",{main:o,transform:a,containerWidth:o.width,iconWidth:o.width})),r.push(u||o.icon),{children:r,attributes:i}}}},ZT={mixout:function(){return{layer:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.classes,o=i===void 0?[]:i;return ys({type:"layer"},function(){nr("beforeDOMElementCreation",{assembler:n,params:r});var a=[];return n(function(s){Array.isArray(s)?s.map(function(c){a=a.concat(c.abstract)}):a=a.concat(s.abstract)}),[{tag:"span",attributes:{class:["".concat(F.familyPrefix,"-layers")].concat(us(o)).join(" ")},children:a}]})}}}},qT={mixout:function(){return{counter:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.title,o=i===void 0?null:i,a=r.classes,s=a===void 0?[]:a,c=r.attributes,u=c===void 0?{}:c,f=r.styles,l=f===void 0?{}:f;return ys({type:"counter",content:n},function(){return nr("beforeDOMElementCreation",{content:n,params:r}),IT({content:n.toString(),title:o,extra:{attributes:u,styles:l,classes:["".concat(F.familyPrefix,"-layers-counter")].concat(us(s))}})})}}}},KT={mixout:function(){return{text:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.transform,o=i===void 0?At:i,a=r.title,s=a===void 0?null:a,c=r.classes,u=c===void 0?[]:c,f=r.attributes,l=f===void 0?{}:f,d=r.styles,h=d===void 0?{}:d;return ys({type:"text",content:n},function(){return nr("beforeDOMElementCreation",{content:n,params:r}),C1({content:n,transform:N(N({},At),o),title:s,extra:{attributes:l,styles:h,classes:["".concat(F.familyPrefix,"-layers-text")].concat(us(u))}})})}}},provides:function(e){e.generateLayersText=function(n,r){var i=r.title,o=r.transform,a=r.extra,s=null,c=null;if($g){var u=parseInt(getComputedStyle(n).fontSize,10),f=n.getBoundingClientRect();s=f.width/u,c=f.height/u}return F.autoA11y&&!i&&(a.attributes["aria-hidden"]="true"),Promise.resolve([n,C1({content:n.innerHTML,width:s,height:c,transform:o,title:i,extra:a,watchable:!0})])}}},JT=new RegExp('"',"ug"),P1=[1105920,1112319];function $T(t){var e=t.replace(JT,""),n=dT(e,0),r=n>=P1[0]&&n<=P1[1],i=e.length===2?e[0]===e[1]:!1;return{value:Zl(i?e[0]:e),isSecondary:r||i}}function F1(t,e){var n="".concat(U5).concat(e.replace(":","-"));return new Promise(function(r,i){if(t.getAttribute(n)!==null)return r();var o=Qr(t.children),a=o.filter(function(v){return v.getAttribute(Gl)===e})[0],s=pn.getComputedStyle(t,e),c=s.getPropertyValue("font-family").match(Y5),u=s.getPropertyValue("font-weight"),f=s.getPropertyValue("content");if(a&&!c)return t.removeChild(a),r();if(c&&f!=="none"&&f!==""){var l=s.getPropertyValue("content"),d=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(c[2])?fs[c[2].toLowerCase()]:_5[u],h=$T(l),p=h.value,m=h.isSecondary,g=c[0].startsWith("FontAwesome"),y=Jl(d,p),x=y;if(g){var A=bT(p);A.iconName&&A.prefix&&(y=A.iconName,d=A.prefix)}if(y&&!m&&(!a||a.getAttribute(Hl)!==d||a.getAttribute(Ql)!==x)){t.setAttribute(n,x),a&&t.removeChild(a);var C=QT(),b=C.extra;b.attributes[Gl]=e,af(y,d).then(function(v){var w=nf(N(N({},C),{},{icons:{main:v,mask:$l()},prefix:d,iconName:x,extra:b,watchable:!0})),E=te.createElement("svg");e==="::before"?t.insertBefore(E,t.firstChild):t.appendChild(E),E.outerHTML=w.map(function(k){return go(k)}).join(`
2134
+ `),t.removeAttribute(n),r()}).catch(i)}else r()}else r()})}function e6(t){return Promise.all([F1(t,"::before"),F1(t,"::after")])}function t6(t){return t.parentNode!==document.head&&!~H5.indexOf(t.tagName.toUpperCase())&&!t.getAttribute(Gl)&&(!t.parentNode||t.parentNode.tagName!=="svg")}function z1(t){if(!!Rt)return new Promise(function(e,n){var r=Qr(t.querySelectorAll("*")).filter(t6).map(e6),i=cf.begin("searchPseudoElements");k1(),Promise.all(r).then(function(){i(),lf(),e()}).catch(function(){i(),lf(),n()})})}var n6={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=z1,n}}},provides:function(e){e.pseudoElements2svg=function(n){var r=n.node,i=r===void 0?te:r;F.searchPseudoElements&&z1(i)}}},R1=!1,r6={mixout:function(){return{dom:{unwatch:function(){k1(),R1=!0}}}},hooks:function(){return{bootstrap:function(){N1(ef("mutationObserverCallbacks",{}))},noAuto:function(){jT()},watch:function(n){var r=n.observeMutationsRoot;R1?lf():N1(ef("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},j1=function(e){var n={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return e.toLowerCase().split(" ").reduce(function(r,i){var o=i.toLowerCase().split("-"),a=o[0],s=o.slice(1).join("-");if(a&&s==="h")return r.flipX=!0,r;if(a&&s==="v")return r.flipY=!0,r;if(s=parseFloat(s),isNaN(s))return r;switch(a){case"grow":r.size=r.size+s;break;case"shrink":r.size=r.size-s;break;case"left":r.x=r.x-s;break;case"right":r.x=r.x+s;break;case"up":r.y=r.y-s;break;case"down":r.y=r.y+s;break;case"rotate":r.rotate=r.rotate+s;break}return r},n)},i6={mixout:function(){return{parse:{transform:function(n){return j1(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var i=r.getAttribute("data-fa-transform");return i&&(n.transform=j1(i)),n}}},provides:function(e){e.generateAbstractTransformGrouping=function(n){var r=n.main,i=n.transform,o=n.containerWidth,a=n.iconWidth,s={transform:"translate(".concat(o/2," 256)")},c="translate(".concat(i.x*32,", ").concat(i.y*32,") "),u="scale(".concat(i.size/16*(i.flipX?-1:1),", ").concat(i.size/16*(i.flipY?-1:1),") "),f="rotate(".concat(i.rotate," 0 0)"),l={transform:"".concat(c," ").concat(u," ").concat(f)},d={transform:"translate(".concat(a/2*-1," -256)")},h={outer:s,inner:l,path:d};return{tag:"g",attributes:N({},h.outer),children:[{tag:"g",attributes:N({},h.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:N(N({},r.icon.attributes),h.path)}]}]}}}},ff={x:0,y:0,width:"100%",height:"100%"};function U1(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return t.attributes&&(t.attributes.fill||e)&&(t.attributes.fill="black"),t}function o6(t){return t.tag==="g"?t.children:[t]}var a6={hooks:function(){return{parseNodeAttributes:function(n,r){var i=r.getAttribute("data-fa-mask"),o=i?gs(i.split(" ").map(function(a){return a.trim()})):$l();return o.prefix||(o.prefix=gn()),n.mask=o,n.maskId=r.getAttribute("data-fa-mask-id"),n}}},provides:function(e){e.generateAbstractMask=function(n){var r=n.children,i=n.attributes,o=n.main,a=n.mask,s=n.maskId,c=n.transform,u=o.width,f=o.icon,l=a.width,d=a.icon,h=iT({transform:c,containerWidth:l,iconWidth:u}),p={tag:"rect",attributes:N(N({},ff),{},{fill:"white"})},m=f.children?{children:f.children.map(U1)}:{},g={tag:"g",attributes:N({},h.inner),children:[U1(N({tag:f.tag,attributes:N(N({},f.attributes),h.path)},m))]},y={tag:"g",attributes:N({},h.outer),children:[g]},x="mask-".concat(s||mo()),A="clip-".concat(s||mo()),C={tag:"mask",attributes:N(N({},ff),{},{id:x,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[p,y]},b={tag:"defs",children:[{tag:"clipPath",attributes:{id:A},children:o6(d)},C]};return r.push(b,{tag:"rect",attributes:N({fill:"currentColor","clip-path":"url(#".concat(A,")"),mask:"url(#".concat(x,")")},ff)}),{children:r,attributes:i}}}},s6={provides:function(e){var n=!1;pn.matchMedia&&(n=pn.matchMedia("(prefers-reduced-motion: reduce)").matches),e.missingIconAbstract=function(){var r=[],i={fill:"currentColor"},o={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};r.push({tag:"path",attributes:N(N({},i),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var a=N(N({},o),{},{attributeName:"opacity"}),s={tag:"circle",attributes:N(N({},i),{},{cx:"256",cy:"364",r:"28"}),children:[]};return n||s.children.push({tag:"animate",attributes:N(N({},o),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:N(N({},a),{},{values:"1;0;1;1;0;1;"})}),r.push(s),r.push({tag:"path",attributes:N(N({},i),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:n?[]:[{tag:"animate",attributes:N(N({},a),{},{values:"1;0;0;0;0;1;"})}]}),n||r.push({tag:"path",attributes:N(N({},i),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:N(N({},a),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:r}}}},c6={hooks:function(){return{parseNodeAttributes:function(n,r){var i=r.getAttribute("data-fa-symbol"),o=i===null?!1:i===""?!0:i;return n.symbol=o,n}}}},u6=[sT,XT,ZT,qT,KT,n6,r6,i6,a6,s6,c6];wT(u6,{mixoutsTo:Qe}),Qe.noAuto,Qe.config,Qe.library,Qe.dom,Qe.parse,Qe.findIconDefinition,Qe.toHtml;var ne=Qe.icon;Qe.layer,Qe.text,Qe.counter;/**
2033
2135
  * @license
2034
2136
  * Copyright 2018 Google LLC
2035
2137
  * SPDX-License-Identifier: BSD-3-Clause
2036
- */const K8=br(class extends Gi{constructor(t){var e;if(super(t),t.type!==Ot.ATTRIBUTE||t.name!=="style"||((e=t.strings)===null||e===void 0?void 0:e.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce((e,n)=>{const r=t[n];return r==null?e:e+`${n=n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(t,[e]){const{style:n}=t.element;if(this.ut===void 0){this.ut=new Set;for(const r in e)this.ut.add(r);return this.render(e)}this.ut.forEach(r=>{e[r]==null&&(this.ut.delete(r),r.includes("-")?n.removeProperty(r):n[r]="")});for(const r in e){const i=e[r];i!=null&&(this.ut.add(r),r.includes("-")?n.setProperty(r,i):n[r]=i)}return xe}}),Em="close-dialog";function J8(){return new CustomEvent(Em,{bubbles:!0})}function Qi(t="default"){const e=document.createElement("div");e.classList.add("gs-modal"),t!="default"&&e.classList.add(t);const n=i=>{var o;switch(i.key){case"Escape":{e.querySelector(".btn-cancel").click(),i.stopPropagation();break}case"Enter":{if(((o=i.target)==null?void 0:o.tagName)=="TEXTAREA")return;e.querySelector(".btn-primary").click(),i.stopPropagation();break}}};e.addEventListener("keydown",n),Xe(M`<div class="backdrop"></div><div class="content"></div>`,e);const r=()=>{e.querySelector(".backdrop").addEventListener("transitionend",()=>e.remove()),e.classList.remove("visible"),document.body.classList.remove(En)};return e.addEventListener("keydown",i=>{i.stopPropagation()}),e.addEventListener(Em,r),document.body.appendChild(e),window.requestAnimationFrame(()=>e.classList.add("visible")),t!="tour"&&document.body.classList.add(En),{content:e.querySelector(".content"),close:r}}function st(t,e={}){var i;const n=Qi(),r=e.title;return(i=e.okLabel)!=null||(e.okLabel="OK"),new Promise((o,s)=>{const a=()=>{n.close(),o(!0)},c=M`${r?M`<div class="modal-title">${r}</div>`:R}<div class="modal-body" style="max-width:700px">${t}</div><div class="modal-buttons">${e.cancelButton?M`<button @click="${()=>{n.close(),o(!1)}}">Cancel</button>`:R} <button @click="${a}">${e.okLabel}</button></div>`;Xe(c,n.content)})}function $8(t,e){var n,r;Xt((n=t.scale)==null?void 0:n.type)?e6(t,e):nt((r=t.scale)==null?void 0:r.type)?t6(t,e):st("Not implemented (yet).")}function e6(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=t.scale,i=Qi(),o=M`<div class="modal-title">Filter by <em>${t.name}</em></div>`,s=new Set,a=d=>{n(e.actions.filterByNominal({values:r.domain().filter(p=>s.has(p)),attribute:t.attribute,remove:d})),i.close()},c=d=>{const p=d.target;p.checked?s.add(p.value):s.delete(p.value),h()},u=()=>M`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button ?disabled="${!s.size}" @click="${()=>a(!1)}">${te(Hi).node[0]} Retain</button> <button ?disabled="${!s.size}" @click="${()=>a(!0)}">${te(rl).node[0]} Remove</button></div>`,f=r,l=M`<p>Please select one or more categories and choose an action.</p><ul class="gs-checkbox-list" @input="${c}" tabindex="0">${r.domain().map(d=>M`<li><label class="checkbox"><span class="color" style="${K8({backgroundColor:f(d).toString()})}"></span> <input type="checkbox" .value="${d}"> ${d}</label></li>`)}</ul>`;function h(){Xe(M`${o}<div class="modal-body">${l}</div>${u()}`,i.content)}h(),i.content.querySelector(".gs-checkbox-list input[type='checkbox']").focus()}function t6(t,e){const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=Qi(),s=M`<div class="modal-title">Filter by <em>${t.name}</em></div>`,a=d=>{n(e.actions.filterByQuantitative({attribute:t.attribute,operator:r,operand:i})),o.close()},c=()=>M`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>o.close()}">Cancel</button> <button class="btn-primary" ?disabled="${typeof i=="undefined"}" @click="${()=>a()}">${te(Hi).node[0]} Retain</button></div>`,u=d=>{r=d.target.value,h()},f=d=>{const p=d.target.value;i=p.length>0?+p:void 0,h()},l=M`<div class="gs-form-group"><label>Select samples where <em>${t.name}</em> is</label> <select .value="${r}" @change="${u}">${Object.entries(n6).map(([d,p])=>M`<option .value="${d}">${p}</option>`)}</select> <input type="number" placeholder="Please enter a numeric value" @input="${f}"></div>`;function h(){Xe(M`${s}<div class="modal-body">${l}</div>${c()}`,o.content)}h(),o.content.querySelector("select").focus()}const n6={lt:"less than",lte:"less than or equal to",eq:"equal to",gte:"greater than or equal to",gt:"greater than"};function dl(t,e,n,r){var l;const i=r.actions,o=e.attribute,s=r.provenance.storeHelper.getDispatcher(),a=[];t&&a.push({label:t,type:"header"});const c=h=>{const d=r.provenance.getActionInfo(h);return{label:d.title,icon:d.icon,callback:()=>s(h)}},u=(...h)=>a.push(...h.map(c));u(i.sortBy({attribute:o}));const f=(l=e==null?void 0:e.type)!=null?l:"identifier";return f!="quantitative"?(f!="identifier"&&u(i.groupByNominal({attribute:o}),i.retainFirstOfEach({attribute:o})),u(i.filterByNominal({attribute:o,values:[n]}),i.filterByNominal({attribute:o,remove:!0,values:[n]}))):(u(i.groupToQuartiles({attribute:o})),r6(n)?u(i.filterByQuantitative({attribute:o,operator:"gte",operand:+n}),i.filterByQuantitative({attribute:o,operator:"lte",operand:+n})):u(i.removeUndefined({attribute:o}))),f!=="identifier"&&a.push({icon:Hi,label:"Advanced filter...",callback:()=>$8(e,r)}),a}function r6(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function i6(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var sn={},Pn={};Object.defineProperty(Pn,"__esModule",{value:!0}),Pn.ActionCreators=Pn.ActionTypes=void 0;var Fn={UNDO:"@@redux-undo/UNDO",REDO:"@@redux-undo/REDO",JUMP_TO_FUTURE:"@@redux-undo/JUMP_TO_FUTURE",JUMP_TO_PAST:"@@redux-undo/JUMP_TO_PAST",JUMP:"@@redux-undo/JUMP",CLEAR_HISTORY:"@@redux-undo/CLEAR_HISTORY"};Pn.ActionTypes=Fn;var o6={undo:function(){return{type:Fn.UNDO}},redo:function(){return{type:Fn.REDO}},jumpToFuture:function(e){return{type:Fn.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:Fn.JUMP_TO_PAST,index:e}},jump:function(e){return{type:Fn.JUMP,index:e}},clearHistory:function(){return{type:Fn.CLEAR_HISTORY}}};Pn.ActionCreators=o6;var vt={};Object.defineProperty(vt,"__esModule",{value:!0}),vt.parseActions=Os,vt.isHistory=s6,vt.includeAction=a6,vt.excludeAction=c6,vt.combineFilters=u6,vt.groupByActionTypes=l6,vt.newHistory=f6;function Os(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function s6(t){return typeof t.present!="undefined"&&typeof t.future!="undefined"&&typeof t.past!="undefined"&&Array.isArray(t.future)&&Array.isArray(t.past)}function a6(t){var e=Os(t);return function(n){return e.indexOf(n.type)>=0}}function c6(t){var e=Os(t);return function(n){return e.indexOf(n.type)<0}}function u6(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.reduce(function(r,i){return function(o,s,a){return r(o,s,a)&&i(o,s,a)}},function(){return!0})}function l6(t){var e=Os(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function f6(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;return{past:t,present:e,future:n,group:r,_latestUnfiltered:e,index:t.length,limit:t.length+n.length+1}}var Sm={},vr={};Object.defineProperty(vr,"__esModule",{value:!0}),vr.set=x6,vr.start=y6,vr.end=A6,vr.log=b6;function wt(t){return p6(t)||d6(t)||h6()}function h6(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function d6(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function p6(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}var Bs,$e,pl={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function g6(){$e={header:[],prev:[],action:[],next:[],msgs:[]}}function m6(){var t=$e,e=t.header,n=t.prev,r=t.next,i=t.action,o=t.msgs;if(console.group){var s,a,c,u,f;(s=console).groupCollapsed.apply(s,wt(e)),(a=console).log.apply(a,wt(n)),(c=console).log.apply(c,wt(i)),(u=console).log.apply(u,wt(r)),(f=console).log.apply(f,wt(o)),console.groupEnd()}else{var l,h,d,p,g;(l=console).log.apply(l,wt(e)),(h=console).log.apply(h,wt(n)),(d=console).log.apply(d,wt(i)),(p=console).log.apply(p,wt(r)),(g=console).log.apply(g,wt(o))}}function gl(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function y6(t,e){g6(),Bs&&(console.group?($e.header=["%credux-undo","font-style: italic","action",t.type],$e.action=gl("action",pl.action,t),$e.prev=gl("prev history",pl.prevState,e)):($e.header=["redux-undo action",t.type],$e.action=["action",t],$e.prev=["prev history",e]))}function A6(t){Bs&&(console.group?$e.next=gl("next history",pl.nextState,t):$e.next=["next history",t],m6())}function b6(){if(Bs){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];$e.msgs=$e.msgs.concat([].concat(e,[`
2037
- `]))}}function x6(t){Bs=t}(function(t){function e(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e=function(w){return typeof w}:e=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},e(b)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=S;var n=s(vr),r=Pn,i=vt;function o(){if(typeof WeakMap!="function")return null;var b=new WeakMap;return o=function(){return b},b}function s(b){if(b&&b.__esModule)return b;if(b===null||e(b)!=="object"&&typeof b!="function")return{default:b};var A=o();if(A&&A.has(b))return A.get(b);var w={},E=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var B in b)if(Object.prototype.hasOwnProperty.call(b,B)){var O=E?Object.getOwnPropertyDescriptor(b,B):null;O&&(O.get||O.set)?Object.defineProperty(w,B,O):w[B]=b[B]}return w.default=b,A&&A.set(b,w),w}function a(b,A){var w=Object.keys(b);if(Object.getOwnPropertySymbols){var E=Object.getOwnPropertySymbols(b);A&&(E=E.filter(function(B){return Object.getOwnPropertyDescriptor(b,B).enumerable})),w.push.apply(w,E)}return w}function c(b){for(var A=1;A<arguments.length;A++){var w=arguments[A]!=null?arguments[A]:{};A%2?a(Object(w),!0).forEach(function(E){u(b,E,w[E])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(w)):a(Object(w)).forEach(function(E){Object.defineProperty(b,E,Object.getOwnPropertyDescriptor(w,E))})}return b}function u(b,A,w){return A in b?Object.defineProperty(b,A,{value:w,enumerable:!0,configurable:!0,writable:!0}):b[A]=w,b}function f(b){return d(b)||h(b)||l()}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function h(b){if(Symbol.iterator in Object(b)||Object.prototype.toString.call(b)==="[object Arguments]")return Array.from(b)}function d(b){if(Array.isArray(b)){for(var A=0,w=new Array(b.length);A<b.length;A++)w[A]=b[A];return w}}function p(b,A){var w=(0,i.newHistory)([],b,[]);return A&&(w._latestUnfiltered=null),w}function g(b,A,w,E){var B=b.past.length+1;n.log("inserting",A),n.log("new free: ",w-B);var O=b.past,D=b._latestUnfiltered,k=w&&w<=B,z=O.slice(k?1:0),G=D!=null?[].concat(f(z),[D]):z;return(0,i.newHistory)(G,A,[],E)}function m(b,A){if(A<0||A>=b.future.length)return b;var w=b.past,E=b.future,B=b._latestUnfiltered,O=[].concat(f(w),[B],f(E.slice(0,A))),D=E[A],k=E.slice(A+1);return(0,i.newHistory)(O,D,k)}function y(b,A){if(A<0||A>=b.past.length)return b;var w=b.past,E=b.future,B=b._latestUnfiltered,O=w.slice(0,A),D=[].concat(f(w.slice(A+1)),[B],f(E)),k=w[A];return(0,i.newHistory)(O,k,D)}function x(b,A){return A>0?m(b,A-1):A<0?y(b,b.past.length+A):b}function v(b,A){return A.indexOf(b)>-1?b:!b}function S(b){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.set(A.debug);var w=c({limit:void 0,filter:function(){return!0},groupBy:function(){return null},undoType:r.ActionTypes.UNDO,redoType:r.ActionTypes.REDO,jumpToPastType:r.ActionTypes.JUMP_TO_PAST,jumpToFutureType:r.ActionTypes.JUMP_TO_FUTURE,jumpType:r.ActionTypes.JUMP,neverSkipReducer:!1,ignoreInitialState:!1,syncFilter:!1},A,{initTypes:(0,i.parseActions)(A.initTypes,["@@redux-undo/INIT"]),clearHistoryType:(0,i.parseActions)(A.clearHistoryType,[r.ActionTypes.CLEAR_HISTORY])}),E=w.neverSkipReducer?function(O,D){for(var k=arguments.length,z=new Array(k>2?k-2:0),G=2;G<k;G++)z[G-2]=arguments[G];return c({},O,{present:b.apply(void 0,[O.present,D].concat(z))})}:function(O){return O},B;return function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:B,D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(D,O);for(var k=O,z=arguments.length,G=new Array(z>2?z-2:0),ue=2;ue<z;ue++)G[ue-2]=arguments[ue];if(!B)if(n.log("history is uninitialized"),O===void 0){var Ae={type:"@@redux-undo/CREATE_HISTORY"},Ge=b.apply(void 0,[O,Ae].concat(G));return k=p(Ge,w.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(k),k}else(0,i.isHistory)(O)?(k=B=w.ignoreInitialState?O:(0,i.newHistory)(O.past,O.present,O.future),n.log("initialHistory initialized: initialState is a history",B)):(k=B=p(O,w.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",B));var U;switch(D.type){case void 0:return k;case w.undoType:return U=x(k,-1),n.log("perform undo"),n.end(U),E.apply(void 0,[U,D].concat(G));case w.redoType:return U=x(k,1),n.log("perform redo"),n.end(U),E.apply(void 0,[U,D].concat(G));case w.jumpToPastType:return U=y(k,D.index),n.log("perform jumpToPast to ".concat(D.index)),n.end(U),E.apply(void 0,[U,D].concat(G));case w.jumpToFutureType:return U=m(k,D.index),n.log("perform jumpToFuture to ".concat(D.index)),n.end(U),E.apply(void 0,[U,D].concat(G));case w.jumpType:return U=x(k,D.index),n.log("perform jump to ".concat(D.index)),n.end(U),E.apply(void 0,[U,D].concat(G));case v(D.type,w.clearHistoryType):return U=p(k.present,w.ignoreInitialState),n.log("perform clearHistory"),n.end(U),E.apply(void 0,[U,D].concat(G));default:if(U=b.apply(void 0,[k.present,D].concat(G)),w.initTypes.some(function(ef){return ef===D.type}))return n.log("reset history due to init action"),n.end(B),B;if(k._latestUnfiltered===U)return k;var ie=typeof w.filter=="function"&&!w.filter(D,U,k);if(ie){var eo=(0,i.newHistory)(k.past,U,k.future,k.group);return w.syncFilter||(eo._latestUnfiltered=k._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(eo),eo}var to=w.groupBy(D,U,k);if(to!=null&&to===k.group){var ea=(0,i.newHistory)(k.past,U,k.future,k.group);return n.log("groupBy grouped the action with the previous action"),n.end(ea),ea}return k=g(k,U,w.limit,to),n.log("inserted new state into history"),n.end(k),k}}}})(Sm),function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ActionTypes",{enumerable:!0,get:function(){return e.ActionTypes}}),Object.defineProperty(t,"ActionCreators",{enumerable:!0,get:function(){return e.ActionCreators}}),Object.defineProperty(t,"parseActions",{enumerable:!0,get:function(){return n.parseActions}}),Object.defineProperty(t,"isHistory",{enumerable:!0,get:function(){return n.isHistory}}),Object.defineProperty(t,"includeAction",{enumerable:!0,get:function(){return n.includeAction}}),Object.defineProperty(t,"excludeAction",{enumerable:!0,get:function(){return n.excludeAction}}),Object.defineProperty(t,"combineFilters",{enumerable:!0,get:function(){return n.combineFilters}}),Object.defineProperty(t,"groupByActionTypes",{enumerable:!0,get:function(){return n.groupByActionTypes}}),Object.defineProperty(t,"newHistory",{enumerable:!0,get:function(){return n.newHistory}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.default}});var e=Pn,n=vt,r=i(Sm);function i(o){return o&&o.__esModule?o:{default:o}}}(sn);var v6=i6(sn);function ml(t){return t.split("-")[0]}function Cm(t){return t.split("-")[1]}function Dm(t){return["top","bottom"].includes(ml(t))?"x":"y"}function Mm(t){return t==="y"?"height":"width"}function Im(t){let{reference:e,floating:n,placement:r}=t;const i=e.x+e.width/2-n.width/2,o=e.y+e.height/2-n.height/2;let s;switch(ml(r)){case"top":s={x:i,y:e.y-n.height};break;case"bottom":s={x:i,y:e.y+e.height};break;case"right":s={x:e.x+e.width,y:o};break;case"left":s={x:e.x-n.width,y:o};break;default:s={x:e.x,y:e.y}}const a=Dm(r),c=Mm(a);switch(Cm(r)){case"start":s[a]=s[a]-(e[c]/2-n[c]/2);break;case"end":s[a]=s[a]+(e[c]/2-n[c]/2);break}return s}const w6=async(t,e,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:s}=n;let a=await s.getElementRects({reference:t,floating:e,strategy:i}),{x:c,y:u}=Im(F(T({},a),{placement:r})),f=r,l={};for(let h=0;h<o.length;h++){const{name:d,fn:p}=o[h],{x:g,y:m,data:y,reset:x}=await p({x:c,y:u,initialPlacement:r,placement:f,strategy:i,middlewareData:l,rects:a,platform:s,elements:{reference:t,floating:e}});if(c=g!=null?g:c,u=m!=null?m:u,l=F(T({},l),{[d]:y!=null?y:{}}),x){typeof x=="object"&&(x.placement&&(f=x.placement),x.rects&&(a=x.rects===!0?await s.getElementRects({reference:t,floating:e,strategy:i}):x.rects),{x:c,y:u}=Im(F(T({},a),{placement:f}))),h=-1;continue}}return{x:c,y:u,placement:f,strategy:i,middlewareData:l}};function E6(t){return T({top:0,right:0,bottom:0,left:0},t)}function S6(t){return typeof t!="number"?E6(t):{top:t,right:t,bottom:t,left:t}}function yl(t){return F(T({},t),{top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height})}async function C6(t,e){e===void 0&&(e={});const{x:n,y:r,platform:i,rects:o,elements:s,strategy:a}=t,{boundary:c="clippingParents",rootBoundary:u="viewport",elementContext:f="floating",altBoundary:l=!1,padding:h=0}=e,d=S6(h),g=s[l?f==="floating"?"reference":"floating":f],m=await i.getClippingClientRect({element:await i.isElement(g)?g:g.contextElement||await i.getDocumentElement({element:s.floating}),boundary:c,rootBoundary:u}),y=yl(await i.convertOffsetParentRelativeRectToViewportRelativeRect({rect:f==="floating"?F(T({},o.floating),{x:n,y:r}):o.reference,offsetParent:await i.getOffsetParent({element:s.floating}),strategy:a}));return{top:m.top-y.top+d.top,bottom:y.bottom-m.bottom+d.bottom,left:m.left-y.left+d.left,right:y.right-m.right+d.right}}const D6={left:"right",right:"left",bottom:"top",top:"bottom"};function Ps(t){return t.replace(/left|right|bottom|top/g,e=>D6[e])}function M6(t,e){const n=Cm(t)==="start",r=Dm(t),i=Mm(r);let o=r==="x"?n?"right":"left":n?"bottom":"top";return e.reference[i]>e.floating[i]&&(o=Ps(o)),{main:o,cross:Ps(o)}}const I6={start:"end",end:"start"};function Tm(t){return t.replace(/start|end/g,e=>I6[e])}function T6(t){const e=Ps(t);return[Tm(t),e,Tm(e)]}const N6=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var n,r;const{placement:i,middlewareData:o,rects:s,initialPlacement:a}=e;if((n=o.flip)!=null&&n.skip)return{};const E=t,{mainAxis:c=!0,crossAxis:u=!0,fallbackPlacements:f,fallbackStrategy:l="bestFit",flipAlignment:h=!0}=E,d=fy(E,["mainAxis","crossAxis","fallbackPlacements","fallbackStrategy","flipAlignment"]),p=ml(i),m=f||(p===a||!h?[Ps(a)]:T6(a)),y=[a,...m],x=await C6(e,d),v=[];let S=((r=o.flip)==null?void 0:r.overflows)||[];if(c&&v.push(x[p]),u){const{main:B,cross:O}=M6(i,s);v.push(x[B],x[O])}if(S=[...S,{placement:i,overflows:v}],!v.every(B=>B<=0)){var b,A;const B=((b=(A=o.flip)==null?void 0:A.index)!=null?b:0)+1,O=y[B];if(O)return{data:{index:B,overflows:S},reset:{placement:O}};let D="bottom";switch(l){case"bestFit":{var w;const k=(w=S.slice().sort((z,G)=>z.overflows.filter(ue=>ue>0).reduce((ue,Ae)=>ue+Ae,0)-G.overflows.filter(ue=>ue>0).reduce((ue,Ae)=>ue+Ae,0))[0])==null?void 0:w.placement;k&&(D=k);break}case"initialPlacement":D=a;break}return{data:{skip:!0},reset:{placement:D}}}return{}}}};function Al(t){return(t==null?void 0:t.toString())==="[object Window]"}function an(t){if(t==null)return window;if(!Al(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function Fs(t){return an(t).getComputedStyle(t)}function Ft(t){return Al(t)?"":t?(t.nodeName||"").toLowerCase():""}function zt(t){return t instanceof an(t).HTMLElement}function zs(t){return t instanceof an(t).Element}function L6(t){return t instanceof an(t).Node}function Nm(t){const e=an(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Rs(t){const{overflow:e,overflowX:n,overflowY:r}=Fs(t);return/auto|scroll|overlay|hidden/.test(e+r+n)}function k6(t){return["table","td","th"].includes(Ft(t))}function Lm(t){const e=navigator.userAgent.toLowerCase().includes("firefox"),n=Fs(t);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||e&&n.willChange==="filter"||e&&(n.filter?n.filter!=="none":!1)}const km=Math.min,Vi=Math.max,Us=Math.round;function wr(t,e){e===void 0&&(e=!1);const n=t.getBoundingClientRect();let r=1,i=1;return e&&zt(t)&&(r=t.offsetWidth>0&&Us(n.width)/t.offsetWidth||1,i=t.offsetHeight>0&&Us(n.height)/t.offsetHeight||1),{width:n.width/r,height:n.height/i,top:n.top/i,right:n.right/r,bottom:n.bottom/i,left:n.left/r,x:n.left/r,y:n.top/i}}function cn(t){return((L6(t)?t.ownerDocument:t.document)||window.document).documentElement}function js(t){return Al(t)?{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}:{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function Om(t){return wr(cn(t)).left+js(t).scrollLeft}function O6(t){const e=wr(t);return Us(e.width)!==t.offsetWidth||Us(e.height)!==t.offsetHeight}function B6(t,e,n){const r=zt(e),i=cn(e),o=wr(t,r&&O6(e));let s={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if(r||!r&&n!=="fixed")if((Ft(e)!=="body"||Rs(i))&&(s=js(e)),zt(e)){const c=wr(e,!0);a.x=c.x+e.clientLeft,a.y=c.y+e.clientTop}else i&&(a.x=Om(i));return{x:o.left+s.scrollLeft-a.x,y:o.top+s.scrollTop-a.y,width:o.width,height:o.height}}function Gs(t){return Ft(t)==="html"?t:t.assignedSlot||t.parentNode||(Nm(t)?t.host:null)||cn(t)}function Bm(t){return!zt(t)||getComputedStyle(t).position==="fixed"?null:t.offsetParent}function P6(t){let e=Gs(t);for(;zt(e)&&!["html","body"].includes(Ft(e));){if(Lm(e))return e;e=e.parentNode}return null}function bl(t){const e=an(t);let n=Bm(t);for(;n&&k6(n)&&getComputedStyle(n).position==="static";)n=Bm(n);return n&&(Ft(n)==="html"||Ft(n)==="body"&&getComputedStyle(n).position==="static"&&!Lm(n))?e:n||P6(t)||e}function Pm(t){return{width:t.offsetWidth,height:t.offsetHeight}}function F6(t){let{rect:e,offsetParent:n,strategy:r}=t;const i=zt(n),o=cn(n);if(n===o)return e;let s={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if((i||!i&&r!=="fixed")&&((Ft(n)!=="body"||Rs(o))&&(s=js(n)),zt(n))){const c=wr(n,!0);a.x=c.x+n.clientLeft,a.y=c.y+n.clientTop}return F(T({},e),{x:e.x-s.scrollLeft+a.x,y:e.y-s.scrollTop+a.y})}function z6(t){const e=an(t),n=cn(t),r=e.visualViewport;let i=n.clientWidth,o=n.clientHeight,s=0,a=0;return r&&(i=r.width,o=r.height,Math.abs(e.innerWidth/r.scale-r.width)<.01&&(s=r.offsetLeft,a=r.offsetTop)),{width:i,height:o,x:s,y:a}}function R6(t){var e;const n=cn(t),r=js(t),i=(e=t.ownerDocument)==null?void 0:e.body,o=Vi(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),s=Vi(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0);let a=-r.scrollLeft+Om(t);const c=-r.scrollTop;return Fs(i||n).direction==="rtl"&&(a+=Vi(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:s,x:a,y:c}}function Fm(t){return["html","body","#document"].includes(Ft(t))?t.ownerDocument.body:zt(t)&&Rs(t)?t:Fm(Gs(t))}function zm(t,e){var n;e===void 0&&(e=[]);const r=Fm(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),o=an(r),s=i?[o].concat(o.visualViewport||[],Rs(r)?r:[]):r,a=e.concat(s);return i?a:a.concat(zm(Gs(s)))}function U6(t,e){const n=e.getRootNode==null?void 0:e.getRootNode();if(t.contains(e))return!0;if(n&&Nm(n)){let r=e;do{if(r&&t===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function j6(t){const e=wr(t),n=e.top+t.clientTop,r=e.left+t.clientLeft;return{top:n,left:r,x:r,y:n,right:r+t.clientWidth,bottom:n+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}function Rm(t,e){return e==="viewport"?yl(z6(t)):zs(e)?j6(e):yl(R6(cn(t)))}function G6(t){const e=zm(Gs(t)),r=["absolute","fixed"].includes(Fs(t).position)&&zt(t)?bl(t):t;return zs(r)?e.filter(i=>zs(i)&&U6(i,r)&&Ft(i)!=="body"):[]}function H6(t){let{element:e,boundary:n,rootBoundary:r}=t;const o=[...n==="clippingParents"?G6(e):[].concat(n),r],s=o[0],a=o.reduce((c,u)=>{const f=Rm(e,u);return c.top=Vi(f.top,c.top),c.right=km(f.right,c.right),c.bottom=km(f.bottom,c.bottom),c.left=Vi(f.left,c.left),c},Rm(e,s));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}const Q6={getElementRects:t=>{let{reference:e,floating:n,strategy:r}=t;return{reference:B6(e,bl(n),r),floating:F(T({},Pm(n)),{x:0,y:0})}},convertOffsetParentRelativeRectToViewportRelativeRect:t=>F6(t),getOffsetParent:t=>{let{element:e}=t;return bl(e)},isElement:t=>zs(t),getDocumentElement:t=>{let{element:e}=t;return cn(e)},getClippingClientRect:t=>H6(t),getDimensions:t=>{let{element:e}=t;return Pm(e)},getClientRects:t=>{let{element:e}=t;return e.getClientRects()}},V6=(t,e,n)=>w6(t,e,T({platform:Q6},n));let Et;const _i=[],xl=Is(t=>t(),150,!1);function Yi(t){if((t==null?void 0:t.type)=="contextmenu"){t.preventDefault();return}Et&&(Et.remove(),Et=void 0,document.body.classList.remove(En))}function Um(t){var e;if(!(t<1)){for(let n=t;n<_i.length;n++)(e=_i[n])==null||e.remove(),_i[n]=void 0;for(const n of _i[t-1].querySelectorAll("li.active"))n.classList.remove("active")}}const _6=()=>M`<li class="menu-divider"></li>`,Y6=t=>M`<li class="menu-header">${t.label||"-"}</li>`,W6=(t,e)=>M`<li><a class="submenu-item" @click="${n=>n.stopPropagation()}" @mouseup="${n=>n.stopPropagation()}" @mouseenter="${n=>xl(()=>{const r=n.target.closest("li");Z6(t.submenu,r,e+1),n.stopPropagation()})}" @mouseleave="${()=>xl(()=>Um(e+1))}"><span>${t.label}</span></a></li>`,X6=t=>M`<li><a @mouseup="${()=>{Yi(),t.callback()}}">${t.icon?te(t.icon).node[0]:""} ${t.label}</a> ${t.ellipsisCallback?M`<a class="menu-ellipsis" @click="${t.ellipsisCallback}">${te(o8).node[0]}</a>`:R}</li>`,q6=t=>M`<li><span class="disabled-item">${t.icon?te(t.icon).node[0]:""} ${t.label||"-"}</span></li>`;function jm(t,e=1){switch(t.type){case"divider":return _6();case"header":return Y6(t);default:return t.submenu?W6(t,e):t.callback?X6(t):q6(t)}}function Z6(t,e,n){Gm(t,e,n,"right-start"),e.classList.add("active")}function Gm(t,e,n,r){const i=document.createElement("ul");i.classList.add("gs-context-menu"),i.addEventListener("mouseenter",()=>{xl(()=>{})}),Xe(t.map(o=>jm(o,n)),i),Et.appendChild(i),Um(n),_i[n]=i,V6(e,i,{placement:r!=null?r:"right-start",middleware:[N6()]}).then(({x:o,y:s})=>{const a=i.querySelector(":scope > li");a&&(s-=a.getBoundingClientRect().top),i.style.left=`${o}px`,i.style.top=`${s}px`})}function Hm(t,e,n){n!=null||(n="bottom-start"),Yi();const r=performance.now(),i=document.body;Et=document.createElement("div"),Et.classList.add("gs-context-menu-backdrop"),Et.addEventListener("click",Yi),Et.addEventListener("contextmenu",Yi),Et.addEventListener("mouseup",()=>{performance.now()-r>500&&Yi()},{once:!0}),i.appendChild(Et),document.body.classList.add(En),Gm(t.items,e,0,n)}function Qm(t,e){Hm(t,K6(e),"right-start"),e.preventDefault()}function K6(t){return{getBoundingClientRect(){return{width:0,height:0,x:t.clientX,y:t.clientY,top:t.clientY,left:t.clientX,right:t.clientX,bottom:t.clientY,toJSON:void 0}}}}const vl={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},Hs="SAMPLE_ATTRIBUTE",Vm="SAMPLE_NAME",J6=/^attribute-(.*)$/;class _m extends yr{constructor(e){super({title:"Sample metadata",data:{dynamicSource:!0},hconcat:[],spacing:1,resolve:{scale:{default:"independent"},axis:{default:"independent"}}},e.context,void 0,"sample-metadata");this.sampleView=e,this._attributeHighlighState={backgroundOpacity:1,currentAttribute:void 0,abortController:new AbortController},this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(Hs,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(Vm,n=>Ym),this.addInteractionEventListener("contextmenu",this.handleContextMenu.bind(this)),this.addInteractionEventListener("mousemove",(n,r)=>{var a;const i=r.target,o=this._findSampleForMouseEvent(n,r),s=i&&((a=this.getAttributeInfoFromView(i))==null?void 0:a.name)||void 0;if(o){const c=JSON.stringify([o.id,s]);this.context.updateTooltip(c,u=>Promise.resolve(this.sampleToTooltip(u)))}this._handleAttributeHighlight(s)}),pe([...this.sampleView.getAncestors()]).addInteractionEventListener("mousemove",(n,r)=>{if(!!this._attributeHighlighState.currentAttribute){if(r.target){for(const i of r.target.getAncestors())if(i==this)return}this._handleAttributeHighlight(void 0)}})}getEncoding(e){return{}}render(e,n,r={}){!this.isVisible()||super.render(e,n,F(T({},r),{clipRect:this.sampleView._clipBySummary(n)}))}_handleAttributeHighlight(e){const n=this._attributeHighlighState;e!=n.currentAttribute&&(n.abortController.abort(),n.abortController=new AbortController,this.context.animator.transition(T({from:n.backgroundOpacity,onUpdate:r=>{n.backgroundOpacity=r},easingFunction:ug,signal:n.abortController.signal},e?{to:.1,duration:1e3,delay:n.backgroundOpacity<1?0:500}:{to:1,duration:200,delay:150})).catch(r=>{}),this.context.animator.requestRender()),n.currentAttribute=e}getSample(e){var n;return(n=this.sampleView.sampleHierarchy.sampleData)==null?void 0:n.entities[e]}_findSampleForMouseEvent(e,n){return this.sampleView.getSampleAt(n.point.y-e.y)}_getAttributeOpacity(e){const n=this._attributeHighlighState;return e==n.currentAttribute?1:n.backgroundOpacity}handleContextMenu(e,n){const r=n.uiEvent,i=this._findSampleForMouseEvent(e,n);if(!i){r.preventDefault();return}const o=[],s=this.getAttributeInfoFromView(n.target);if(s){const a=i.attributes[s.name];o.push(...dl(M`Attribute: <strong>${s.name}</strong>`,s,a,this.sampleView))}else o.push(...dl(M`Sample: <strong>${i.displayName}</strong>`,Ym,i.id,this.sampleView));Qm({items:o},r)}_setSamples(e){if(this.children.length)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;kg(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof Pe){const s=o.mark;i.push(s.initializeGraphics().then(a=>s)),n.addObserver(a=>{s.initializeEncoders(),s.initializeData(),s.updateGraphicsData()},o)}}),Promise.allSettled(i).then(o=>{for(const s of o)"value"in s?s.value.finalizeGraphicsInitialization():"reason"in s&&console.error(s.reason)}),r.publishData(e)}_createViews(){this.addChildBySpec(e5());for(const e of this._getAttributeNames()){const n=this.addChildBySpec(this._createAttributeViewSpec(e));n.opacityFunction=r=>r*this._getAttributeOpacity(e)}Bg(this)}_getAttributeDef(e){var n,r;return(r=(n=this.sampleView.spec.samples)==null?void 0:n.attributes)==null?void 0:r[e]}_getAttributeNames(){return this._cache("attributeNames",()=>[...this.sampleView.getSamples().flatMap(r=>Object.keys(r.attributes)).reduce((r,i)=>r.add(i),new Set)])}_createAttributeViewSpec(e){const n=this._getAttributeDef(e);let r=n?n.type:void 0;if(!r){const i=this.sampleView.getSamples();switch($f(i.map(o=>o.attributes[e]))){case"integer":case"number":r=vl.QUANTITATIVE;break;default:r=vl.NOMINAL}}return $6(e,F(T({},n||{}),{type:r}))}_findViewForAttribute(e){return this.children[this._getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e.name.match(J6);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:Hs,specifier:i},accessor:(o,s)=>s.sampleData.entities[o].attributes[i],type:r.type,scale:r.getScale(),title:M`<em class="attribute">${i}</em>`}}}getAttributeInfo(e){return this.getAttributeInfoFromView(this._findViewForAttribute(e))}sampleToTooltip(e){const[n,r]=JSON.parse(e),i=this.getSample(n),o=(a,c)=>t5(c)?this.getAttributeInfo(a).scale(c):"transparent",s=M`<table class="attributes">${Object.entries(i.attributes).map(([a,c])=>M`<tr class="${e8({hovered:a==r})}"><th>${a}</th><td>${jg(c)}</td><td class="color" .style="background-color: ${o(a,c)}"></td></tr>`)}</table>`;return M`<div class="title"><strong>${i.displayName||i.id}</strong></div>${s}`}getDefaultResolution(e,n){return"independent"}handleVerboseCommand(e){const n=e;for(const r of this._getAttributeNames()){const i=this.getAttributeInfo(r);if((i.type==Fu||i.type==zu)&&this.sampleView.getSamples().find(s=>s.attributes[i.name]==n)){const s=this.sampleView.actions.filterByNominal({attribute:{type:Hs,specifier:r},values:[n]}),a=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(a)&&!a.payload.remove&&a.payload.attribute.type==Hs&&a.payload.attribute.specifier==r&&a.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[sn.ActionCreators.undo(),s]:s),!0}}return!1}isPickingSupported(){return!1}}function $6(t,e){var i,o;const n=`attributes["${t}"]`,r={name:`attribute-${t}`,title:t,visible:(i=e.visible)!=null?i:!0,width:(o=e.width)!=null?o:10,transform:[{type:"filter",expr:`datum.${n} != null`}],mark:{type:"rect"},encoding:{facetIndex:{field:"indexNumber"},color:{field:n,type:e.type,scale:e.scale}},opacity:1};return e.barScale&&e.type==vl.QUANTITATIVE&&(r.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale}),r}function e5(){return{name:"metadata-sample-name",title:"Sample name",width:140,mark:{type:"text",align:"left",baseline:"middle",size:11,flushY:!1},encoding:{facetIndex:{field:"indexNumber"},x:{value:0},x2:{value:1},y:{value:0},y2:{value:1},text:{field:"displayName"}}}}function t5(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const Ym=Object.freeze({name:"sample",attribute:{type:Vm},accessor:t=>t,type:"identifier",scale:void 0});class n5 extends Ri{constructor(e){super({title:"Groups",width:{step:22},data:{dynamicSource:!0},transform:[{type:"filter",expr:"datum._depth > 0"},{type:"formula",as:"_y1",expr:"datum._index * 2"},{type:"formula",as:"_y2",expr:"datum._index * 2 + 1"},{type:"formula",as:"_NA",expr:"datum.label == null"},{type:"formula",as:"label",expr:"datum.label != null ? datum.label: 'NA'"}],encoding:{x:{field:"_depth",type:"ordinal",scale:{align:0,padding:.2272727},axis:null},y:{field:"_y1",type:"nominal",scale:{type:"ordinal",domain:ho(500)},axis:null},y2:{field:"_y2"}},layer:[{title:"Group",mark:{type:"rect",clip:!0,dynamicData:!0,color:"#e8e8e8"}},{mark:{type:"text",clip:!0,dynamicData:!0,angle:-90,paddingY:5,tooltip:null},encoding:{text:{field:"label"},opacity:{field:"_NA",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[1,.3]}}}}]},e.context,void 0,"sample-groups");this.sampleView=e,this._addBroadcastHandler("layoutComputed",()=>{this.updateRange()})}updateRange(){var o,s,a;const e=(o=this.sampleView.getLocations())==null?void 0:o.groups;if(!(e==null?void 0:e.length))return;const n=(a=(s=this.sampleView)==null?void 0:s._coords.height)!=null?a:0,r=this.getScaleResolution("y"),i=[];for(const c of e)i.push(1-(c.locSize.location+c.locSize.size)/n),i.push(1-c.locSize.location/n);r.getScale().range(i),this.context.glHelper.createRangeTexture(r,!0)}updateGroups(){var i,o;const e=(o=(i=this.sampleView.getLocations())==null?void 0:i.groups)!=null?o:[],n=this.context.dataFlow.findDataSourceByKey(this);if(!n)return;const r=e.map(s=>({_index:s.key.index,_name:s.key.group.name,_depth:s.key.depth,attribute:s.key.attributeLabel,label:s.key.group.label,n:s.key.n}));n.publishData(r),this.getScaleResolution("x").reconfigure(),this.getScaleResolution("y").reconfigure(),e.length&&this.updateRange(),pe([...this.getAncestors()]).visit(s=>ki(s,"size"))}}function at(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];throw Error("[Immer] minified error nr: "+t+(n.length?" "+n.map(function(i){return"'"+i+"'"}).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function un(t){return!!t&&!!t[ne]}function ln(t){return!!t&&(function(e){if(!e||typeof e!="object")return!1;var n=Object.getPrototypeOf(e);if(n===null)return!0;var r=Object.hasOwnProperty.call(n,"constructor")&&n.constructor;return r===Object||typeof r=="function"&&Function.toString.call(r)===f5}(t)||Array.isArray(t)||!!t[n1]||!!t.constructor[n1]||wl(t)||El(t))}function zn(t,e,n){n===void 0&&(n=!1),Er(t)===0?(n?Object.keys:Cr)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function Er(t){var e=t[ne];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:wl(t)?2:El(t)?3:0}function Sr(t,e){return Er(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function r5(t,e){return Er(t)===2?t.get(e):t[e]}function Wm(t,e,n){var r=Er(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function Xm(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function wl(t){return u5&&t instanceof Map}function El(t){return l5&&t instanceof Set}function Rn(t){return t.o||t.t}function Sl(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=r1(t);delete e[ne];for(var n=Cr(e),r=0;r<n.length;r++){var i=n[r],o=e[i];o.writable===!1&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(e[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:t[i]})}return Object.create(Object.getPrototypeOf(t),e)}function Cl(t,e){return e===void 0&&(e=!1),Dl(t)||un(t)||!ln(t)||(Er(t)>1&&(t.set=t.add=t.clear=t.delete=i5),Object.freeze(t),e&&zn(t,function(n,r){return Cl(r,!0)},!0)),t}function i5(){at(2)}function Dl(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function Rt(t){var e=Pl[t];return e||at(18,t),e}function o5(t,e){Pl[t]||(Pl[t]=e)}function Ml(){return Wi}function Il(t,e){e&&(Rt("Patches"),t.u=[],t.s=[],t.v=e)}function Qs(t){Tl(t),t.p.forEach(s5),t.p=null}function Tl(t){t===Wi&&(Wi=t.l)}function qm(t){return Wi={p:[],l:Wi,h:t,m:!0,_:0}}function s5(t){var e=t[ne];e.i===0||e.i===1?e.j():e.O=!0}function Nl(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||Rt("ES5").S(e,t,r),r?(n[ne].P&&(Qs(e),at(4)),ln(t)&&(t=Vs(e,t),e.l||_s(e,t)),e.u&&Rt("Patches").M(n[ne],t,e.u,e.s)):t=Vs(e,n,[]),Qs(e),e.u&&e.v(e.u,e.s),t!==t1?t:void 0}function Vs(t,e,n){if(Dl(e))return e;var r=e[ne];if(!r)return zn(e,function(o,s){return Zm(t,r,e,o,s,n)},!0),e;if(r.A!==t)return e;if(!r.P)return _s(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=Sl(r.k):r.o;zn(r.i===3?new Set(i):i,function(o,s){return Zm(t,r,i,o,s,n)}),_s(t,i,!1),n&&t.u&&Rt("Patches").R(r,n,t.u,t.s)}return r.o}function Zm(t,e,n,r,i,o){if(un(i)){var s=Vs(t,i,o&&e&&e.i!==3&&!Sr(e.D,r)?o.concat(r):void 0);if(Wm(n,r,s),!un(s))return;t.m=!1}if(ln(i)&&!Dl(i)){if(!t.h.F&&t._<1)return;Vs(t,i),e&&e.A.l||_s(t,i)}}function _s(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&Cl(e,n)}function Ll(t,e){var n=t[ne];return(n?Rn(n):t)[e]}function Km(t,e){if(e in t)for(var n=Object.getPrototypeOf(t);n;){var r=Object.getOwnPropertyDescriptor(n,e);if(r)return r;n=Object.getPrototypeOf(n)}}function fn(t){t.P||(t.P=!0,t.l&&fn(t.l))}function kl(t){t.o||(t.o=Sl(t.t))}function Ol(t,e,n){var r=wl(e)?Rt("MapSet").N(e,n):El(e)?Rt("MapSet").T(e,n):t.g?function(i,o){var s=Array.isArray(i),a={i:s?1:0,A:o?o.A:Ml(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=a,u=Dr;s&&(c=[a],u=Ys);var f=Proxy.revocable(c,u),l=f.revoke,h=f.proxy;return a.k=h,a.j=l,h}(e,n):Rt("ES5").J(e,n);return(n?n.A:Ml()).p.push(r),r}function a5(t){return un(t)||at(22,t),function e(n){if(!ln(n))return n;var r,i=n[ne],o=Er(n);if(i){if(!i.P&&(i.i<4||!Rt("ES5").K(i)))return i.t;i.I=!0,r=Jm(n,o),i.I=!1}else r=Jm(n,o);return zn(r,function(s,a){i&&r5(i.t,s)===a||Wm(r,s,e(a))}),o===3?new Set(r):r}(t)}function Jm(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return Sl(t)}function c5(){function t(o,s){var a=i[o];return a?a.enumerable=s:i[o]=a={configurable:!0,enumerable:s,get:function(){var c=this[ne];return Dr.get(c,o)},set:function(c){var u=this[ne];Dr.set(u,o,c)}},a}function e(o){for(var s=o.length-1;s>=0;s--){var a=o[s][ne];if(!a.P)switch(a.i){case 5:r(a)&&fn(a);break;case 4:n(a)&&fn(a)}}}function n(o){for(var s=o.t,a=o.k,c=Cr(a),u=c.length-1;u>=0;u--){var f=c[u];if(f!==ne){var l=s[f];if(l===void 0&&!Sr(s,f))return!0;var h=a[f],d=h&&h[ne];if(d?d.t!==l:!Xm(h,l))return!0}}var p=!!s[ne];return c.length!==Cr(s).length+(p?0:1)}function r(o){var s=o.k;if(s.length!==o.t.length)return!0;var a=Object.getOwnPropertyDescriptor(s,s.length-1);return!(!a||a.get)}var i={};o5("ES5",{J:function(o,s){var a=Array.isArray(o),c=function(f,l){if(f){for(var h=Array(l.length),d=0;d<l.length;d++)Object.defineProperty(h,""+d,t(d,!0));return h}var p=r1(l);delete p[ne];for(var g=Cr(p),m=0;m<g.length;m++){var y=g[m];p[y]=t(y,f||!!p[y].enumerable)}return Object.create(Object.getPrototypeOf(l),p)}(a,o),u={i:a?5:4,A:s?s.A:Ml(),P:!1,I:!1,D:{},l:s,t:o,k:c,o:null,O:!1,C:!1};return Object.defineProperty(c,ne,{value:u,writable:!0}),c},S:function(o,s,a){a?un(s)&&s[ne].A===o&&e(o.p):(o.u&&function c(u){if(u&&typeof u=="object"){var f=u[ne];if(f){var l=f.t,h=f.k,d=f.D,p=f.i;if(p===4)zn(h,function(v){v!==ne&&(l[v]!==void 0||Sr(l,v)?d[v]||c(h[v]):(d[v]=!0,fn(f)))}),zn(l,function(v){h[v]!==void 0||Sr(h,v)||(d[v]=!1,fn(f))});else if(p===5){if(r(f)&&(fn(f),d.length=!0),h.length<l.length)for(var g=h.length;g<l.length;g++)d[g]=!1;else for(var m=l.length;m<h.length;m++)d[m]=!0;for(var y=Math.min(h.length,l.length),x=0;x<y;x++)d[x]===void 0&&c(h[x])}}}}(o.p[0]),e(o.p))},K:function(o){return o.i===4?n(o):r(o)}})}var $m,Wi,Bl=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",u5=typeof Map!="undefined",l5=typeof Set!="undefined",e1=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",t1=Bl?Symbol.for("immer-nothing"):(($m={})["immer-nothing"]=!0,$m),n1=Bl?Symbol.for("immer-draftable"):"__$immer_draftable",ne=Bl?Symbol.for("immer-state"):"__$immer_state",f5=""+Object.prototype.constructor,Cr=typeof Reflect!="undefined"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,r1=Object.getOwnPropertyDescriptors||function(t){var e={};return Cr(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},Pl={},Dr={get:function(t,e){if(e===ne)return t;var n=Rn(t);if(!Sr(n,e))return function(i,o,s){var a,c=Km(o,s);return c?"value"in c?c.value:(a=c.get)===null||a===void 0?void 0:a.call(i.k):void 0}(t,n,e);var r=n[e];return t.I||!ln(r)?r:r===Ll(t.t,e)?(kl(t),t.o[e]=Ol(t.A.h,r,t)):r},has:function(t,e){return e in Rn(t)},ownKeys:function(t){return Reflect.ownKeys(Rn(t))},set:function(t,e,n){var r=Km(Rn(t),e);if(r==null?void 0:r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=Ll(Rn(t),e),o=i==null?void 0:i[ne];if(o&&o.t===n)return t.o[e]=n,t.D[e]=!1,!0;if(Xm(n,i)&&(n!==void 0||Sr(t.t,e)))return!0;kl(t),fn(t)}return t.o[e]===n&&typeof n!="number"&&(n!==void 0||e in t.o)||(t.o[e]=n,t.D[e]=!0,!0)},deleteProperty:function(t,e){return Ll(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,kl(t),fn(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=Rn(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.i!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},defineProperty:function(){at(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){at(12)}},Ys={};zn(Dr,function(t,e){Ys[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),Ys.deleteProperty=function(t,e){return Dr.deleteProperty.call(this,t[0],e)},Ys.set=function(t,e,n){return Dr.set.call(this,t[0],e,n,t[0])};var h5=function(){function t(n){var r=this;this.g=e1,this.F=!0,this.produce=function(i,o,s){if(typeof i=="function"&&typeof o!="function"){var a=o;o=i;var c=r;return function(d){var p=this;d===void 0&&(d=a);for(var g=arguments.length,m=Array(g>1?g-1:0),y=1;y<g;y++)m[y-1]=arguments[y];return c.produce(d,function(x){var v;return(v=o).call.apply(v,[p,x].concat(m))})}}var u;if(typeof o!="function"&&at(6),s!==void 0&&typeof s!="function"&&at(7),ln(i)){var f=qm(r),l=Ol(r,i,void 0),h=!0;try{u=o(l),h=!1}finally{h?Qs(f):Tl(f)}return typeof Promise!="undefined"&&u instanceof Promise?u.then(function(d){return Il(f,s),Nl(d,f)},function(d){throw Qs(f),d}):(Il(f,s),Nl(u,f))}if(!i||typeof i!="object")return(u=o(i))===t1?void 0:(u===void 0&&(u=i),r.F&&Cl(u,!0),u);at(21,i)},this.produceWithPatches=function(i,o){return typeof i=="function"?function(c){for(var u=arguments.length,f=Array(u>1?u-1:0),l=1;l<u;l++)f[l-1]=arguments[l];return r.produceWithPatches(c,function(h){return i.apply(void 0,[h].concat(f))})}:[r.produce(i,o,function(c,u){s=c,a=u}),s,a];var s,a},typeof(n==null?void 0:n.useProxies)=="boolean"&&this.setUseProxies(n.useProxies),typeof(n==null?void 0:n.autoFreeze)=="boolean"&&this.setAutoFreeze(n.autoFreeze)}var e=t.prototype;return e.createDraft=function(n){ln(n)||at(8),un(n)&&(n=a5(n));var r=qm(this),i=Ol(this,n,void 0);return i[ne].C=!0,Tl(r),i},e.finishDraft=function(n,r){var i=n&&n[ne],o=i.A;return Il(o,r),Nl(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!e1&&at(20),this.g=n},e.applyPatches=function(n,r){var i;for(i=r.length-1;i>=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}var s=Rt("Patches").$;return un(n)?s(n,r):this.produce(n,function(a){return s(a,r.slice(i+1))})},t}(),je=new h5,d5=je.produce;je.produceWithPatches.bind(je),je.setAutoFreeze.bind(je),je.setUseProxies.bind(je),je.applyPatches.bind(je),je.createDraft.bind(je),je.finishDraft.bind(je);var i1=d5;function p5(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o1(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function s1(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?o1(Object(n),!0).forEach(function(r){p5(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):o1(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Ce(t){return"Minified Redux error #"+t+"; visit https://redux.js.org/Errors?code="+t+" for the full message or use the non-minified dev environment for full errors. "}var a1=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Fl=function(){return Math.random().toString(36).substring(7).split("").join(".")},Ws={INIT:"@@redux/INIT"+Fl(),REPLACE:"@@redux/REPLACE"+Fl(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Fl()}};function g5(t){if(typeof t!="object"||t===null)return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function c1(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(Ce(0));if(typeof e=="function"&&typeof n=="undefined"&&(n=e,e=void 0),typeof n!="undefined"){if(typeof n!="function")throw new Error(Ce(1));return n(c1)(t,e)}if(typeof t!="function")throw new Error(Ce(2));var i=t,o=e,s=[],a=s,c=!1;function u(){a===s&&(a=s.slice())}function f(){if(c)throw new Error(Ce(3));return o}function l(g){if(typeof g!="function")throw new Error(Ce(4));if(c)throw new Error(Ce(5));var m=!0;return u(),a.push(g),function(){if(!!m){if(c)throw new Error(Ce(6));m=!1,u();var x=a.indexOf(g);a.splice(x,1),s=null}}}function h(g){if(!g5(g))throw new Error(Ce(7));if(typeof g.type=="undefined")throw new Error(Ce(8));if(c)throw new Error(Ce(9));try{c=!0,o=i(o,g)}finally{c=!1}for(var m=s=a,y=0;y<m.length;y++){var x=m[y];x()}return g}function d(g){if(typeof g!="function")throw new Error(Ce(10));i=g,h({type:Ws.REPLACE})}function p(){var g,m=l;return g={subscribe:function(x){if(typeof x!="object"||x===null)throw new Error(Ce(11));function v(){x.next&&x.next(f())}v();var S=m(v);return{unsubscribe:S}}},g[a1]=function(){return this},g}return h({type:Ws.INIT}),r={dispatch:h,subscribe:l,getState:f,replaceReducer:d},r[a1]=p,r}function m5(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:Ws.INIT});if(typeof r=="undefined")throw new Error(Ce(12));if(typeof n(void 0,{type:Ws.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error(Ce(13))})}function zl(t){for(var e=Object.keys(t),n={},r=0;r<e.length;r++){var i=e[r];typeof t[i]=="function"&&(n[i]=t[i])}var o=Object.keys(n),s;try{m5(n)}catch(a){s=a}return function(c,u){if(c===void 0&&(c={}),s)throw s;for(var f=!1,l={},h=0;h<o.length;h++){var d=o[h],p=n[d],g=c[d],m=p(g,u);if(typeof m=="undefined")throw u&&u.type,new Error(Ce(14));l[d]=m,f=f||m!==g}return f=f||o.length!==Object.keys(c).length,f?l:c}}function Xs(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.length===0?function(r){return r}:e.length===1?e[0]:e.reduce(function(r,i){return function(){return r(i.apply(void 0,arguments))}})}function y5(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(r){return function(){var i=r.apply(void 0,arguments),o=function(){throw new Error(Ce(15))},s={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},a=e.map(function(c){return c(s)});return o=Xs.apply(void 0,a)(i.dispatch),s1(s1({},i),{},{dispatch:o})}}}function A5(t,e){return t===e}function b5(t,e,n){if(e===null||n===null||e.length!==n.length)return!1;for(var r=e.length,i=0;i<r;i++)if(!t(e[i],n[i]))return!1;return!0}function x5(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:A5,n=null,r=null;return function(){return b5(e,n,arguments)||(r=t.apply(null,arguments)),n=arguments,r}}function v5(t){var e=Array.isArray(t[0])?t[0]:t;if(!e.every(function(r){return typeof r=="function"})){var n=e.map(function(r){return typeof r}).join(", ");throw new Error("Selector creators expect all input-selectors to be functions, "+("instead received the following types: ["+n+"]"))}return e}function w5(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return function(){for(var i=arguments.length,o=Array(i),s=0;s<i;s++)o[s]=arguments[s];var a=0,c=o.pop(),u=v5(o),f=t.apply(void 0,[function(){return a++,c.apply(null,arguments)}].concat(n)),l=t(function(){for(var h=[],d=u.length,p=0;p<d;p++)h.push(u[p].apply(null,arguments));return f.apply(null,h)});return l.resultFunc=c,l.dependencies=u,l.recomputations=function(){return a},l.resetRecomputations=function(){return a=0},l}}var E5=w5(x5);function u1(t){return function(e){var n=e.dispatch,r=e.getState;return function(i){return function(o){return typeof o=="function"?o(n,r,t):i(o)}}}}var Rl=u1();Rl.withExtraArgument=u1;var S5=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();globalThis&&globalThis.__generator;var qs=globalThis&&globalThis.__spreadArray||function(t,e){for(var n=0,r=e.length,i=t.length;n<r;n++,i++)t[i]=e[n];return t},C5=Object.defineProperty,l1=Object.getOwnPropertySymbols,D5=Object.prototype.hasOwnProperty,M5=Object.prototype.propertyIsEnumerable,f1=function(t,e,n){return e in t?C5(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Xi=function(t,e){for(var n in e||(e={}))D5.call(e,n)&&f1(t,n,e[n]);if(l1)for(var r=0,i=l1(e);r<i.length;r++){var n=i[r];M5.call(e,n)&&f1(t,n,e[n])}return t},I5=typeof window!="undefined"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Xs:Xs.apply(null,arguments)};function T5(t){if(typeof t!="object"||t===null)return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}var N5=function(t){S5(e,t);function e(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var i=t.apply(this,n)||this;return Object.setPrototypeOf(i,e.prototype),i}return Object.defineProperty(e,Symbol.species,{get:function(){return e},enumerable:!1,configurable:!0}),e.prototype.concat=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return t.prototype.concat.apply(this,n)},e.prototype.prepend=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return n.length===1&&Array.isArray(n[0])?new(e.bind.apply(e,qs([void 0],n[0].concat(this)))):new(e.bind.apply(e,qs([void 0],n.concat(this))))},e}(Array);function L5(t){return typeof t=="boolean"}function k5(){return function(e){return O5(e)}}function O5(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new N5;return n&&(L5(n)?r.push(Rl):r.push(Rl.withExtraArgument(n.extraArgument))),r}var B5=!0;function P5(t){var e=k5(),n=t||{},r=n.reducer,i=r===void 0?void 0:r,o=n.middleware,s=o===void 0?e():o,a=n.devTools,c=a===void 0?!0:a,u=n.preloadedState,f=u===void 0?void 0:u,l=n.enhancers,h=l===void 0?void 0:l,d;if(typeof i=="function")d=i;else if(T5(i))d=zl(i);else throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');var p=s;typeof p=="function"&&(p=p(e));var g=y5.apply(void 0,p),m=Xs;c&&(m=I5(Xi({trace:!B5},typeof c=="object"&&c)));var y=[g];Array.isArray(h)?y=qs([g],h):typeof h=="function"&&(y=h(y));var x=m.apply(void 0,y);return c1(d,f,x)}function h1(t,e){function n(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];if(e){var o=e.apply(void 0,r);if(!o)throw new Error("prepareAction did not return an object");return Xi(Xi({type:t,payload:o.payload},"meta"in o&&{meta:o.meta}),"error"in o&&{error:o.error})}return{type:t,payload:r[0]}}return n.toString=function(){return""+t},n.type=t,n.match=function(r){return r.type===t},n}function d1(t){var e={},n=[],r,i={addCase:function(o,s){var a=typeof o=="string"?o:o.type;if(a in e)throw new Error("addCase cannot be called with two reducers for the same action type");return e[a]=s,i},addMatcher:function(o,s){return n.push({matcher:o,reducer:s}),i},addDefaultCase:function(o){return r=o,i}};return t(i),[e,n,r]}function F5(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?d1(e):[e,n,r],o=i[0],s=i[1],a=i[2],c=i1(t,function(){});return function(u,f){u===void 0&&(u=c);var l=qs([o[f.type]],s.filter(function(h){var d=h.matcher;return d(f)}).map(function(h){var d=h.reducer;return d}));return l.filter(function(h){return!!h}).length===0&&(l=[a]),l.reduce(function(h,d){if(d)if(un(h)){var p=h,g=d(p,f);return typeof g=="undefined"?h:g}else{if(ln(h))return i1(h,function(m){return d(m,f)});var g=d(h,f);if(typeof g=="undefined"){if(h===null)return h;throw Error("A case reducer on a non-draftable value must not return undefined")}return g}return h},u)}}function z5(t,e){return t+"/"+e}function p1(t){var e=t.name,n=t.initialState;if(!e)throw new Error("`name` is a required option for createSlice");var r=t.reducers||{},i=typeof t.extraReducers=="function"?d1(t.extraReducers):[t.extraReducers],o=i[0],s=o===void 0?{}:o,a=i[1],c=a===void 0?[]:a,u=i[2],f=u===void 0?void 0:u,l=Object.keys(r),h={},d={},p={};l.forEach(function(y){var x=r[y],v=z5(e,y),S,b;"reducer"in x?(S=x.reducer,b=x.prepare):S=x,h[y]=S,d[v]=S,p[y]=b?h1(v,b):h1(v)});var g=Xi(Xi({},s),d),m=F5(n,g,c,f);return{name:e,reducer:m,actions:p,caseReducers:h}}c5();function g1(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=eA(t.samples,e),o=n?n.map(c=>[c,i.get(c)]).filter(c=>c[1]):[...i],a=t;a.groups=o.map(([c,u],f)=>({name:""+c,label:r?r[f]:c,samples:u})),delete t.samples}function R5(t,e){const n=Qn(".3~r"),r=G5(j5(t.samples,e,[0,.25,.5,.75,1]));r.length==1&&r.push(r[0]);const i=s=>`[${n(r[s])}, ${n(r[s+1])}${s<r.length-2?")":"]"}`,o=ho(r.length-1).reverse();g1(t,U5(e,r.slice(1,r.length-1)),o,o.map(i))}function U5(t,e){return r=>{const i=t(r);if(!(!ae(i)||isNaN(i))){for(let o=0;o<e.length;o++)if(i<e[o])return o;return e.length}}}function j5(t,e,n){const r=rA(t.map(e).filter(i=>ae(i)&&!isNaN(i)));return n.map(i=>yf(r,i))}function G5(t){const e=[t[0]];for(let n=1;n<t.length;n++)t[n]!=t[n-1]&&e.push(t[n]);return e}function H5(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var Q5=[].forEach;function V5(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],s=[];Q5.call(t,function(c,u,f){if(r=e(c,u,f),r===void 0)return void s.push(c);if(n===void 0&&typeof r=="symbol")throw new TypeError("Can't convert symbol to string");i.push(u),o[u]=r}),n===void 0&&(n=H5),i.sort(function(c,u){return n(o[c],o[u])});var a=i.map(function(c){return t[c]}).concat(s);return a.length!=t.length&&(a.length=t.length),a}function _5(t,e){const n=i=>i.copy().range(ho(0,i.domain().length)).unknown(-1);let r;switch(e.type){case"quantitative":r=i=>ae(i)&&!isNaN(i)?-i:-1/0;break;case"ordinal":r=n(e.scale);break;case"nominal":r=i=>i||"";break}return i=>r(t(i))}function Y5(t,e){const n=new Set,r=i=>{const o=n.has(i);return n.add(i),o};return t.filter(i=>!r(e(i)))}function W5(t,e,n=!1){return V5(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const X5={lt:(t,e)=>t<e,lte:(t,e)=>t<=e,eq:(t,e)=>t==e,gte:(t,e)=>t>=e,gt:(t,e)=>t>e};function q5(t,e,n,r){const i=X5[n];return t.filter(o=>i(e(o),r))}function Z5(t,e,n,r){const i=new Set(r),o=a=>i.has(a),s=n=="remove"?a=>!o(a):o;return t.filter(a=>s(e(a)))}function K5(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}const m1="setSamples",y1="sortBy",A1="retainFirstOfEach",b1="filterByNominal",x1="filterByQuantitative",v1="removeUndefined",w1="groupByNominal",E1="groupToQuartiles",Mr="sampleView";function J5(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",label:"Root",samples:[]}}}function $5(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return p1({name:Mr,initialState:J5(),reducers:{[m1]:(n,r)=>{const i=r.payload.samples;if(n.sampleData)throw new Error("Samples have already been set!");if(i.some(s=>s.id===void 0||s.id===null))throw new Error('The sample metadata contains missing sample ids or the "sample" column is missing!');if(new Set(i.map(s=>s.id)).size!=i.length)throw new Error("The sample metadata contains duplicate sample ids!");const o=i.map((s,a)=>F(T({},s),{indexNumber:a}));n.sampleData={ids:o.map(s=>s.id),entities:Object.fromEntries(o.map(s=>[s.id,s]))},n.rootGroup={name:"ROOT",label:"Root",samples:n.sampleData.ids}},[y1]:(n,r)=>{qi(n,i=>W5(i,_5(e(r.payload,n),t(r.payload.attribute)),!1))},[A1]:(n,r)=>{qi(n,i=>Y5(i,e(r.payload,n)))},[x1]:(n,r)=>{qi(n,i=>q5(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[b1]:(n,r)=>{qi(n,i=>Z5(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[v1]:(n,r)=>{qi(n,i=>K5(i,e(r.payload,n)))},[w1]:(n,r)=>{S1(n,i=>g1(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[E1]:(n,r)=>{S1(n,i=>R5(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})}}})}function qi(t,e){for(const n of C1(t))n.samples=e(n.samples)}function S1(t,e){for(const n of C1(t))e(n)}function C1(t){return D1(t).map(e=>pe(e))}function Ul(t){return t.provenance.present[Mr]}function D1(t){const e=[],n=[],r=i=>{if(e.push(i),I1(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function M1(t){return"samples"in t}function I1(t){return"groups"in t}function*T1(t){if(yield[t],I1(t))for(const e of t.groups)for(const n of T1(e))yield[t,...n]}const eI=Qn(".4"),tI={lt:"<",lte:"\u2264",eq:"=",gte:"\u2265",gt:">"};function nI(t,e){if(!t.type.startsWith(Mr))return;const n=t.payload,r=n.attribute&&e(n.attribute),i=r==null?void 0:r.name,o=(r==null?void 0:r.title)||M`<em>${i}</em>`,s={attributeName:i};switch(t.type.substring(Mr.length+1)){case m1:return F(T({},s),{title:"The initial state",icon:n8});case y1:return F(T({},s),{title:"Sort by",provenanceTitle:M`Sort by ${o}`,icon:d8});case A1:return F(T({},s),{title:M`Retain first sample of each unique <em>${i}</em>`,provenanceTitle:M`Retain first sample of each unique ${o}`,icon:c8});case b1:{const c=n.values,u=c.length>1?M`{${c.map((l,h)=>M`${h>0?", ":""}<strong>${l}</strong>`)}}`:M`<strong>${c[0]}</strong>`,f=l=>M`${n.remove?"Remove":"Retain"} samples having ${c[0]===void 0||c[0]===null?M`undefined ${l}`:M`${l} ${c.length>1?"in":M`<span class="operator">=</span>`} ${u}`}`;return F(T({},s),{title:f(M`<em>${i}</em>`),provenanceTitle:f(o),icon:n.remove?rl:Hi})}case x1:{const c=u=>M`Retain samples having ${u} <span class="operator">${tI[n.operator]}</span> <strong>${eI(n.operand)}</strong>`;return F(T({},s),{title:c(M`<em>${i}</em>`),provenanceTitle:c(o),icon:Hi})}case v1:return F(T({},s),{title:"Remove samples having missing attribute",provenanceTitle:M`Remove samples having missing ${o}`,icon:rl});case w1:return F(T({},s),{title:"Group by",provenanceTitle:M`Group by ${o}`,icon:Kg});case E1:return F(T({},s),{title:"Group to quartiles",provenanceTitle:M`Group to quartiles by ${o}`,icon:Kg});default:return F(T({},s),{title:JSON.stringify(t),icon:qg})}}class rI{constructor(){this.attributeInfoSourcesByType={}}addAttributeInfoSource(e,n){this.attributeInfoSourcesByType[e]=n}getAttributeInfo(e){const n=this.attributeInfoSourcesByType[e.type];if(!n)throw new Error("Cannot find attribute info source for: "+JSON.stringify(e));const r=n(e);if(r)return r;throw new Error("Unknown attribute: "+JSON.stringify(e))}}function Zs(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function N1(t,{viewHeight:e=0,sampleHeight:n=0,groupSpacing:r=5,summaryHeight:i=0}){if(!e&&!n)throw new Error("viewHeight or sampleHeight must be provided!");const o=h=>pe(h),s=t.map(h=>({path:h,sampleGroup:o(h),samples:o(h).samples})).filter(h=>h.samples.length),a=n?h=>({px:h.length*n+i,grow:0}):h=>({px:i,grow:h.length}),c=[];Es(s.map(h=>a(h.samples)),e,{spacing:r}).forEach((h,d)=>{c.push({key:s[d].path,locSize:h})});const u=[];for(const[h,d]of s.entries()){const p={grow:1},g=d.samples;Es(g.map(m=>p),Math.max(0,c[h].locSize.size-i),{offset:c[h].locSize.location+i}).forEach((m,y)=>{const{size:x,location:v}=m,S=x*.1*gg(15,22,x);m.location=v+S,m.size=x-2*S,u.push({key:g[y],locSize:m})})}function*f(){const h=[];for(const d of c){const p=d.key,g=pe(p);for(;h.length<=p.length&&h.length&&p[h.length-1]!=h[h.length-1].group;)yield h.pop();for(let m=0;m<h.length;m++){const y=h[m];y.locSize.size=d.locSize.location-y.locSize.location+d.locSize.size}for(let m=h.length;m<p.length;m++)h.push({group:p[m],locSize:T({},d.locSize),depth:h.length,n:0});for(const m of h)m.n+=g.samples.length}for(;h.length;)yield h.pop()}const l=[...f()].sort((h,d)=>h.depth-d.depth).map((h,d)=>({key:{index:d,group:h.group,depth:h.depth,n:h.n,attributeLabel:void 0},locSize:h.locSize}));return{samples:u,summaries:c,groups:l}}function iI(t,e){return e.find(n=>Wp(n.locSize,t))}const L1="VALUE_AT_LOCUS",k1=10;class jl extends At{constructor(e,n,r,i,o){super(e,n,r,i);var u;this.provenance=o,this.spec=e,this.stickySummaries=(u=e.stickySummaries)!=null?u:!0,this.compositeAttributeInfoSource=new rI,this.child=n.createView(e.spec,this,"sample-facets"),this.summaryViews=new yr({vconcat:[]},n,this,"sampleSummaries"),this.child.visit(f=>{f instanceof Pe&&this.summaryViews.children.push(...f.sampleAggregateViews)}),this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new yr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},n,this,"sample-sidebar"),this.groupPanel=new n5(this),this.peripheryView.addChild(this.groupPanel),this.attributePanel=new _m(this),this.peripheryView.addChild(this.attributePanel),this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(Zs(f=>Ul(f).rootGroup,f=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(Zs(f=>Ul(f).sampleData,f=>{const l=f&&Object.values(f.entities);!l||(this.attributePanel._setSamples(l),this.facetTextureData=new Float32Array(Math.ceil(l.length*2/4)*4),this.groupPanel.updateGroups())})),this.compositeAttributeInfoSource.addAttributeInfoSource(L1,f=>{const l=f.specifier,h=this.findDescendantByPath(l.path);let d;if(ae(l.locus))d=l.locus;else{const m=this.getScaleResolution("x").getGenome();if(m)d=m.toContinuous(l.locus.chrom,l.locus.pos);else throw new Error("Encountered a complex locus but no genome is available!")}const p=m=>{var y;return(y=h.mark.findDatumAt(m,d))==null?void 0:y[l.field]};return{name:l.field,attribute:f,title:M`<em class="attribute">${l.field}</em> <span class="viewTitle">(${h.spec.title||h.name})</span> at <span class="locus">${O1(l.locus)}</span>`,accessor:p,type:"quantitative",scale:void 0}}),this._addBroadcastHandler("dataLoaded",()=>this.extractSamplesFromData()),this._addBroadcastHandler("layout",()=>{this._locations=void 0}),this._scrollOffset=0,this._scrollableHeight=0,this._peekState=0,this._lastMouseY=-1,this.addInteractionEventListener("mousemove",(f,l)=>{this._lastMouseY=l.point.y-f.y}),this.addInteractionEventListener("wheel",(f,l)=>{const h=l.uiEvent;this._peekState&&!h.ctrlKey&&(this._scrollOffset=Tu(this._scrollOffset+h.deltaY,0,this._scrollableHeight-this._coords.height),this.groupPanel.updateRange(),this.context.animator.requestRender(),l.uiEvent={type:h.type,deltaX:h.deltaX,preventDefault:h.preventDefault.bind(h)})},!0),n.addKeyboardListener("keydown",f=>{f.code=="KeyE"&&!f.repeat&&this._togglePeek()}),n.addKeyboardListener("keyup",f=>{f.code=="KeyE"&&this._togglePeek(!1)});const s=f=>this.compositeAttributeInfoSource.getAttributeInfo(f),a=$5(s);this.provenance.addReducer(a.name,a.reducer),this.provenance.addActionInfoSource(f=>nI(f,s)),this.actions=a.actions;const c=E5(f=>{var l;return(l=f.sampleData)==null?void 0:l.entities},f=>f&&Object.values(f));this.getSamples=()=>c(this.sampleHierarchy),this.spec.samples.data&&this.loadSamples()}getEffectivePadding(){return this._cache("size/effectivePadding",()=>{const e=this.peripheryView.isVisible()?this.peripheryView.getSize().width.px+k1:0,n=this.child.getEffectivePadding();return this.getPadding().add(new Je(0,n.right,0,n.left+e))})}*[Symbol.iterator](){yield this.child,yield this.peripheryView}replaceChild(e,n){const r=n;if(e===this.child)this.child=r;else throw new Error("Not my child!")}loadSamples(){if(!this.spec.samples.data)throw new Error("SampleView has no explicit sample metadata specified! Cannot load anything.");const{dataSource:e,collector:n}=pM(Tg(this.spec.samples.data,this.getBaseUrl()),new oI);n.observers.push(i=>{const o=i.getData();this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:o}))});const r="samples "+this.getPathString();this.context.dataFlow.addDataSource(e,r)}extractSamplesFromData(){if(this.getSamples())return;const e=this.getScaleResolution("sample");if(e){const n=e.getDataDomain().map((r,i)=>({id:r,displayName:r,indexNumber:i,attributes:[]}));this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:n}))}else throw new Error("No explicit sample data nor sample channels found!")}get sampleHierarchy(){return this.provenance.getPresentState()[Mr]}getLocations(){var e,n,r;if(!this._locations){if(!this._coords)return;const i=this.sampleHierarchy,o=D1(i),s=[null,...i.groupMetadata],a=(r=((e=this.summaryViews)==null?void 0:e.isVisible())&&((n=this.summaryViews)==null?void 0:n.getSize().height.px))!=null?r:0,c=N1(o,{viewHeight:this._coords.height,groupSpacing:5,summaryHeight:a}),u=N1(o,{sampleHeight:35,groupSpacing:15,summaryHeight:a}),f=()=>-this._scrollOffset,l=()=>this._peekState;this._scrollableLocations=u,this._scrollableHeight=u.summaries.map(g=>g.locSize.location+g.locSize.size).reduce((g,m)=>Math.max(g,m),0);const h=(g,m)=>{const y=[];for(let x=0;x<g.length;x++){const v=g[x].key;y.push({key:v,locSize:DC(g[x].locSize,MC(m[x].locSize,f),l)})}return y},d=h(c.groups,u.groups),p=document.createElement("div");d.forEach(g=>{if(g.key.depth==0)return;const m=s[g.key.depth].attribute,y=this.compositeAttributeInfoSource.getAttributeInfo(m).title;y?oe(y)?g.key.attributeLabel=y:(Xe(y,p),g.key.attributeLabel=p.textContent.replace(/\s+/g," ").trim()):g.key.attributeLabel="unknown"}),this._locations={samples:h(c.samples,u.samples),summaries:h(c.summaries,u.summaries),groups:d}}return this._locations}getSampleAt(e){const n=iI(e,this.getLocations().samples);if(n)return this.sampleHierarchy.sampleData.entities[n.key]}getSummaryAt(e){const n=this.getLocations().summaries,r=n.findIndex(i=>Wp(i.locSize,e));return r>=0?{index:r,location:n[r]}:void 0}_clipBySummary(e){if(this.stickySummaries&&this.summaryViews.children.length){const n=this.summaryViews.getSize().height.px;return e.modify({y:()=>e.y+n,height:()=>e.height-n})}}renderChild(e,n,r={}){const i=1/n.height,o=()=>i,s=this._clipBySummary(n);for(const a of this.getLocations().samples)this.child.render(e,n,F(T({},r),{sampleFacetRenderingOptions:{locSize:IC(a.locSize,o)},facetId:[a.key],clipRect:s}))}renderSummaries(e,n,r={}){r=F(T({},r),{clipRect:n});const i=this.summaryViews.getSize().height.px;for(const[o,s]of this.getLocations().summaries.entries()){const a=()=>{const c=s.locSize.location;let u=n.y+c;return this.stickySummaries?u+Tu(-c,0,s.locSize.size-i):u};this.summaryViews.render(e,n.modify({y:a,height:i}),F(T({},r),{facetId:[o]}))}}render(e,n,r={}){if(!this.isVisible())return;n=n.shrink(this.getPadding()),e.pushView(this,n),this._coords=n;const i=Es([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],n.width,{spacing:k1}),o=s=>n.modify({x:s.location+n.x,width:s.size});this.peripheryView.render(e,o(i[0]),r),this.renderChild(e,o(i[1]),r),this.renderSummaries(e,o(i[1]),r),e.popView(this)}onBeforeRender(){this._updateFacetTexture()}_updateFacetTexture(){var i;const e=this.facetTextureData;e.fill(0);const n=(i=this.sampleHierarchy.sampleData)==null?void 0:i.entities;if(n){const o=this.getLocations().samples,s=this._coords.height;for(const a of o){const c=n[a.key].indexNumber;e[c*2+0]=a.locSize.location/s,e[c*2+1]=a.locSize.size/s}}const r=this.context.glHelper.gl;this.facetTexture=Bi(r,{internalFormat:r.RG32F,format:r.RG,height:1},e,this.facetTexture)}_togglePeek(e){var r;if(this._peekState>0&&this._peekState<1||e!==void 0&&e==!!this._peekState)return;const n={requestAnimationFrame:i=>this.context.animator.requestTransition(i),onUpdate:i=>{this._peekState=Math.pow(i,2),this.groupPanel.updateRange(),this.context.animator.requestRender()},from:this._peekState};if(this._peekState==0){const i=this._lastMouseY,o=(r=this.getSampleAt(i))==null?void 0:r.id;let s;if(o)s=(c=>c.location+c.size/2)(this._scrollableLocations.samples.find(c=>c.key==o).locSize);else{const a=this.getSummaryAt(i);a&&(s=this._scrollableLocations.summaries[a.index].locSize.location-(a.location.locSize.location-i))}if(s?this._scrollOffset=s-i:this._scrollOffset=(this._scrollableHeight-this._coords.height)/2,this._scrollableHeight>this._coords.height)Ms(F(T({},n),{to:1,duration:500,easingFunction:fD}));else{const a=c=>(1-Math.pow(c*2-1,2))*.5;Ms(F(T({},n),{from:0,to:1,duration:300,easingFunction:a}))}}else Ms(F(T({},n),{to:0,duration:400,easingFunction:uD}))}_handleContextMenu(e,n){const r=n.uiEvent,i=e.normalizePoint(n.point.x,n.point.y).x,o=this.getScaleResolution("x").invertToComplex(i),s=vM(this.child).filter(u=>!["sample","x","x2"].includes(u.channel)).filter(u=>["rect","rule"].includes(u.view.getMarkType()));let a=[{label:`Locus: ${O1(o)}`,type:"header"},{type:"divider"}],c="";for(const[u,f]of s.entries()){let l=[...f.view.getAncestors()];l=l.slice(0,l.findIndex(g=>g===this));const h={path:l.map(g=>g.name).reverse(),field:f.field,locus:o},d=this.compositeAttributeInfoSource.getAttributeInfo({type:L1,specifier:h}),p=f.view.spec.title||f.view.spec.name;p!=c&&(u>0&&a.push({type:"divider"}),a.push({label:p,type:"header"}),c=p),a.push({label:f.field,submenu:dl(null,d,void 0,this)})}Qm({items:a},r)}getSampleFacetTexture(){return this.facetTexture}getDefaultResolution(e,n){switch(e){case"x":case"sample":return"shared";default:return"independent"}}}function O1(t){return!ae(t)&&"chrom"in t?tD(t):""+t}class oI extends se{constructor(){super();this.reset()}reset(){this._index=0}handle(e){this._propagate({id:e.sample,displayName:e.displayName||e.sample,indexNumber:this._index++,attributes:sI(e)})}}function sI(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function aI(t){return"samples"in t&&ze(t.samples)&&"spec"in t&&ze(t.spec)}const cI=(t,e)=>e.some(n=>t instanceof n);let B1,P1;function uI(){return B1||(B1=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function lI(){return P1||(P1=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const F1=new WeakMap,Gl=new WeakMap,z1=new WeakMap,Hl=new WeakMap,Ql=new WeakMap;function fI(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",s)},o=()=>{n(hn(t.result)),i()},s=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",s)});return e.then(n=>{n instanceof IDBCursor&&F1.set(n,t)}).catch(()=>{}),Ql.set(e,t),e}function hI(t){if(Gl.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",o),t.removeEventListener("error",s),t.removeEventListener("abort",s)},o=()=>{n(),i()},s=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",o),t.addEventListener("error",s),t.addEventListener("abort",s)});Gl.set(t,e)}let Vl={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return Gl.get(t);if(e==="objectStoreNames")return t.objectStoreNames||z1.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return hn(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function dI(t){Vl=t(Vl)}function pI(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(_l(this),e,...n);return z1.set(r,e.sort?e.sort():[e]),hn(r)}:lI().includes(t)?function(...e){return t.apply(_l(this),e),hn(F1.get(this))}:function(...e){return hn(t.apply(_l(this),e))}}function gI(t){return typeof t=="function"?pI(t):(t instanceof IDBTransaction&&hI(t),cI(t,uI())?new Proxy(t,Vl):t)}function hn(t){if(t instanceof IDBRequest)return fI(t);if(Hl.has(t))return Hl.get(t);const e=gI(t);return e!==t&&(Hl.set(t,e),Ql.set(e,t)),e}const _l=t=>Ql.get(t);function mI(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const s=indexedDB.open(t,e),a=hn(s);return r&&s.addEventListener("upgradeneeded",c=>{r(hn(s.result),c.oldVersion,c.newVersion,hn(s.transaction))}),n&&s.addEventListener("blocked",()=>n()),a.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),a}const yI=["get","getKey","getAll","getAllKeys","count"],AI=["put","add","delete","clear"],Yl=new Map;function R1(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(Yl.get(e))return Yl.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=AI.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||yI.includes(n)))return;const o=async function(s,...a){const c=this.transaction(s,i?"readwrite":"readonly");let u=c.store;return r&&(u=u.index(a.shift())),(await Promise.all([u[n](...a),i&&c.done]))[0]};return Yl.set(e,o),o}dI(t=>F(T({},t),{get:(e,n,r)=>R1(e,n)||t.get(e,n,r),has:(e,n)=>!!R1(e,n)||t.has(e,n)}));class U1{isReadonly(){return!0}async put(e,n){this._checkReadonly()}async delete(e){this._checkReadonly()}async getNames(){return[]}async get(e){}_checkReadonly(){if(this.isReadonly())throw new Error("This bookmark")}}const Zi="bookmarks";class bI extends U1{constructor(e){super();this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=mI(e,1,{upgrade(n,r,i,o){n.createObjectStore(Zi,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}isReadonly(){return!1}async put(e,n){const i=(await this._getDB()).transaction(Zi,"readwrite");try{n?(await i.store.delete(n),await i.store.put(e)):await i.store.put(e),await i.done}catch(o){throw i.abort(),o}}async delete(e){(await this._getDB()).delete(Zi,e)}async getNames(){return(await this._getDB()).getAllKeys(Zi)}async get(e){return(await this._getDB()).get(Zi,e)}}/**
2138
+ */const l6=Hr(class extends lo{constructor(t){var e;if(super(t),t.type!==zt.ATTRIBUTE||t.name!=="style"||((e=t.strings)===null||e===void 0?void 0:e.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce((e,n)=>{const r=t[n];return r==null?e:e+`${n=n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(t,[e]){const{style:n}=t.element;if(this.ct===void 0){this.ct=new Set;for(const r in e)this.ct.add(r);return this.render(e)}this.ct.forEach(r=>{e[r]==null&&(this.ct.delete(r),r.includes("-")?n.removeProperty(r):n[r]="")});for(const r in e){const i=e[r];i!=null&&(this.ct.add(r),r.includes("-")?n.setProperty(r,i):n[r]=i)}return Ee}}),G1="close-dialog";function f6(){return new CustomEvent(G1,{bubbles:!0})}function Wr(t="default"){const e=document.createElement("div");e.classList.add("gs-modal"),t!="default"&&e.classList.add(t);const n=i=>{var o;switch(i.key){case"Escape":{e.querySelector(".btn-cancel").click(),i.stopPropagation();break}case"Enter":{if(((o=i.target)==null?void 0:o.tagName)=="TEXTAREA")return;e.querySelector(".btn-primary").click(),i.stopPropagation();break}}};e.addEventListener("keydown",n),He(D`<div class="backdrop"></div><div class="content"></div>`,e);const r=()=>{e.querySelector(".backdrop").addEventListener("transitionend",()=>e.remove()),e.classList.remove("visible"),document.body.classList.remove(Un)};return e.addEventListener("keydown",i=>{i.stopPropagation()}),e.addEventListener(G1,r),document.body.appendChild(e),window.requestAnimationFrame(()=>e.classList.add("visible")),t!="tour"&&document.body.classList.add(Un),{content:e.querySelector(".content"),close:r}}function ft(t,e={}){var i;const n=Wr(),r=e.title;return(i=e.okLabel)!=null||(e.okLabel="OK"),new Promise((o,a)=>{const s=()=>{n.close(),o(!0)},c=D`${r?D`<div class="modal-title">${r}</div>`:G}<div class="modal-body" style="max-width:700px">${t}</div><div class="modal-buttons">${e.cancelButton?D`<button @click="${()=>{n.close(),o(!1)}}">Cancel</button>`:G} <button @click="${s}">${e.okLabel}</button></div>`;He(c,n.content)})}function d6(t,e){var n,r;nn((n=t.scale)==null?void 0:n.type)?h6(t,e):ot((r=t.scale)==null?void 0:r.type)?p6(t,e):ft("Not implemented (yet).")}function h6(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=t.scale,i=Wr(),o=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,a=new Set,s=h=>{n(e.actions.filterByNominal({values:r.domain().filter(p=>a.has(p)),attribute:t.attribute,remove:h})),i.close()},c=h=>{const p=h.target;p.checked?a.add(p.value):a.delete(p.value),d()},u=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button ?disabled="${!a.size}" @click="${()=>s(!1)}">${ne(fo).node[0]} Retain</button> <button ?disabled="${!a.size}" @click="${()=>s(!0)}">${ne(Fl).node[0]} Remove</button></div>`,f=r,l=D`<p>Please select one or more categories and choose an action.</p><ul class="gs-checkbox-list" @input="${c}" tabindex="0">${r.domain().map(h=>D`<li><label class="checkbox"><span class="color" style="${l6({backgroundColor:f(h).toString()})}"></span> <input type="checkbox" .value="${h}"> ${h}</label></li>`)}</ul>`;function d(){He(D`${o}<div class="modal-body">${l}</div>${u()}`,i.content)}d(),i.content.querySelector(".gs-checkbox-list input[type='checkbox']").focus()}function p6(t,e){const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=Wr(),a=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,s=h=>{n(e.actions.filterByQuantitative({attribute:t.attribute,operator:r,operand:i})),o.close()},c=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>o.close()}">Cancel</button> <button class="btn-primary" ?disabled="${typeof i=="undefined"}" @click="${()=>s()}">${ne(fo).node[0]} Retain</button></div>`,u=h=>{r=h.target.value,d()},f=h=>{const p=h.target.value;i=p.length>0?+p:void 0,d()},l=D`<div class="gs-form-group"><label>Select samples where <em>${t.name}</em> is</label> <select .value="${r}" @change="${u}">${Object.entries(m6).map(([h,p])=>D`<option .value="${h}">${p}</option>`)}</select> <input type="number" placeholder="Please enter a numeric value" @input="${f}"></div>`;function d(){He(D`${a}<div class="modal-body">${l}</div>${c()}`,o.content)}d(),o.content.querySelector("select").focus()}const m6={lt:"less than",lte:"less than or equal to",eq:"equal to",gte:"greater than or equal to",gt:"greater than"};function g6(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=[{operand:void 0,operator:"lt"}],i=Wr(),o=D`<div class="modal-title">Group by threshold on <em>${t.name}</em></div>`,a=d=>{n(e.actions.groupByThresholds({attribute:t.attribute,thresholds:r})),i.close()},s=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn-primary" ?disabled="${!y6(r)}" @click="${()=>a()}">${ne(ho).node[0]} Group</button></div>`,c=d=>{const h=d.target.value;r[0].operator=h,l()},u=d=>{const h=d.target.value;r[0].operand=h.length>0?+h:void 0,l()},f=D`<div class="gs-form-group"><label>Split into 2 groups using the threshold:</label><div class="threshold-flex"><select .value="${r[0].operator}" @change="${c}"><option value="lt">${"<"}</option><option value="lte">${"\u2264"}</option></select> <input .value="${""+r[0].operand}" type="number" placeholder="Numeric value" @input="${u}"></div></div>`;function l(){He(D`${o}<div class="modal-body">${f}</div>${s()}`,i.content)}l(),i.content.querySelector("select").focus()}function y6(t){return t[0].operator&&typeof t[0].operand=="number"}function df(t,e,n,r){var l;const i=r.actions,o=e.attribute,a=r.provenance.storeHelper.getDispatcher(),s=[];t&&s.push({label:t,type:"header"});const c=d=>{const h=r.provenance.getActionInfo(d);return{label:h.title,icon:h.icon,callback:()=>a(d)}},u=(...d)=>s.push(...d.map(c));u(i.sortBy({attribute:o}));const f=(l=e==null?void 0:e.type)!=null?l:"identifier";return f!="quantitative"?(f!="identifier"&&u(i.groupByNominal({attribute:o}),i.retainFirstOfEach({attribute:o})),u(i.filterByNominal({attribute:o,values:[n]}),i.filterByNominal({attribute:o,remove:!0,values:[n]}))):(u(i.groupToQuartiles({attribute:o})),s.push({icon:ho,label:"Group by thresholds...",callback:()=>g6(e,r)}),v6(n)?u(i.filterByQuantitative({attribute:o,operator:"gte",operand:+n}),i.filterByQuantitative({attribute:o,operator:"lte",operand:+n})):u(i.removeUndefined({attribute:o}))),f!=="identifier"&&s.push({icon:fo,label:"Advanced filter...",callback:()=>d6(e,r)}),s}function v6(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function b6(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var yn={},rr={};Object.defineProperty(rr,"__esModule",{value:!0}),rr.ActionCreators=rr.ActionTypes=void 0;var ir={UNDO:"@@redux-undo/UNDO",REDO:"@@redux-undo/REDO",JUMP_TO_FUTURE:"@@redux-undo/JUMP_TO_FUTURE",JUMP_TO_PAST:"@@redux-undo/JUMP_TO_PAST",JUMP:"@@redux-undo/JUMP",CLEAR_HISTORY:"@@redux-undo/CLEAR_HISTORY"};rr.ActionTypes=ir;var A6={undo:function(){return{type:ir.UNDO}},redo:function(){return{type:ir.REDO}},jumpToFuture:function(e){return{type:ir.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:ir.JUMP_TO_PAST,index:e}},jump:function(e){return{type:ir.JUMP,index:e}},clearHistory:function(){return{type:ir.CLEAR_HISTORY}}};rr.ActionCreators=A6;var xt={};Object.defineProperty(xt,"__esModule",{value:!0}),xt.parseActions=xs,xt.isHistory=x6,xt.includeAction=w6,xt.excludeAction=C6,xt.combineFilters=S6,xt.groupByActionTypes=E6,xt.newHistory=D6;function xs(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function x6(t){return typeof t.present!="undefined"&&typeof t.future!="undefined"&&typeof t.past!="undefined"&&Array.isArray(t.future)&&Array.isArray(t.past)}function w6(t){var e=xs(t);return function(n){return e.indexOf(n.type)>=0}}function C6(t){var e=xs(t);return function(n){return e.indexOf(n.type)<0}}function S6(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.reduce(function(r,i){return function(o,a,s){return r(o,a,s)&&i(o,a,s)}},function(){return!0})}function E6(t){var e=xs(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function D6(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;return{past:t,present:e,future:n,group:r,_latestUnfiltered:e,index:t.length,limit:t.length+n.length+1}}var H1={},Xr={};Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.set=P6,Xr.start=L6,Xr.end=B6,Xr.log=O6;function wt(t){return I6(t)||T6(t)||M6()}function M6(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function T6(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function I6(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}var ws,et,hf={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function k6(){et={header:[],prev:[],action:[],next:[],msgs:[]}}function N6(){var t=et,e=t.header,n=t.prev,r=t.next,i=t.action,o=t.msgs;if(console.group){var a,s,c,u,f;(a=console).groupCollapsed.apply(a,wt(e)),(s=console).log.apply(s,wt(n)),(c=console).log.apply(c,wt(i)),(u=console).log.apply(u,wt(r)),(f=console).log.apply(f,wt(o)),console.groupEnd()}else{var l,d,h,p,m;(l=console).log.apply(l,wt(e)),(d=console).log.apply(d,wt(n)),(h=console).log.apply(h,wt(i)),(p=console).log.apply(p,wt(r)),(m=console).log.apply(m,wt(o))}}function pf(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function L6(t,e){k6(),ws&&(console.group?(et.header=["%credux-undo","font-style: italic","action",t.type],et.action=pf("action",hf.action,t),et.prev=pf("prev history",hf.prevState,e)):(et.header=["redux-undo action",t.type],et.action=["action",t],et.prev=["prev history",e]))}function B6(t){ws&&(console.group?et.next=pf("next history",hf.nextState,t):et.next=["next history",t],N6())}function O6(){if(ws){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];et.msgs=et.msgs.concat([].concat(e,[`
2139
+ `]))}}function P6(t){ws=t}(function(t){function e(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e=function(w){return typeof w}:e=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},e(b)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=C;var n=a(Xr),r=rr,i=xt;function o(){if(typeof WeakMap!="function")return null;var b=new WeakMap;return o=function(){return b},b}function a(b){if(b&&b.__esModule)return b;if(b===null||e(b)!=="object"&&typeof b!="function")return{default:b};var v=o();if(v&&v.has(b))return v.get(b);var w={},E=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var k in b)if(Object.prototype.hasOwnProperty.call(b,k)){var L=E?Object.getOwnPropertyDescriptor(b,k):null;L&&(L.get||L.set)?Object.defineProperty(w,k,L):w[k]=b[k]}return w.default=b,v&&v.set(b,w),w}function s(b,v){var w=Object.keys(b);if(Object.getOwnPropertySymbols){var E=Object.getOwnPropertySymbols(b);v&&(E=E.filter(function(k){return Object.getOwnPropertyDescriptor(b,k).enumerable})),w.push.apply(w,E)}return w}function c(b){for(var v=1;v<arguments.length;v++){var w=arguments[v]!=null?arguments[v]:{};v%2?s(Object(w),!0).forEach(function(E){u(b,E,w[E])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(w)):s(Object(w)).forEach(function(E){Object.defineProperty(b,E,Object.getOwnPropertyDescriptor(w,E))})}return b}function u(b,v,w){return v in b?Object.defineProperty(b,v,{value:w,enumerable:!0,configurable:!0,writable:!0}):b[v]=w,b}function f(b){return h(b)||d(b)||l()}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function d(b){if(Symbol.iterator in Object(b)||Object.prototype.toString.call(b)==="[object Arguments]")return Array.from(b)}function h(b){if(Array.isArray(b)){for(var v=0,w=new Array(b.length);v<b.length;v++)w[v]=b[v];return w}}function p(b,v){var w=(0,i.newHistory)([],b,[]);return v&&(w._latestUnfiltered=null),w}function m(b,v,w,E){var k=b.past.length+1;n.log("inserting",v),n.log("new free: ",w-k);var L=b.past,I=b._latestUnfiltered,P=w&&w<=k,Z=L.slice(P?1:0),Q=I!=null?[].concat(f(Z),[I]):Z;return(0,i.newHistory)(Q,v,[],E)}function g(b,v){if(v<0||v>=b.future.length)return b;var w=b.past,E=b.future,k=b._latestUnfiltered,L=[].concat(f(w),[k],f(E.slice(0,v))),I=E[v],P=E.slice(v+1);return(0,i.newHistory)(L,I,P)}function y(b,v){if(v<0||v>=b.past.length)return b;var w=b.past,E=b.future,k=b._latestUnfiltered,L=w.slice(0,v),I=[].concat(f(w.slice(v+1)),[k],f(E)),P=w[v];return(0,i.newHistory)(L,P,I)}function x(b,v){return v>0?g(b,v-1):v<0?y(b,b.past.length+v):b}function A(b,v){return v.indexOf(b)>-1?b:!b}function C(b){var v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.set(v.debug);var w=c({limit:void 0,filter:function(){return!0},groupBy:function(){return null},undoType:r.ActionTypes.UNDO,redoType:r.ActionTypes.REDO,jumpToPastType:r.ActionTypes.JUMP_TO_PAST,jumpToFutureType:r.ActionTypes.JUMP_TO_FUTURE,jumpType:r.ActionTypes.JUMP,neverSkipReducer:!1,ignoreInitialState:!1,syncFilter:!1},v,{initTypes:(0,i.parseActions)(v.initTypes,["@@redux-undo/INIT"]),clearHistoryType:(0,i.parseActions)(v.clearHistoryType,[r.ActionTypes.CLEAR_HISTORY])}),E=w.neverSkipReducer?function(L,I){for(var P=arguments.length,Z=new Array(P>2?P-2:0),Q=2;Q<P;Q++)Z[Q-2]=arguments[Q];return c({},L,{present:b.apply(void 0,[L.present,I].concat(Z))})}:function(L){return L},k;return function(){var L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:k,I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(I,L);for(var P=L,Z=arguments.length,Q=new Array(Z>2?Z-2:0),fe=2;fe<Z;fe++)Q[fe-2]=arguments[fe];if(!k)if(n.log("history is uninitialized"),L===void 0){var Se={type:"@@redux-undo/CREATE_HISTORY"},Cn=b.apply(void 0,[L,Se].concat(Q));return P=p(Cn,w.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(P),P}else(0,i.isHistory)(L)?(P=k=w.ignoreInitialState?L:(0,i.newHistory)(L.past,L.present,L.future),n.log("initialHistory initialized: initialState is a history",k)):(P=k=p(L,w.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",k));var W;switch(I.type){case void 0:return P;case w.undoType:return W=x(P,-1),n.log("perform undo"),n.end(W),E.apply(void 0,[W,I].concat(Q));case w.redoType:return W=x(P,1),n.log("perform redo"),n.end(W),E.apply(void 0,[W,I].concat(Q));case w.jumpToPastType:return W=y(P,I.index),n.log("perform jumpToPast to ".concat(I.index)),n.end(W),E.apply(void 0,[W,I].concat(Q));case w.jumpToFutureType:return W=g(P,I.index),n.log("perform jumpToFuture to ".concat(I.index)),n.end(W),E.apply(void 0,[W,I].concat(Q));case w.jumpType:return W=x(P,I.index),n.log("perform jump to ".concat(I.index)),n.end(W),E.apply(void 0,[W,I].concat(Q));case A(I.type,w.clearHistoryType):return W=p(P.present,w.ignoreInitialState),n.log("perform clearHistory"),n.end(W),E.apply(void 0,[W,I].concat(Q));default:if(W=b.apply(void 0,[P.present,I].concat(Q)),w.initTypes.some(function(ed){return ed===I.type}))return n.log("reset history due to init action"),n.end(k),k;if(P._latestUnfiltered===W)return P;var Ye=typeof w.filter=="function"&&!w.filter(I,W,P);if(Ye){var Ro=(0,i.newHistory)(P.past,W,P.future,P.group);return w.syncFilter||(Ro._latestUnfiltered=P._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(Ro),Ro}var jo=w.groupBy(I,W,P);if(jo!=null&&jo===P.group){var Ys=(0,i.newHistory)(P.past,W,P.future,P.group);return n.log("groupBy grouped the action with the previous action"),n.end(Ys),Ys}return P=m(P,W,w.limit,jo),n.log("inserted new state into history"),n.end(P),P}}}})(H1),function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ActionTypes",{enumerable:!0,get:function(){return e.ActionTypes}}),Object.defineProperty(t,"ActionCreators",{enumerable:!0,get:function(){return e.ActionCreators}}),Object.defineProperty(t,"parseActions",{enumerable:!0,get:function(){return n.parseActions}}),Object.defineProperty(t,"isHistory",{enumerable:!0,get:function(){return n.isHistory}}),Object.defineProperty(t,"includeAction",{enumerable:!0,get:function(){return n.includeAction}}),Object.defineProperty(t,"excludeAction",{enumerable:!0,get:function(){return n.excludeAction}}),Object.defineProperty(t,"combineFilters",{enumerable:!0,get:function(){return n.combineFilters}}),Object.defineProperty(t,"groupByActionTypes",{enumerable:!0,get:function(){return n.groupByActionTypes}}),Object.defineProperty(t,"newHistory",{enumerable:!0,get:function(){return n.newHistory}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.default}});var e=rr,n=xt,r=i(H1);function i(o){return o&&o.__esModule?o:{default:o}}}(yn);var F6=b6(yn);function mf(t){return t.split("-")[0]}function Q1(t){return t.split("-")[1]}function V1(t){return["top","bottom"].includes(mf(t))?"x":"y"}function Y1(t){return t==="y"?"height":"width"}function _1(t,e,n){let{reference:r,floating:i}=t;const o=r.x+r.width/2-i.width/2,a=r.y+r.height/2-i.height/2,s=V1(e),c=Y1(s),u=r[c]/2-i[c]/2,f=mf(e),l=s==="x";let d;switch(f){case"top":d={x:o,y:r.y-i.height};break;case"bottom":d={x:o,y:r.y+r.height};break;case"right":d={x:r.x+r.width,y:a};break;case"left":d={x:r.x-i.width,y:a};break;default:d={x:r.x,y:r.y}}switch(Q1(e)){case"start":d[s]-=u*(n&&l?-1:1);break;case"end":d[s]+=u*(n&&l?-1:1);break}return d}const z6=async(t,e,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:a}=n,s=await(a.isRTL==null?void 0:a.isRTL(e));let c=await a.getElementRects({reference:t,floating:e,strategy:i}),{x:u,y:f}=_1(c,r,s),l=r,d={};for(let h=0;h<o.length;h++){const{name:p,fn:m}=o[h],{x:g,y,data:x,reset:A}=await m({x:u,y:f,initialPlacement:r,placement:l,strategy:i,middlewareData:d,rects:c,platform:a,elements:{reference:t,floating:e}});if(u=g!=null?g:u,f=y!=null?y:f,d=U(T({},d),{[p]:T(T({},d[p]),x)}),A){typeof A=="object"&&(A.placement&&(l=A.placement),A.rects&&(c=A.rects===!0?await a.getElementRects({reference:t,floating:e,strategy:i}):A.rects),{x:u,y:f}=_1(c,l,s)),h=-1;continue}}return{x:u,y:f,placement:l,strategy:i,middlewareData:d}};function R6(t){return T({top:0,right:0,bottom:0,left:0},t)}function j6(t){return typeof t!="number"?R6(t):{top:t,right:t,bottom:t,left:t}}function Cs(t){return U(T({},t),{top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height})}async function U6(t,e){var n;e===void 0&&(e={});const{x:r,y:i,platform:o,rects:a,elements:s,strategy:c}=t,{boundary:u="clippingAncestors",rootBoundary:f="viewport",elementContext:l="floating",altBoundary:d=!1,padding:h=0}=e,p=j6(h),g=s[d?l==="floating"?"reference":"floating":l],y=Cs(await o.getClippingRect({element:(n=await(o.isElement==null?void 0:o.isElement(g)))==null||n?g:g.contextElement||await(o.getDocumentElement==null?void 0:o.getDocumentElement(s.floating)),boundary:u,rootBoundary:f,strategy:c})),x=Cs(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({rect:l==="floating"?U(T({},a.floating),{x:r,y:i}):a.reference,offsetParent:await(o.getOffsetParent==null?void 0:o.getOffsetParent(s.floating)),strategy:c}):a[l]);return{top:y.top-x.top+p.top,bottom:x.bottom-y.bottom+p.bottom,left:y.left-x.left+p.left,right:x.right-y.right+p.right}}const G6={left:"right",right:"left",bottom:"top",top:"bottom"};function Ss(t){return t.replace(/left|right|bottom|top/g,e=>G6[e])}function H6(t,e,n){n===void 0&&(n=!1);const r=Q1(t),i=V1(t),o=Y1(i);let a=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return e.reference[o]>e.floating[o]&&(a=Ss(a)),{main:a,cross:Ss(a)}}const Q6={start:"end",end:"start"};function W1(t){return t.replace(/start|end/g,e=>Q6[e])}function V6(t){const e=Ss(t);return[W1(t),e,W1(e)]}const Y6=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var n;const{placement:r,middlewareData:i,rects:o,initialPlacement:a,platform:s,elements:c}=e,k=t,{mainAxis:u=!0,crossAxis:f=!0,fallbackPlacements:l,fallbackStrategy:d="bestFit",flipAlignment:h=!0}=k,p=O2(k,["mainAxis","crossAxis","fallbackPlacements","fallbackStrategy","flipAlignment"]),m=mf(r),y=l||(m===a||!h?[Ss(a)]:V6(a)),x=[a,...y],A=await U6(e,p),C=[];let b=((n=i.flip)==null?void 0:n.overflows)||[];if(u&&C.push(A[m]),f){const{main:L,cross:I}=H6(r,o,await(s.isRTL==null?void 0:s.isRTL(c.floating)));C.push(A[L],A[I])}if(b=[...b,{placement:r,overflows:C}],!C.every(L=>L<=0)){var v,w;const L=((v=(w=i.flip)==null?void 0:w.index)!=null?v:0)+1,I=x[L];if(I)return{data:{index:L,overflows:b},reset:{placement:I}};let P="bottom";switch(d){case"bestFit":{var E;const Z=(E=b.map(Q=>[Q,Q.overflows.filter(fe=>fe>0).reduce((fe,Se)=>fe+Se,0)]).sort((Q,fe)=>Q[1]-fe[1])[0])==null?void 0:E[0].placement;Z&&(P=Z);break}case"initialPlacement":P=a;break}if(r!==P)return{reset:{placement:P}}}return{}}}};function X1(t){return t&&t.document&&t.location&&t.alert&&t.setInterval}function Ht(t){if(t==null)return window;if(!X1(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function bo(t){return Ht(t).getComputedStyle(t)}function Qt(t){return X1(t)?"":t?(t.nodeName||"").toLowerCase():""}function Z1(){const t=navigator.userAgentData;return t!=null&&t.brands?t.brands.map(e=>e.brand+"/"+e.version).join(" "):navigator.userAgent}function Ct(t){return t instanceof Ht(t).HTMLElement}function Zr(t){return t instanceof Ht(t).Element}function _6(t){return t instanceof Ht(t).Node}function gf(t){if(typeof ShadowRoot=="undefined")return!1;const e=Ht(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Es(t){const{overflow:e,overflowX:n,overflowY:r}=bo(t);return/auto|scroll|overlay|hidden/.test(e+r+n)}function W6(t){return["table","td","th"].includes(Qt(t))}function q1(t){const e=/firefox/i.test(Z1()),n=bo(t);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||e&&n.willChange==="filter"||e&&(n.filter?n.filter!=="none":!1)}function K1(){return!/^((?!chrome|android).)*safari/i.test(Z1())}const J1=Math.min,Ao=Math.max,Ds=Math.round;function or(t,e,n){var r,i,o,a;e===void 0&&(e=!1),n===void 0&&(n=!1);const s=t.getBoundingClientRect();let c=1,u=1;e&&Ct(t)&&(c=t.offsetWidth>0&&Ds(s.width)/t.offsetWidth||1,u=t.offsetHeight>0&&Ds(s.height)/t.offsetHeight||1);const f=Zr(t)?Ht(t):window,l=!K1()&&n,d=(s.left+(l&&(r=(i=f.visualViewport)==null?void 0:i.offsetLeft)!=null?r:0))/c,h=(s.top+(l&&(o=(a=f.visualViewport)==null?void 0:a.offsetTop)!=null?o:0))/u,p=s.width/c,m=s.height/u;return{width:p,height:m,top:h,right:d+p,bottom:h+m,left:d,x:d,y:h}}function vn(t){return((_6(t)?t.ownerDocument:t.document)||window.document).documentElement}function Ms(t){return Zr(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function $1(t){return or(vn(t)).left+Ms(t).scrollLeft}function X6(t){const e=or(t);return Ds(e.width)!==t.offsetWidth||Ds(e.height)!==t.offsetHeight}function Z6(t,e,n){const r=Ct(e),i=vn(e),o=or(t,r&&X6(e),n==="fixed");let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if(r||!r&&n!=="fixed")if((Qt(e)!=="body"||Es(i))&&(a=Ms(e)),Ct(e)){const c=or(e,!0);s.x=c.x+e.clientLeft,s.y=c.y+e.clientTop}else i&&(s.x=$1(i));return{x:o.left+a.scrollLeft-s.x,y:o.top+a.scrollTop-s.y,width:o.width,height:o.height}}function ey(t){return Qt(t)==="html"?t:t.assignedSlot||t.parentNode||(gf(t)?t.host:null)||vn(t)}function ty(t){return!Ct(t)||getComputedStyle(t).position==="fixed"?null:t.offsetParent}function q6(t){let e=ey(t);for(gf(e)&&(e=e.host);Ct(e)&&!["html","body"].includes(Qt(e));){if(q1(e))return e;e=e.parentNode}return null}function yf(t){const e=Ht(t);let n=ty(t);for(;n&&W6(n)&&getComputedStyle(n).position==="static";)n=ty(n);return n&&(Qt(n)==="html"||Qt(n)==="body"&&getComputedStyle(n).position==="static"&&!q1(n))?e:n||q6(t)||e}function ny(t){if(Ct(t))return{width:t.offsetWidth,height:t.offsetHeight};const e=or(t);return{width:e.width,height:e.height}}function K6(t){let{rect:e,offsetParent:n,strategy:r}=t;const i=Ct(n),o=vn(n);if(n===o)return e;let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if((i||!i&&r!=="fixed")&&((Qt(n)!=="body"||Es(o))&&(a=Ms(n)),Ct(n))){const c=or(n,!0);s.x=c.x+n.clientLeft,s.y=c.y+n.clientTop}return U(T({},e),{x:e.x-a.scrollLeft+s.x,y:e.y-a.scrollTop+s.y})}function J6(t,e){const n=Ht(t),r=vn(t),i=n.visualViewport;let o=r.clientWidth,a=r.clientHeight,s=0,c=0;if(i){o=i.width,a=i.height;const u=K1();(u||!u&&e==="fixed")&&(s=i.offsetLeft,c=i.offsetTop)}return{width:o,height:a,x:s,y:c}}function $6(t){var e;const n=vn(t),r=Ms(t),i=(e=t.ownerDocument)==null?void 0:e.body,o=Ao(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=Ao(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0);let s=-r.scrollLeft+$1(t);const c=-r.scrollTop;return bo(i||n).direction==="rtl"&&(s+=Ao(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:c}}function ry(t){const e=ey(t);return["html","body","#document"].includes(Qt(e))?t.ownerDocument.body:Ct(e)&&Es(e)?e:ry(e)}function iy(t,e){var n;e===void 0&&(e=[]);const r=ry(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),o=Ht(r),a=i?[o].concat(o.visualViewport||[],Es(r)?r:[]):r,s=e.concat(a);return i?s:s.concat(iy(a))}function eI(t,e){const n=e==null||e.getRootNode==null?void 0:e.getRootNode();if(t!=null&&t.contains(e))return!0;if(n&&gf(n)){let r=e;do{if(r&&t===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function tI(t,e){const n=or(t,!1,e==="fixed"),r=n.top+t.clientTop,i=n.left+t.clientLeft;return{top:r,left:i,x:i,y:r,right:i+t.clientWidth,bottom:r+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}function oy(t,e,n){return e==="viewport"?Cs(J6(t,n)):Zr(e)?tI(e,n):Cs($6(vn(t)))}function nI(t){const e=iy(t),r=["absolute","fixed"].includes(bo(t).position)&&Ct(t)?yf(t):t;return Zr(r)?e.filter(i=>Zr(i)&&eI(i,r)&&Qt(i)!=="body"):[]}function rI(t){let{element:e,boundary:n,rootBoundary:r,strategy:i}=t;const a=[...n==="clippingAncestors"?nI(e):[].concat(n),r],s=a[0],c=a.reduce((u,f)=>{const l=oy(e,f,i);return u.top=Ao(l.top,u.top),u.right=J1(l.right,u.right),u.bottom=J1(l.bottom,u.bottom),u.left=Ao(l.left,u.left),u},oy(e,s,i));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}}const iI={getClippingRect:rI,convertOffsetParentRelativeRectToViewportRelativeRect:K6,isElement:Zr,getDimensions:ny,getOffsetParent:yf,getDocumentElement:vn,getElementRects:t=>{let{reference:e,floating:n,strategy:r}=t;return{reference:Z6(e,yf(n),r),floating:U(T({},ny(n)),{x:0,y:0})}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>bo(t).direction==="rtl"},oI=(t,e,n)=>z6(t,e,T({platform:iI},n));let St;const xo=[],vf=ss(t=>t(),150,!1);function wo(t){if((t==null?void 0:t.type)=="contextmenu"){t.preventDefault();return}St&&(St.remove(),St=void 0,document.body.classList.remove(Un))}function ay(t){var e;if(!(t<1)){for(let n=t;n<xo.length;n++)(e=xo[n])==null||e.remove(),xo[n]=void 0;for(const n of xo[t-1].querySelectorAll("li.active"))n.classList.remove("active")}}const aI=()=>D`<li class="menu-divider"></li>`,sI=t=>D`<li class="menu-header">${t.label||"-"}</li>`,cI=(t,e)=>D`<li><a class="submenu-item" @click="${n=>n.stopPropagation()}" @mouseup="${n=>n.stopPropagation()}" @mouseenter="${n=>vf(()=>{const r=n.target.closest("li");fI(t.submenu,r,e+1),n.stopPropagation()})}" @mouseleave="${()=>vf(()=>ay(e+1))}"><span>${t.label}</span></a></li>`,uI=t=>D`<li><a @mouseup="${()=>{wo(),t.callback()}}">${t.icon?ne(t.icon).node[0]:""} ${t.label}</a> ${t.ellipsisCallback?D`<a class="menu-ellipsis" @click="${t.ellipsisCallback}">${ne(y5).node[0]}</a>`:G}</li>`,lI=t=>D`<li><span class="disabled-item">${t.icon?ne(t.icon).node[0]:""} ${t.label||"-"}</span></li>`;function sy(t,e=1){switch(t.type){case"divider":return aI();case"header":return sI(t);default:return t.submenu?cI(t,e):t.callback?uI(t):lI(t)}}function fI(t,e,n){cy(t,e,n,"right-start"),e.classList.add("active")}function cy(t,e,n,r){const i=document.createElement("ul");i.classList.add("gs-context-menu"),i.addEventListener("mouseenter",()=>{vf(()=>{})}),He(t.map(o=>sy(o,n)),i),St.appendChild(i),ay(n),xo[n]=i,oI(e,i,{placement:r!=null?r:"right-start",middleware:[Y6()]}).then(({x:o,y:a})=>{const s=i.querySelector(":scope > li");s&&(a-=s.getBoundingClientRect().top),i.style.left=`${o}px`,i.style.top=`${a}px`})}function uy(t,e,n){n!=null||(n="bottom-start"),wo();const r=performance.now(),i=document.body;St=document.createElement("div"),St.classList.add("gs-context-menu-backdrop"),St.addEventListener("click",wo),St.addEventListener("contextmenu",wo),St.addEventListener("mouseup",()=>{performance.now()-r>500&&wo()},{once:!0}),i.appendChild(St),document.body.classList.add(Un),cy(t.items,e,0,n)}function ly(t,e){uy(t,dI(e),"right-start"),e.preventDefault()}function dI(t){return{getBoundingClientRect(){return{width:0,height:0,x:t.clientX,y:t.clientY,top:t.clientY,left:t.clientX,right:t.clientX,bottom:t.clientY,toJSON:void 0}}}}const bf={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},Ts="SAMPLE_ATTRIBUTE",fy="SAMPLE_NAME",hI=/^attribute-(.*)$/;class dy extends jr{constructor(e){super({title:"Sample metadata",data:{dynamicSource:!0},hconcat:[],spacing:1,resolve:{scale:{default:"independent"},axis:{default:"independent"}}},e.context,void 0,"sample-metadata"),this.sampleView=e,this._attributeHighlighState={backgroundOpacity:1,currentAttribute:void 0,abortController:new AbortController},this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(Ts,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(fy,n=>hy),this.addInteractionEventListener("contextmenu",this.handleContextMenu.bind(this)),this.addInteractionEventListener("mousemove",(n,r)=>{var s;const i=r.target,o=this._findSampleForMouseEvent(n,r),a=i&&((s=this.getAttributeInfoFromView(i))==null?void 0:s.name)||void 0;if(o){const c=JSON.stringify([o.id,a]);this.context.updateTooltip(c,u=>Promise.resolve(this.sampleToTooltip(u)))}this._handleAttributeHighlight(a)}),ze([...this.sampleView.getAncestors()]).addInteractionEventListener("mousemove",(n,r)=>{if(!!this._attributeHighlighState.currentAttribute){if(r.target){for(const i of r.target.getAncestors())if(i==this)return}this._handleAttributeHighlight(void 0)}})}getEncoding(){return{}}render(e,n,r={}){!this.isVisible()||super.render(e,n,U(T({},r),{clipRect:this.sampleView._clipBySummary(n)}))}_handleAttributeHighlight(e){const n=this._attributeHighlighState;e!=n.currentAttribute&&(n.abortController.abort(),n.abortController=new AbortController,this.context.animator.transition(T({from:n.backgroundOpacity,onUpdate:r=>{n.backgroundOpacity=r},easingFunction:Zm,signal:n.abortController.signal},e?{to:.1,duration:1e3,delay:n.backgroundOpacity<1?0:500}:{to:1,duration:200,delay:150})).catch(r=>{}),this.context.animator.requestRender()),n.currentAttribute=e}getSample(e){var n;return(n=this.sampleView.sampleHierarchy.sampleData)==null?void 0:n.entities[e]}_findSampleForMouseEvent(e,n){return this.sampleView.getSampleAt(n.point.y-this.sampleView.childCoords.y)}_getAttributeOpacity(e){const n=this._attributeHighlighState;return e==n.currentAttribute?1:n.backgroundOpacity}handleContextMenu(e,n){const r=n.uiEvent,i=this._findSampleForMouseEvent(e,n);if(!i){r.preventDefault();return}const o=[],a=this.getAttributeInfoFromView(n.target);if(a){const s=i.attributes[a.name];o.push(...df(D`Attribute: <strong>${a.name}</strong>`,a,s,this.sampleView))}else o.push(...df(D`Sample: <strong>${i.displayName}</strong>`,hy,i.id,this.sampleView));ly({items:o},r)}_setSamples(e){if(this.childCount)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;wg(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof Ae){const a=o.mark;a.initializeEncoders(),i.push(a.initializeGraphics().then(s=>a)),n.addObserver(s=>{a.initializeData(),a.updateGraphicsData()},o)}}),Promise.allSettled(i).then(o=>{for(const a of o)"value"in a?a.value.finalizeGraphicsInitialization():"reason"in a&&console.error(a.reason)}),r.publishData(e),this.visit(o=>{o.name.startsWith("title")&&n.findDataSourceByKey(o).load()})}_createViews(){const e=[];e.push(this.context.createView(mI(),this));for(const n of this._getAttributeNames()){const r=this.context.createView(this._createAttributeViewSpec(n),this);r.opacityFunction=i=>i*this._getAttributeOpacity(n),e.push(r)}this.setChildren(e),Sg(this)}_getAttributeDef(e){var n,r;return(r=(n=this.sampleView.spec.samples)==null?void 0:n.attributes)==null?void 0:r[e]}_getAttributeNames(){return this._cache("attributeNames",()=>[...this.sampleView.getSamples().flatMap(r=>Object.keys(r.attributes)).reduce((r,i)=>r.add(i),new Set)])}_createAttributeViewSpec(e){const n=this._getAttributeDef(e);let r=n?n.type:void 0;if(!r){const i=this.sampleView.getSamples();switch(ih(i.map(o=>o.attributes[e]))){case"integer":case"number":r=bf.QUANTITATIVE;break;default:r=bf.NOMINAL}}return pI(e,U(T({},n||{}),{type:r}))}_findViewForAttribute(e){return this.children[this._getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e==null?void 0:e.name.match(hI);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:Ts,specifier:i},accessor:(o,a)=>a.sampleData.entities[o].attributes[i],type:r.type,scale:r.getScale(),title:D`<em class="attribute">${i}</em>`}}}getAttributeInfo(e){return this.getAttributeInfoFromView(this._findViewForAttribute(e))}sampleToTooltip(e){const[n,r]=JSON.parse(e),i=this.getSample(n),o=(s,c)=>gI(c)?this.getAttributeInfo(s).scale(c):"transparent",a=D`<table class="attributes">${Object.entries(i.attributes).map(([s,c])=>D`<tr class="${J8({hovered:s==r})}"><th>${s}</th><td>${Ng(c)}</td><td class="color" .style="background-color: ${o(s,c)}"></td></tr>`)}</table>`;return D`<div class="title"><strong>${i.displayName||i.id}</strong></div>${a}`}getDefaultResolution(e,n){return"independent"}handleVerboseCommand(e){const n=e;for(const r of this._getAttributeNames()){const i=this.getAttributeInfo(r);if((i.type==yl||i.type==vl)&&this.sampleView.getSamples().find(a=>a.attributes[i.name]==n)){const a=this.sampleView.actions.filterByNominal({attribute:{type:Ts,specifier:r},values:[n]}),s=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(s)&&!s.payload.remove&&s.payload.attribute.type==Ts&&s.payload.attribute.specifier==r&&s.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[yn.ActionCreators.undo(),a]:a),!0}}return!1}isPickingSupported(){return!1}}function pI(t,e){var i,o;const n=`attributes["${t}"]`,r={name:`attribute-${t}`,title:{text:t,orient:"bottom",align:"right",baseline:"middle",offset:5,angle:-90,dy:-.5,fontSize:11},visible:(i=e.visible)!=null?i:!0,width:(o=e.width)!=null?o:10,transform:[{type:"filter",expr:`datum.${n} != null`}],mark:{type:"rect",xOffset:-.5},encoding:{facetIndex:{field:"indexNumber"},color:{field:n,type:e.type,scale:e.scale}},opacity:1};return e.barScale&&e.type==bf.QUANTITATIVE&&(r.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale,axis:null}),r}function mI(){return{name:"metadata-sample-name",title:{text:"Sample name",orient:"bottom",anchor:"start",offset:5,fontSize:11},width:140,mark:{type:"text",align:"left",baseline:"middle",size:11,flushY:!1},encoding:{facetIndex:{field:"indexNumber"},x:{value:0},x2:{value:1},y:{value:0},y2:{value:1},text:{field:"displayName"}}}}function gI(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const hy=Object.freeze({name:"sample",attribute:{type:fy},accessor:t=>t,type:"identifier",scale:void 0});class yI extends Ot{constructor(e){super({title:{text:"Groups",orient:"none"},width:{step:22},data:{dynamicSource:!0},transform:[{type:"filter",expr:"datum._depth > 0"},{type:"formula",as:"_y1",expr:"datum._index * 2"},{type:"formula",as:"_y2",expr:"datum._index * 2 + 1"},{type:"formula",as:"_NA",expr:"datum.label == null"},{type:"formula",as:"label",expr:"datum.label != null ? datum.label: 'NA'"}],encoding:{x:{field:"_depth",type:"ordinal",scale:{align:0,padding:.2272727},axis:null},y:{field:"_y1",type:"nominal",scale:{type:"ordinal",domain:_t(500)},axis:null},y2:{field:"_y2"}},layer:[{title:"Group",mark:{type:"rect",clip:!0,dynamicData:!0,color:"#e8e8e8"}},{mark:{type:"text",clip:!0,dynamicData:!0,angle:-90,paddingY:5,tooltip:null},encoding:{text:{field:"label"},opacity:{field:"_NA",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[1,.3]}}}}]},e.context,void 0,"sample-groups"),this.sampleView=e,this._addBroadcastHandler("layoutComputed",()=>{this.updateRange()})}updateRange(){var o,a,s;const e=(o=this.sampleView.getLocations())==null?void 0:o.groups;if(!(e!=null&&e.length))return;const n=(s=(a=this.sampleView)==null?void 0:a.childCoords.height)!=null?s:0,r=this.getScaleResolution("y"),i=[];for(const c of e)i.push(1-(c.locSize.location+c.locSize.size)/n),i.push(1-c.locSize.location/n);r.getScale().range(i),this.context.glHelper.createRangeTexture(r,!0)}updateGroups(){var i,o;const e=(o=(i=this.sampleView.getLocations())==null?void 0:i.groups)!=null?o:[],n=this.context.dataFlow.findDataSourceByKey(this);if(!n)return;const r=e.map(a=>({_index:a.key.index,_name:a.key.group.name,_depth:a.key.depth,attribute:a.key.attributeLabel,label:a.key.group.label,n:a.key.n}));n.publishData(r),this.getScaleResolution("x").reconfigure(),this.getScaleResolution("y").reconfigure(),e.length&&this.updateRange(),ze([...this.getAncestors()]).visit(a=>no(a,"size"))}}function dt(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];throw Error("[Immer] minified error nr: "+t+(n.length?" "+n.map(function(i){return"'"+i+"'"}).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function bn(t){return!!t&&!!t[ae]}function An(t){return!!t&&(function(e){if(!e||typeof e!="object")return!1;var n=Object.getPrototypeOf(e);if(n===null)return!0;var r=Object.hasOwnProperty.call(n,"constructor")&&n.constructor;return r===Object||typeof r=="function"&&Function.toString.call(r)===DI}(t)||Array.isArray(t)||!!t[Cy]||!!t.constructor[Cy]||Af(t)||xf(t))}function ar(t,e,n){n===void 0&&(n=!1),qr(t)===0?(n?Object.keys:Jr)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function qr(t){var e=t[ae];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:Af(t)?2:xf(t)?3:0}function Kr(t,e){return qr(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function vI(t,e){return qr(t)===2?t.get(e):t[e]}function py(t,e,n){var r=qr(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function my(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function Af(t){return SI&&t instanceof Map}function xf(t){return EI&&t instanceof Set}function sr(t){return t.o||t.t}function wf(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=Sy(t);delete e[ae];for(var n=Jr(e),r=0;r<n.length;r++){var i=n[r],o=e[i];o.writable===!1&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(e[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:t[i]})}return Object.create(Object.getPrototypeOf(t),e)}function Cf(t,e){return e===void 0&&(e=!1),Sf(t)||bn(t)||!An(t)||(qr(t)>1&&(t.set=t.add=t.clear=t.delete=bI),Object.freeze(t),e&&ar(t,function(n,r){return Cf(r,!0)},!0)),t}function bI(){dt(2)}function Sf(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function Et(t){var e=Bf[t];return e||dt(18,t),e}function AI(t,e){Bf[t]||(Bf[t]=e)}function Ef(){return Co}function Df(t,e){e&&(Et("Patches"),t.u=[],t.s=[],t.v=e)}function Is(t){Mf(t),t.p.forEach(xI),t.p=null}function Mf(t){t===Co&&(Co=t.l)}function gy(t){return Co={p:[],l:Co,h:t,m:!0,_:0}}function xI(t){var e=t[ae];e.i===0||e.i===1?e.j():e.O=!0}function Tf(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||Et("ES5").S(e,t,r),r?(n[ae].P&&(Is(e),dt(4)),An(t)&&(t=ks(e,t),e.l||Ns(e,t)),e.u&&Et("Patches").M(n[ae].t,t,e.u,e.s)):t=ks(e,n,[]),Is(e),e.u&&e.v(e.u,e.s),t!==wy?t:void 0}function ks(t,e,n){if(Sf(e))return e;var r=e[ae];if(!r)return ar(e,function(o,a){return yy(t,r,e,o,a,n)},!0),e;if(r.A!==t)return e;if(!r.P)return Ns(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=wf(r.k):r.o;ar(r.i===3?new Set(i):i,function(o,a){return yy(t,r,i,o,a,n)}),Ns(t,i,!1),n&&t.u&&Et("Patches").R(r,n,t.u,t.s)}return r.o}function yy(t,e,n,r,i,o){if(bn(i)){var a=ks(t,i,o&&e&&e.i!==3&&!Kr(e.D,r)?o.concat(r):void 0);if(py(n,r,a),!bn(a))return;t.m=!1}if(An(i)&&!Sf(i)){if(!t.h.F&&t._<1)return;ks(t,i),e&&e.A.l||Ns(t,i)}}function Ns(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&Cf(e,n)}function If(t,e){var n=t[ae];return(n?sr(n):t)[e]}function vy(t,e){if(e in t)for(var n=Object.getPrototypeOf(t);n;){var r=Object.getOwnPropertyDescriptor(n,e);if(r)return r;n=Object.getPrototypeOf(n)}}function xn(t){t.P||(t.P=!0,t.l&&xn(t.l))}function kf(t){t.o||(t.o=wf(t.t))}function Nf(t,e,n){var r=Af(e)?Et("MapSet").N(e,n):xf(e)?Et("MapSet").T(e,n):t.g?function(i,o){var a=Array.isArray(i),s={i:a?1:0,A:o?o.A:Ef(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=s,u=So;a&&(c=[s],u=Eo);var f=Proxy.revocable(c,u),l=f.revoke,d=f.proxy;return s.k=d,s.j=l,d}(e,n):Et("ES5").J(e,n);return(n?n.A:Ef()).p.push(r),r}function wI(t){return bn(t)||dt(22,t),function e(n){if(!An(n))return n;var r,i=n[ae],o=qr(n);if(i){if(!i.P&&(i.i<4||!Et("ES5").K(i)))return i.t;i.I=!0,r=by(n,o),i.I=!1}else r=by(n,o);return ar(r,function(a,s){i&&vI(i.t,a)===s||py(r,a,e(s))}),o===3?new Set(r):r}(t)}function by(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return wf(t)}function CI(){function t(o,a){var s=i[o];return s?s.enumerable=a:i[o]=s={configurable:!0,enumerable:a,get:function(){var c=this[ae];return So.get(c,o)},set:function(c){var u=this[ae];So.set(u,o,c)}},s}function e(o){for(var a=o.length-1;a>=0;a--){var s=o[a][ae];if(!s.P)switch(s.i){case 5:r(s)&&xn(s);break;case 4:n(s)&&xn(s)}}}function n(o){for(var a=o.t,s=o.k,c=Jr(s),u=c.length-1;u>=0;u--){var f=c[u];if(f!==ae){var l=a[f];if(l===void 0&&!Kr(a,f))return!0;var d=s[f],h=d&&d[ae];if(h?h.t!==l:!my(d,l))return!0}}var p=!!a[ae];return c.length!==Jr(a).length+(p?0:1)}function r(o){var a=o.k;if(a.length!==o.t.length)return!0;var s=Object.getOwnPropertyDescriptor(a,a.length-1);if(s&&!s.get)return!0;for(var c=0;c<a.length;c++)if(!a.hasOwnProperty(c))return!0;return!1}var i={};AI("ES5",{J:function(o,a){var s=Array.isArray(o),c=function(f,l){if(f){for(var d=Array(l.length),h=0;h<l.length;h++)Object.defineProperty(d,""+h,t(h,!0));return d}var p=Sy(l);delete p[ae];for(var m=Jr(p),g=0;g<m.length;g++){var y=m[g];p[y]=t(y,f||!!p[y].enumerable)}return Object.create(Object.getPrototypeOf(l),p)}(s,o),u={i:s?5:4,A:a?a.A:Ef(),P:!1,I:!1,D:{},l:a,t:o,k:c,o:null,O:!1,C:!1};return Object.defineProperty(c,ae,{value:u,writable:!0}),c},S:function(o,a,s){s?bn(a)&&a[ae].A===o&&e(o.p):(o.u&&function c(u){if(u&&typeof u=="object"){var f=u[ae];if(f){var l=f.t,d=f.k,h=f.D,p=f.i;if(p===4)ar(d,function(A){A!==ae&&(l[A]!==void 0||Kr(l,A)?h[A]||c(d[A]):(h[A]=!0,xn(f)))}),ar(l,function(A){d[A]!==void 0||Kr(d,A)||(h[A]=!1,xn(f))});else if(p===5){if(r(f)&&(xn(f),h.length=!0),d.length<l.length)for(var m=d.length;m<l.length;m++)h[m]=!1;else for(var g=l.length;g<d.length;g++)h[g]=!0;for(var y=Math.min(d.length,l.length),x=0;x<y;x++)d.hasOwnProperty(x)||(h[x]=!0),h[x]===void 0&&c(d[x])}}}}(o.p[0]),e(o.p))},K:function(o){return o.i===4?n(o):r(o)}})}var Ay,Co,Lf=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",SI=typeof Map!="undefined",EI=typeof Set!="undefined",xy=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",wy=Lf?Symbol.for("immer-nothing"):((Ay={})["immer-nothing"]=!0,Ay),Cy=Lf?Symbol.for("immer-draftable"):"__$immer_draftable",ae=Lf?Symbol.for("immer-state"):"__$immer_state",DI=""+Object.prototype.constructor,Jr=typeof Reflect!="undefined"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,Sy=Object.getOwnPropertyDescriptors||function(t){var e={};return Jr(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},Bf={},So={get:function(t,e){if(e===ae)return t;var n=sr(t);if(!Kr(n,e))return function(i,o,a){var s,c=vy(o,a);return c?"value"in c?c.value:(s=c.get)===null||s===void 0?void 0:s.call(i.k):void 0}(t,n,e);var r=n[e];return t.I||!An(r)?r:r===If(t.t,e)?(kf(t),t.o[e]=Nf(t.A.h,r,t)):r},has:function(t,e){return e in sr(t)},ownKeys:function(t){return Reflect.ownKeys(sr(t))},set:function(t,e,n){var r=vy(sr(t),e);if(r!=null&&r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=If(sr(t),e),o=i==null?void 0:i[ae];if(o&&o.t===n)return t.o[e]=n,t.D[e]=!1,!0;if(my(n,i)&&(n!==void 0||Kr(t.t,e)))return!0;kf(t),xn(t)}return t.o[e]===n&&typeof n!="number"&&(n!==void 0||e in t.o)||(t.o[e]=n,t.D[e]=!0,!0)},deleteProperty:function(t,e){return If(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,kf(t),xn(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=sr(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.i!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},defineProperty:function(){dt(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){dt(12)}},Eo={};ar(So,function(t,e){Eo[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),Eo.deleteProperty=function(t,e){return Eo.set.call(this,t,e,void 0)},Eo.set=function(t,e,n){return So.set.call(this,t[0],e,n,t[0])};var MI=function(){function t(n){var r=this;this.g=xy,this.F=!0,this.produce=function(i,o,a){if(typeof i=="function"&&typeof o!="function"){var s=o;o=i;var c=r;return function(m){var g=this;m===void 0&&(m=s);for(var y=arguments.length,x=Array(y>1?y-1:0),A=1;A<y;A++)x[A-1]=arguments[A];return c.produce(m,function(C){var b;return(b=o).call.apply(b,[g,C].concat(x))})}}var u;if(typeof o!="function"&&dt(6),a!==void 0&&typeof a!="function"&&dt(7),An(i)){var f=gy(r),l=Nf(r,i,void 0),d=!0;try{u=o(l),d=!1}finally{d?Is(f):Mf(f)}return typeof Promise!="undefined"&&u instanceof Promise?u.then(function(m){return Df(f,a),Tf(m,f)},function(m){throw Is(f),m}):(Df(f,a),Tf(u,f))}if(!i||typeof i!="object"){if((u=o(i))===void 0&&(u=i),u===wy&&(u=void 0),r.F&&Cf(u,!0),a){var h=[],p=[];Et("Patches").M(i,u,h,p),a(h,p)}return u}dt(21,i)},this.produceWithPatches=function(i,o){if(typeof i=="function")return function(u){for(var f=arguments.length,l=Array(f>1?f-1:0),d=1;d<f;d++)l[d-1]=arguments[d];return r.produceWithPatches(u,function(h){return i.apply(void 0,[h].concat(l))})};var a,s,c=r.produce(i,o,function(u,f){a=u,s=f});return typeof Promise!="undefined"&&c instanceof Promise?c.then(function(u){return[u,a,s]}):[c,a,s]},typeof(n==null?void 0:n.useProxies)=="boolean"&&this.setUseProxies(n.useProxies),typeof(n==null?void 0:n.autoFreeze)=="boolean"&&this.setAutoFreeze(n.autoFreeze)}var e=t.prototype;return e.createDraft=function(n){An(n)||dt(8),bn(n)&&(n=wI(n));var r=gy(this),i=Nf(this,n,void 0);return i[ae].C=!0,Mf(r),i},e.finishDraft=function(n,r){var i=n&&n[ae],o=i.A;return Df(o,r),Tf(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!xy&&dt(20),this.g=n},e.applyPatches=function(n,r){var i;for(i=r.length-1;i>=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}i>-1&&(r=r.slice(i+1));var a=Et("Patches").$;return bn(n)?a(n,r):this.produce(n,function(s){return a(s,r)})},t}(),Ve=new MI,TI=Ve.produce;Ve.produceWithPatches.bind(Ve),Ve.setAutoFreeze.bind(Ve),Ve.setUseProxies.bind(Ve),Ve.applyPatches.bind(Ve),Ve.createDraft.bind(Ve),Ve.finishDraft.bind(Ve);var Ls=TI;function II(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Ey(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function Dy(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Ey(Object(n),!0).forEach(function(r){II(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ey(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function ke(t){return"Minified Redux error #"+t+"; visit https://redux.js.org/Errors?code="+t+" for the full message or use the non-minified dev environment for full errors. "}var My=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Of=function(){return Math.random().toString(36).substring(7).split("").join(".")},Bs={INIT:"@@redux/INIT"+Of(),REPLACE:"@@redux/REPLACE"+Of(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Of()}};function kI(t){if(typeof t!="object"||t===null)return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function Ty(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(ke(0));if(typeof e=="function"&&typeof n=="undefined"&&(n=e,e=void 0),typeof n!="undefined"){if(typeof n!="function")throw new Error(ke(1));return n(Ty)(t,e)}if(typeof t!="function")throw new Error(ke(2));var i=t,o=e,a=[],s=a,c=!1;function u(){s===a&&(s=a.slice())}function f(){if(c)throw new Error(ke(3));return o}function l(m){if(typeof m!="function")throw new Error(ke(4));if(c)throw new Error(ke(5));var g=!0;return u(),s.push(m),function(){if(!!g){if(c)throw new Error(ke(6));g=!1,u();var x=s.indexOf(m);s.splice(x,1),a=null}}}function d(m){if(!kI(m))throw new Error(ke(7));if(typeof m.type=="undefined")throw new Error(ke(8));if(c)throw new Error(ke(9));try{c=!0,o=i(o,m)}finally{c=!1}for(var g=a=s,y=0;y<g.length;y++){var x=g[y];x()}return m}function h(m){if(typeof m!="function")throw new Error(ke(10));i=m,d({type:Bs.REPLACE})}function p(){var m,g=l;return m={subscribe:function(x){if(typeof x!="object"||x===null)throw new Error(ke(11));function A(){x.next&&x.next(f())}A();var C=g(A);return{unsubscribe:C}}},m[My]=function(){return this},m}return d({type:Bs.INIT}),r={dispatch:d,subscribe:l,getState:f,replaceReducer:h},r[My]=p,r}function NI(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:Bs.INIT});if(typeof r=="undefined")throw new Error(ke(12));if(typeof n(void 0,{type:Bs.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error(ke(13))})}function Pf(t){for(var e=Object.keys(t),n={},r=0;r<e.length;r++){var i=e[r];typeof t[i]=="function"&&(n[i]=t[i])}var o=Object.keys(n),a;try{NI(n)}catch(s){a=s}return function(c,u){if(c===void 0&&(c={}),a)throw a;for(var f=!1,l={},d=0;d<o.length;d++){var h=o[d],p=n[h],m=c[h],g=p(m,u);if(typeof g=="undefined")throw u&&u.type,new Error(ke(14));l[h]=g,f=f||g!==m}return f=f||o.length!==Object.keys(c).length,f?l:c}}function Os(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.length===0?function(r){return r}:e.length===1?e[0]:e.reduce(function(r,i){return function(){return r(i.apply(void 0,arguments))}})}function LI(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(r){return function(){var i=r.apply(void 0,arguments),o=function(){throw new Error(ke(15))},a={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},s=e.map(function(c){return c(a)});return o=Os.apply(void 0,s)(i.dispatch),Dy(Dy({},i),{},{dispatch:o})}}}var Ps="NOT_FOUND";function BI(t){var e;return{get:function(r){return e&&t(e.key,r)?e.value:Ps},put:function(r,i){e={key:r,value:i}},getEntries:function(){return e?[e]:[]},clear:function(){e=void 0}}}function OI(t,e){var n=[];function r(s){var c=n.findIndex(function(f){return e(s,f.key)});if(c>-1){var u=n[c];return c>0&&(n.splice(c,1),n.unshift(u)),u.value}return Ps}function i(s,c){r(s)===Ps&&(n.unshift({key:s,value:c}),n.length>t&&n.pop())}function o(){return n}function a(){n=[]}return{get:r,put:i,getEntries:o,clear:a}}var PI=function(e,n){return e===n};function FI(t){return function(n,r){if(n===null||r===null||n.length!==r.length)return!1;for(var i=n.length,o=0;o<i;o++)if(!t(n[o],r[o]))return!1;return!0}}function zI(t,e){var n=typeof e=="object"?e:{equalityCheck:e},r=n.equalityCheck,i=r===void 0?PI:r,o=n.maxSize,a=o===void 0?1:o,s=n.resultEqualityCheck,c=FI(i),u=a===1?BI(c):OI(a,c);function f(){var l=u.get(arguments);if(l===Ps){if(l=t.apply(null,arguments),s){var d=u.getEntries(),h=d.find(function(p){return s(p.value,l)});h&&(l=h.value)}u.put(arguments,l)}return l}return f.clearCache=function(){return u.clear()},f}function RI(t){var e=Array.isArray(t[0])?t[0]:t;if(!e.every(function(r){return typeof r=="function"})){var n=e.map(function(r){return typeof r=="function"?"function "+(r.name||"unnamed")+"()":typeof r}).join(", ");throw new Error("createSelector expects all input-selectors to be functions, but received the following types: ["+n+"]")}return e}function jI(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var i=function(){for(var a=arguments.length,s=new Array(a),c=0;c<a;c++)s[c]=arguments[c];var u=0,f,l={memoizeOptions:void 0},d=s.pop();if(typeof d=="object"&&(l=d,d=s.pop()),typeof d!="function")throw new Error("createSelector expects an output function after the inputs, but received: ["+typeof d+"]");var h=l,p=h.memoizeOptions,m=p===void 0?n:p,g=Array.isArray(m)?m:[m],y=RI(s),x=t.apply(void 0,[function(){return u++,d.apply(null,arguments)}].concat(g)),A=t(function(){for(var C=[],b=y.length,v=0;v<b;v++)C.push(y[v].apply(null,arguments));return f=x.apply(null,C),f});return Object.assign(A,{resultFunc:d,memoizedResultFunc:x,dependencies:y,lastResult:function(){return f},recomputations:function(){return u},resetRecomputations:function(){return u=0}}),A};return i}var UI=jI(zI);function Iy(t){var e=function(r){var i=r.dispatch,o=r.getState;return function(a){return function(s){return typeof s=="function"?s(i,o,t):a(s)}}};return e}var ky=Iy();ky.withExtraArgument=Iy;var Ny=ky,GI=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();globalThis&&globalThis.__generator;var Fs=globalThis&&globalThis.__spreadArray||function(t,e){for(var n=0,r=e.length,i=t.length;n<r;n++,i++)t[i]=e[n];return t},HI=Object.defineProperty,Ly=Object.getOwnPropertySymbols,QI=Object.prototype.hasOwnProperty,VI=Object.prototype.propertyIsEnumerable,By=function(t,e,n){return e in t?HI(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Do=function(t,e){for(var n in e||(e={}))QI.call(e,n)&&By(t,n,e[n]);if(Ly)for(var r=0,i=Ly(e);r<i.length;r++){var n=i[r];VI.call(e,n)&&By(t,n,e[n])}return t},YI=typeof window!="undefined"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Os:Os.apply(null,arguments)};function _I(t){if(typeof t!="object"||t===null)return!1;var e=Object.getPrototypeOf(t);if(e===null)return!0;for(var n=e;Object.getPrototypeOf(n)!==null;)n=Object.getPrototypeOf(n);return e===n}var WI=function(t){GI(e,t);function e(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var i=t.apply(this,n)||this;return Object.setPrototypeOf(i,e.prototype),i}return Object.defineProperty(e,Symbol.species,{get:function(){return e},enumerable:!1,configurable:!0}),e.prototype.concat=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return t.prototype.concat.apply(this,n)},e.prototype.prepend=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return n.length===1&&Array.isArray(n[0])?new(e.bind.apply(e,Fs([void 0],n[0].concat(this)))):new(e.bind.apply(e,Fs([void 0],n.concat(this))))},e}(Array);function XI(t){return typeof t=="boolean"}function ZI(){return function(e){return qI(e)}}function qI(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new WI;return n&&(XI(n)?r.push(Ny):r.push(Ny.withExtraArgument(n.extraArgument))),r}var KI=!0;function JI(t){var e=ZI(),n=t||{},r=n.reducer,i=r===void 0?void 0:r,o=n.middleware,a=o===void 0?e():o,s=n.devTools,c=s===void 0?!0:s,u=n.preloadedState,f=u===void 0?void 0:u,l=n.enhancers,d=l===void 0?void 0:l,h;if(typeof i=="function")h=i;else if(_I(i))h=Pf(i);else throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');var p=a;typeof p=="function"&&(p=p(e));var m=LI.apply(void 0,p),g=Os;c&&(g=YI(Do({trace:!KI},typeof c=="object"&&c)));var y=[m];Array.isArray(d)?y=Fs([m],d):typeof d=="function"&&(y=d(y));var x=g.apply(void 0,y);return Ty(h,f,x)}function Mo(t,e){function n(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];if(e){var o=e.apply(void 0,r);if(!o)throw new Error("prepareAction did not return an object");return Do(Do({type:t,payload:o.payload},"meta"in o&&{meta:o.meta}),"error"in o&&{error:o.error})}return{type:t,payload:r[0]}}return n.toString=function(){return""+t},n.type=t,n.match=function(r){return r.type===t},n}function Oy(t){var e={},n=[],r,i={addCase:function(o,a){var s=typeof o=="string"?o:o.type;if(s in e)throw new Error("addCase cannot be called with two reducers for the same action type");return e[s]=a,i},addMatcher:function(o,a){return n.push({matcher:o,reducer:a}),i},addDefaultCase:function(o){return r=o,i}};return t(i),[e,n,r]}function $I(t){return typeof t=="function"}function e9(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?Oy(e):[e,n,r],o=i[0],a=i[1],s=i[2],c;if($I(t))c=function(){return Ls(t(),function(){})};else{var u=Ls(t,function(){});c=function(){return u}}function f(l,d){l===void 0&&(l=c());var h=Fs([o[d.type]],a.filter(function(p){var m=p.matcher;return m(d)}).map(function(p){var m=p.reducer;return m}));return h.filter(function(p){return!!p}).length===0&&(h=[s]),h.reduce(function(p,m){if(m)if(bn(p)){var g=p,y=m(g,d);return typeof y=="undefined"?p:y}else{if(An(p))return Ls(p,function(x){return m(x,d)});var y=m(p,d);if(typeof y=="undefined"){if(p===null)return p;throw Error("A case reducer on a non-draftable value must not return undefined")}return y}return p},l)}return f.getInitialState=c,f}function t9(t,e){return t+"/"+e}function Py(t){var e=t.name;if(!e)throw new Error("`name` is a required option for createSlice");var n=typeof t.initialState=="function"?t.initialState:Ls(t.initialState,function(){}),r=t.reducers||{},i=Object.keys(r),o={},a={},s={};i.forEach(function(f){var l=r[f],d=t9(e,f),h,p;"reducer"in l?(h=l.reducer,p=l.prepare):h=l,o[f]=h,a[d]=h,s[f]=p?Mo(d,p):Mo(d)});function c(){var f=typeof t.extraReducers=="function"?Oy(t.extraReducers):[t.extraReducers],l=f[0],d=l===void 0?{}:l,h=f[1],p=h===void 0?[]:h,m=f[2],g=m===void 0?void 0:m,y=Do(Do({},d),a);return e9(n,y,p,g)}var u;return{name:e,reducer:function(f,l){return u||(u=c()),u(f,l)},actions:s,caseReducers:o,getInitialState:function(){return u||(u=c()),u.getInitialState()}}}var Ff="listenerMiddleware";Mo(Ff+"/add"),Mo(Ff+"/removeAll"),Mo(Ff+"/remove"),CI();function Fy(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=ai(t.samples,e),o=n?n.map(c=>[c,i.get(c)]).filter(c=>c[1]):[...i],s=t;s.groups=o.map(([c,u],f)=>({name:""+c,label:r?r[f]:c,samples:u})),delete t.samples}function zy(t,e,n){const r=he(".3~r"),i=a=>`${n[a].operator=="lt"?"[":"("}${r(n[a].operand)}, ${r(n[a+1].operand)}${n[a+1].operator=="lte"?"]":")"}`,o=_t(n.length-1).reverse();Fy(t,i9(e,n.slice(1,n.length-1)),o,o.map(i))}function n9(t,e,n){zy(t,e,[{operator:"lt",operand:-1/0},...n,{operator:"lte",operand:1/0}])}function r9(t,e){const n=a9(o9(t.samples,e,[0,.25,.5,.75,1]));n.length==1&&n.push(n[0]),zy(t,e,n.map((r,i,o)=>({operator:i==o.length-1?"lte":"lt",operand:r})))}function i9(t,e){return r=>{const i=t(r);if(!(!le(i)||isNaN(i))){for(let o=0;o<e.length;o++)if(e[o].operator=="lt"){if(i<e[o].operand)return o}else if(i<=e[o].operand)return o;return e.length}}}function o9(t,e,n){const r=Lv(t.map(e).filter(i=>le(i)&&!isNaN(i)));return n.map(i=>sc(r,i))}function a9(t){const e=[t[0]];for(let n=1;n<t.length;n++)t[n]!=t[n-1]&&e.push(t[n]);return e}function s9(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var c9=[].forEach;function u9(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],a=[];c9.call(t,function(c,u,f){if(r=e(c,u,f),r===void 0)return void a.push(c);if(n===void 0&&typeof r=="symbol")throw new TypeError("Can't convert symbol to string");i.push(u),o[u]=r}),n===void 0&&(n=s9),i.sort(function(c,u){return n(o[c],o[u])});var s=i.map(function(c){return t[c]}).concat(a);return s.length!=t.length&&(s.length=t.length),s}function l9(t,e){const n=i=>i.copy().range(_t(0,i.domain().length)).unknown(-1);let r;switch(e.type){case"quantitative":r=i=>le(i)&&!isNaN(i)?-i:-1/0;break;case"ordinal":r=n(e.scale);break;case"nominal":r=i=>i||"";break}return i=>r(t(i))}function f9(t,e){const n=new Set,r=i=>{const o=n.has(i);return n.add(i),o};return t.filter(i=>!r(e(i)))}function d9(t,e,n=!1){return u9(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const h9={lt:(t,e)=>t<e,lte:(t,e)=>t<=e,eq:(t,e)=>t==e,gte:(t,e)=>t>=e,gt:(t,e)=>t>e};function p9(t,e,n,r){const i=h9[n];return t.filter(o=>i(e(o),r))}function m9(t,e,n,r){const i=new Set(r),o=s=>i.has(s),a=n=="remove"?s=>!o(s):o;return t.filter(s=>a(e(s)))}function g9(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}const Ry="setSamples",jy="sortBy",Uy="retainFirstOfEach",Gy="filterByNominal",Hy="filterByQuantitative",Qy="removeUndefined",Vy="groupByNominal",Yy="groupToQuartiles",_y="groupByThresholds",$r="sampleView";function y9(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",label:"Root",samples:[]}}}function v9(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return Py({name:$r,initialState:y9(),reducers:{[Ry]:(n,r)=>{const i=r.payload.samples;if(n.sampleData)throw new Error("Samples have already been set!");if(i.some(a=>a.id===void 0||a.id===null))throw new Error('The sample metadata contains missing sample ids or the "sample" column is missing!');if(new Set(i.map(a=>a.id)).size!=i.length)throw new Error("The sample metadata contains duplicate sample ids!");const o=i.map((a,s)=>U(T({},a),{indexNumber:s}));n.sampleData={ids:o.map(a=>a.id),entities:Object.fromEntries(o.map(a=>[a.id,a]))},n.rootGroup={name:"ROOT",label:"Root",samples:n.sampleData.ids}},[jy]:(n,r)=>{To(n,i=>d9(i,l9(e(r.payload,n),t(r.payload.attribute)),!1))},[Uy]:(n,r)=>{To(n,i=>f9(i,e(r.payload,n)))},[Hy]:(n,r)=>{To(n,i=>p9(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[Gy]:(n,r)=>{To(n,i=>m9(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[Qy]:(n,r)=>{To(n,i=>g9(i,e(r.payload,n)))},[Vy]:(n,r)=>{zf(n,i=>Fy(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[Yy]:(n,r)=>{zf(n,i=>r9(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[_y]:(n,r)=>{zf(n,i=>n9(i,e(r.payload,n),r.payload.thresholds)),n.groupMetadata.push({attribute:r.payload.attribute})}}})}function To(t,e){for(const n of Wy(t))n.samples=e(n.samples)}function zf(t,e){for(const n of Wy(t))e(n)}function Wy(t){return Xy(t).map(e=>ze(e))}function Rf(t){return t.provenance.present[$r]}function Xy(t){const e=[],n=[],r=i=>{if(e.push(i),qy(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function Zy(t){return"samples"in t}function qy(t){return"groups"in t}function*Ky(t){if(yield[t],qy(t))for(const e of t.groups)for(const n of Ky(e))yield[t,...n]}const b9=he(".4"),Jy={lt:"<",lte:"\u2264",eq:"=",gte:"\u2265",gt:">"};function $y(t){return t.length>1?D`{${t.map((e,n)=>D`${n>0?", ":""}<strong>${e}</strong>`)}}`:D`<strong>${t[0]}</strong>`}function A9(t,e){if(!t.type.startsWith($r))return;const n=t.payload,r=n.attribute&&e(n.attribute),i=r==null?void 0:r.name,o=(r==null?void 0:r.title)||D`<em>${i}</em>`,a={attributeName:i};switch(t.type.substring($r.length+1)){case Ry:return U(T({},a),{title:"The initial state",icon:s5});case jy:return U(T({},a),{title:"Sort by",provenanceTitle:D`Sort by ${o}`,icon:e5});case Uy:return U(T({},a),{title:D`Retain first sample of each unique <em>${i}</em>`,provenanceTitle:D`Retain first sample of each unique ${o}`,icon:w5});case Gy:{const c=n.values,u=f=>D`${n.remove?"Remove":"Retain"} samples having ${c[0]===void 0||c[0]===null?D`undefined ${f}`:D`${f} ${c.length>1?"in":D`<span class="operator">=</span>`} ${$y(c)}`}`;return U(T({},a),{title:u(D`<em>${i}</em>`),provenanceTitle:u(o),icon:n.remove?Fl:fo})}case Hy:{const c=u=>D`Retain samples having ${u} <span class="operator">${Jy[n.operator]}</span> <strong>${b9(n.operand)}</strong>`;return U(T({},a),{title:c(D`<em>${i}</em>`),provenanceTitle:c(o),icon:fo})}case Qy:return U(T({},a),{title:"Remove samples having missing attribute",provenanceTitle:D`Remove samples having missing ${o}`,icon:Fl});case Vy:return U(T({},a),{title:"Group by",provenanceTitle:D`Group by ${o}`,icon:ho});case Yy:return U(T({},a),{title:"Group by quartiles",provenanceTitle:D`Group by quartiles on ${o}`,icon:ho});case _y:return U(T({},a),{title:"Group by thresholds",provenanceTitle:D`Group by thresholds {${$y(n.thresholds.map(c=>`${Jy[c.operator]} ${c.operand}`))}} on ${o}`,icon:ho});default:return U(T({},a),{title:JSON.stringify(t),icon:Gg})}}class x9{constructor(){this.attributeInfoSourcesByType={}}addAttributeInfoSource(e,n){this.attributeInfoSourcesByType[e]=n}getAttributeInfo(e){const n=this.attributeInfoSourcesByType[e.type];if(!n)throw new Error("Cannot find attribute info source for: "+JSON.stringify(e));const r=n(e);if(r)return r;throw new Error("Unknown attribute: "+JSON.stringify(e))}}function zs(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function e2(t,{viewHeight:e=0,sampleHeight:n=0,groupSpacing:r=5,summaryHeight:i=0}){if(!e&&!n)throw new Error("viewHeight or sampleHeight must be provided!");const o=d=>ze(d),a=t.map(d=>({path:d,sampleGroup:o(d),samples:o(d).samples})).filter(d=>d.samples.length),s=n?d=>({px:d.length*n+i,grow:0}):d=>({px:i,grow:d.length}),c=[];ao(a.map(d=>s(d.samples)),e,{spacing:r}).forEach((d,h)=>{c.push({key:a[h].path,locSize:d})});const u=[];for(const[d,h]of a.entries()){const p={grow:1},m=h.samples;ao(m.map(g=>p),Math.max(0,c[d].locSize.size-i),{offset:c[d].locSize.location+i}).forEach((g,y)=>{const{size:x,location:A}=g,C=x*.1*eg(15,22,x);g.location=A+C,g.size=x-2*C,u.push({key:m[y],locSize:g})})}function*f(){const d=[];for(const h of c){const p=h.key,m=ze(p);for(;d.length<=p.length&&d.length&&p[d.length-1]!=d[d.length-1].group;)yield d.pop();for(let g=0;g<d.length;g++){const y=d[g];y.locSize.size=h.locSize.location-y.locSize.location+h.locSize.size}for(let g=d.length;g<p.length;g++)d.push({group:p[g],locSize:T({},h.locSize),depth:d.length,n:0});for(const g of d)g.n+=m.samples.length}for(;d.length;)yield d.pop()}const l=[...f()].sort((d,h)=>d.depth-h.depth).map((d,h)=>({key:{index:h,group:d.group,depth:d.depth,n:d.n,attributeLabel:void 0},locSize:d.locSize}));return{samples:u,summaries:c,groups:l}}function w9(t,e){return e.find(n=>Bm(n.locSize,t))}const t2="VALUE_AT_LOCUS",n2=10;class jf extends Kn{constructor(n,r,i,o,a){var f;super(n,r,i,o);Ne(this,Vs);this.provenance=a,this.spec=n,this.stickySummaries=(f=n.stickySummaries)!=null?f:!0,this.compositeAttributeInfoSource=new x9,this.child=r.createView(n.spec,this,"sample-facets"),this.summaryViews=new jr({vconcat:[]},r,this,"sampleSummaries"),this.child.visit(l=>{l instanceof Ae&&this.summaryViews.setChildren(l.sampleAggregateViews)}),this.childCoords=hn.ZERO,this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new jr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},r,this,"sample-sidebar"),this.peripheryCoords=hn.ZERO,this.groupPanel=new yI(this),this.attributePanel=new dy(this),this.peripheryView.setChildren([this.groupPanel,this.attributePanel]),this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(zs(l=>Rf(l).rootGroup,l=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(zs(l=>Rf(l).sampleData,l=>{const d=l&&Object.values(l.entities);!d||(this.attributePanel._setSamples(d),this.facetTextureData=new Float32Array(Math.ceil(d.length*2/4)*4),this.groupPanel.updateGroups())})),this.compositeAttributeInfoSource.addAttributeInfoSource(t2,l=>{var C,b;const d=l.specifier,h=this.findDescendantByPath(d.path);let p;if(le(d.locus))p=d.locus;else{const v=this.getScaleResolution("x").getGenome();if(v)p=v.toContinuous(d.locus.chrom,d.locus.pos);else throw new Error("Encountered a complex locus but no genome is available!")}const m=v=>{var w;return(w=h.mark.findDatumAt(v,p))==null?void 0:w[d.field]},[g,y]=Object.entries(h.getEncoding()).find(([v,w])=>"field"in w&&w.field==d.field),x=g?(C=h.getScaleResolution(g))==null?void 0:C.getScale():void 0;return{name:d.field,attribute:l,title:D`<em class="attribute">${d.field}</em> <span class="viewTitle">(${(b=h.getTitleText())!=null?b:h.name})</span> at <span class="locus">${r2(d.locus)}</span>`,accessor:m,type:"type"in y?y.type:void 0,scale:x}}),this._addBroadcastHandler("dataLoaded",()=>this.extractSamplesFromData()),this._addBroadcastHandler("layout",()=>{this._locations=void 0}),this._scrollOffset=0,this._scrollableHeight=0,this._peekState=0,this._lastMouseY=-1,this.addInteractionEventListener("mousemove",(l,d)=>{this._lastMouseY=d.point.y-this.childCoords.y}),this.addInteractionEventListener("wheel",(l,d)=>{const h=d.uiEvent;this._peekState&&!h.ctrlKey&&(this._scrollOffset=ll(this._scrollOffset+h.deltaY,0,this._scrollableHeight-this.childCoords.height),this.groupPanel.updateRange(),this.context.animator.requestRender(),d.uiEvent={type:h.type,deltaX:h.deltaX,preventDefault:h.preventDefault.bind(h)})},!0),r.addKeyboardListener("keydown",l=>{l.code=="KeyE"&&!l.repeat&&this._togglePeek()}),r.addKeyboardListener("keyup",l=>{l.code=="KeyE"&&this._togglePeek(!1)});const s=l=>this.compositeAttributeInfoSource.getAttributeInfo(l),c=v9(s);this.provenance.addReducer(c.name,c.reducer),this.provenance.addActionInfoSource(l=>A9(l,s)),this.actions=c.actions;const u=UI(l=>{var d;return(d=l.sampleData)==null?void 0:d.entities},l=>l&&Object.values(l));this.getSamples=()=>u(this.sampleHierarchy),this.spec.samples.data&&this.loadSamples()}getOverhang(){let n=this.peripheryView.isVisible()?this.peripheryView.getSize().width.px:0;return n&&(n+=n2),new $e(0,0,0,n)}*[Symbol.iterator](){yield this.child,yield this.peripheryView}replaceChild(n,r){const i=r;if(n===this.child)this.child=i;else throw new Error("Not my child!")}loadSamples(){if(!this.spec.samples.data)throw new Error("SampleView has no explicit sample metadata specified! Cannot load anything.");const{dataSource:n,collector:r}=m8(bg(this.spec.samples.data,this.getBaseUrl()),new C9);r.observers.push(o=>{const a=o.getData();this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:a}))});const i="samples "+this.getPathString();this.context.dataFlow.addDataSource(n,i)}extractSamplesFromData(){if(this.getSamples())return;const n=this.getScaleResolution("sample");if(n){const r=n.getDataDomain().map((i,o)=>({id:i,displayName:i,indexNumber:o,attributes:[]}));this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:r}))}else throw new Error("No explicit sample data nor sample channels found!")}get sampleHierarchy(){return this.provenance.getPresentState()[$r]}getLocations(){var n,r,i,o;if(!this._locations){if(!((n=this.childCoords)!=null&&n.height))return;const a=this.sampleHierarchy,s=Xy(a),c=[null,...a.groupMetadata],u=(o=((r=this.summaryViews)==null?void 0:r.isVisible())&&((i=this.summaryViews)==null?void 0:i.getSize().height.px))!=null?o:0,f=e2(s,{viewHeight:this.childCoords.height,groupSpacing:5,summaryHeight:u}),l=e2(s,{sampleHeight:35,groupSpacing:15,summaryHeight:u}),d=()=>-this._scrollOffset,h=()=>this._peekState;this._scrollableLocations=l,this._scrollableHeight=l.summaries.map(y=>y.locSize.location+y.locSize.size).reduce((y,x)=>Math.max(y,x),0);const p=(y,x)=>{const A=[];for(let C=0;C<y.length;C++){const b=y[C].key;A.push({key:b,locSize:xD(y[C].locSize,wD(x[C].locSize,d),h)})}return A},m=p(f.groups,l.groups),g=document.createElement("div");m.forEach(y=>{if(y.key.depth==0)return;const x=c[y.key.depth].attribute,A=this.compositeAttributeInfoSource.getAttributeInfo(x).title;A?re(A)?y.key.attributeLabel=A:(He(A,g),y.key.attributeLabel=g.textContent.replace(/\s+/g," ").trim()):y.key.attributeLabel="unknown"}),this._locations={samples:p(f.samples,l.samples),summaries:p(f.summaries,l.summaries),groups:m}}return this._locations}getSampleAt(n){const r=w9(n,this.getLocations().samples);if(r)return this.sampleHierarchy.sampleData.entities[r.key]}getSummaryAt(n){const r=this.getLocations().summaries,i=r.findIndex(o=>Bm(o.locSize,n));return i>=0?{index:i,location:r[i]}:void 0}_clipBySummary(n){if(this.stickySummaries&&this.summaryViews.childCount){const r=this.summaryViews.getSize().height.px;return n.modify({y:()=>n.y+r,height:()=>n.height-r})}}renderChild(n,r,i={}){const o=1/r.height,a=()=>o,s=this._clipBySummary(r);for(const c of this.getLocations().samples)this.child.render(n,r,U(T({},i),{sampleFacetRenderingOptions:{locSize:CD(c.locSize,a)},facetId:[c.key],clipRect:s}))}renderSummaries(n,r,i={}){i=U(T({},i),{clipRect:r});const o=this.summaryViews.getSize().height.px;for(const[a,s]of this.getLocations().summaries.entries()){const c=()=>{const u=s.locSize.location;let f=r.y+u;return this.stickySummaries?f+ll(-u,0,s.locSize.size-o):f};this.summaryViews.render(n,r.modify({y:c,height:o}),U(T({},i),{facetId:[a]}))}}render(n,r,i={}){if(!this.isVisible())return;n.pushView(this,r);const o=ao([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],r.width,{spacing:n2}),a=s=>r.modify({x:s.location+r.x,width:s.size});this.peripheryCoords=a(o[0]),this.childCoords=a(o[1]),this.peripheryView.render(n,this.peripheryCoords,i),this.renderChild(n,this.childCoords,i),this.renderSummaries(n,this.childCoords,i),n.popView(this)}onBeforeRender(){this._updateFacetTexture()}_updateFacetTexture(){var o;const n=this.facetTextureData;n.fill(0);const r=(o=this.sampleHierarchy.sampleData)==null?void 0:o.entities;if(r){const a=this.getLocations().samples,s=this.childCoords.height;for(const c of a){const u=r[c.key].indexNumber;n[u*2+0]=c.locSize.location/s,n[u*2+1]=c.locSize.size/s}}const i=this.context.glHelper.gl;this.facetTexture=io(i,{internalFormat:i.RG32F,format:i.RG,height:1},n,this.facetTexture)}_togglePeek(n){var i;if(this._peekState>0&&this._peekState<1||n!==void 0&&n==!!this._peekState)return;const r={requestAnimationFrame:o=>this.context.animator.requestTransition(o),onUpdate:o=>{this._peekState=Math.pow(o,2),this.groupPanel.updateRange(),this.context.animator.requestRender()},from:this._peekState};if(this._peekState==0){const o=this._lastMouseY,a=(i=this.getSampleAt(o))==null?void 0:i.id;let s;if(a)s=(u=>u.location+u.size/2)(this._scrollableLocations.samples.find(u=>u.key==a).locSize);else{const c=this.getSummaryAt(o);c&&(s=this._scrollableLocations.summaries[c.index].locSize.location-(c.location.locSize.location-o))}if(s?this._scrollOffset=s-o:this._scrollOffset=(this._scrollableHeight-this.childCoords.height)/2,this._scrollableHeight>this.childCoords.height)as(U(T({},r),{to:1,duration:500,easingFunction:aM}));else{const c=u=>(1-Math.pow(u*2-1,2))*.5;as(U(T({},r),{from:0,to:1,duration:300,easingFunction:c}))}}else as(U(T({},r),{to:0,duration:400,easingFunction:iM}))}_handleContextMenu(n,r){var f;const i=r.uiEvent,o=this.childCoords.normalizePoint(r.point.x,r.point.y).x,a=this.getScaleResolution("x").invertToComplex(o),s=A8(this.child).filter(l=>!["sample","x","x2"].includes(l.channel)).filter(l=>["rect","rule"].includes(l.view.getMarkType()));let c=[{label:`Locus: ${r2(a)}`,type:"header"},{type:"divider"}],u="";for(const[l,d]of s.entries()){let h=[...d.view.getAncestors()];h=h.slice(0,h.findIndex(y=>y===this));const p={path:h.map(y=>y.name).reverse(),field:d.field,locus:a},m=this.compositeAttributeInfoSource.getAttributeInfo({type:t2,specifier:p}),g=(f=d.view.getTitleText())!=null?f:d.view.spec.name;g!=u&&(l>0&&c.push({type:"divider"}),c.push({label:g,type:"header"}),u=g),c.push({label:d.field,submenu:df(null,m,void 0,this)})}ly({items:c},i)}getSampleFacetTexture(){return this.facetTexture}propagateInteractionEvent(n){this.handleInteractionEvent(void 0,n,!0),!n.stopped&&(this.childCoords.containsPoint(n.point.x,n.point.y)&&(this.child.propagateInteractionEvent(n),lg(n,this.childCoords,r=>xe(this,Vs,U2).call(this,this.childCoords,this.child,r),this.context.getCurrentHover())),this.peripheryCoords.containsPoint(n.point.x,n.point.y)&&this.peripheryView.propagateInteractionEvent(n),!n.stopped&&this.handleInteractionEvent(void 0,n,!1))}getDefaultResolution(n,r){switch(n){case"x":case"sample":return"shared";default:return"independent"}}}Vs=new WeakSet,U2=function(n,r,i){const o=this.child.getScaleResolution("x");if(!o||!o.isZoomable())return;const a=n.normalizePoint(i.x,i.y),s=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta);o.zoom(2**i.zDelta,a.x,s.x-a.x),this.context.animator.requestRender()};function r2(t){return!le(t)&&"chrom"in t?qD(t):""+t}class C9 extends ue{constructor(){super(),this.reset()}reset(){this._index=0}handle(e){this._propagate({id:e.sample,displayName:e.displayName||e.sample,indexNumber:this._index++,attributes:S9(e)})}}function S9(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function E9(t){return"samples"in t&&Ge(t.samples)&&"spec"in t&&Ge(t.spec)}const D9=(t,e)=>e.some(n=>t instanceof n);let i2,o2;function M9(){return i2||(i2=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function T9(){return o2||(o2=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const a2=new WeakMap,Uf=new WeakMap,s2=new WeakMap,Gf=new WeakMap,Hf=new WeakMap;function I9(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",a)},o=()=>{n(wn(t.result)),i()},a=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",a)});return e.then(n=>{n instanceof IDBCursor&&a2.set(n,t)}).catch(()=>{}),Hf.set(e,t),e}function k9(t){if(Uf.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",o),t.removeEventListener("error",a),t.removeEventListener("abort",a)},o=()=>{n(),i()},a=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",o),t.addEventListener("error",a),t.addEventListener("abort",a)});Uf.set(t,e)}let Qf={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return Uf.get(t);if(e==="objectStoreNames")return t.objectStoreNames||s2.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return wn(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function N9(t){Qf=t(Qf)}function L9(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(Vf(this),e,...n);return s2.set(r,e.sort?e.sort():[e]),wn(r)}:T9().includes(t)?function(...e){return t.apply(Vf(this),e),wn(a2.get(this))}:function(...e){return wn(t.apply(Vf(this),e))}}function B9(t){return typeof t=="function"?L9(t):(t instanceof IDBTransaction&&k9(t),D9(t,M9())?new Proxy(t,Qf):t)}function wn(t){if(t instanceof IDBRequest)return I9(t);if(Gf.has(t))return Gf.get(t);const e=B9(t);return e!==t&&(Gf.set(t,e),Hf.set(e,t)),e}const Vf=t=>Hf.get(t);function O9(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const a=indexedDB.open(t,e),s=wn(a);return r&&a.addEventListener("upgradeneeded",c=>{r(wn(a.result),c.oldVersion,c.newVersion,wn(a.transaction))}),n&&a.addEventListener("blocked",()=>n()),s.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),s}const P9=["get","getKey","getAll","getAllKeys","count"],F9=["put","add","delete","clear"],Yf=new Map;function c2(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(Yf.get(e))return Yf.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=F9.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||P9.includes(n)))return;const o=async function(a,...s){const c=this.transaction(a,i?"readwrite":"readonly");let u=c.store;return r&&(u=u.index(s.shift())),(await Promise.all([u[n](...s),i&&c.done]))[0]};return Yf.set(e,o),o}N9(t=>U(T({},t),{get:(e,n,r)=>c2(e,n)||t.get(e,n,r),has:(e,n)=>!!c2(e,n)||t.has(e,n)}));class u2{isReadonly(){return!0}async put(e,n){this._checkReadonly()}async delete(e){this._checkReadonly()}async getNames(){return[]}async get(e){}_checkReadonly(){if(this.isReadonly())throw new Error("This bookmark")}}const Io="bookmarks";class z9 extends u2{constructor(e){super(),this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=O9(e,1,{upgrade(n,r,i,o){n.createObjectStore(Io,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}isReadonly(){return!1}async put(e,n){const i=(await this._getDB()).transaction(Io,"readwrite");try{n?(await i.store.delete(n),await i.store.put(e)):await i.store.put(e),await i.done}catch(o){throw i.abort(),o}}async delete(e){(await this._getDB()).delete(Io,e)}async getNames(){return(await this._getDB()).getAllKeys(Io)}async get(e){return(await this._getDB()).get(Io,e)}}/**
2038
2140
  * @license
2039
2141
  * Copyright 2020 Google LLC
2040
2142
  * SPDX-License-Identifier: BSD-3-Clause
2041
- */const xI=t=>t===null||typeof t!="object"&&typeof t!="function",j1=t=>t.strings===void 0,vI={},wI=(t,e=vI)=>t._$AH=e;/**
2143
+ */const R9=t=>t===null||typeof t!="object"&&typeof t!="function",l2=t=>t.strings===void 0,j9={},U9=(t,e=j9)=>t._$AH=e;/**
2042
2144
  * @license
2043
2145
  * Copyright 2017 Google LLC
2044
2146
  * SPDX-License-Identifier: BSD-3-Clause
2045
- */const Ki=(t,e)=>{var n,r;const i=t._$AN;if(i===void 0)return!1;for(const o of i)(r=(n=o)._$AO)===null||r===void 0||r.call(n,e,!1),Ki(o,e);return!0},Ks=t=>{let e,n;do{if((e=t._$AM)===void 0)break;n=e._$AN,n.delete(t),t=e}while((n==null?void 0:n.size)===0)},G1=t=>{for(let e;e=t._$AM;t=e){let n=e._$AN;if(n===void 0)e._$AN=n=new Set;else if(n.has(t))break;n.add(t),CI(e)}};function EI(t){this._$AN!==void 0?(Ks(this),this._$AM=t,G1(this)):this._$AM=t}function SI(t,e=!1,n=0){const r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(e)if(Array.isArray(r))for(let o=n;o<r.length;o++)Ki(r[o],!1),Ks(r[o]);else r!=null&&(Ki(r,!1),Ks(r));else Ki(this,t)}const CI=t=>{var e,n,r,i;t.type==Ot.CHILD&&((e=(r=t)._$AP)!==null&&e!==void 0||(r._$AP=SI),(n=(i=t)._$AQ)!==null&&n!==void 0||(i._$AQ=EI))};class H1 extends Gi{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,n,r){super._$AT(e,n,r),G1(this),this.isConnected=e._$AU}_$AO(e,n=!0){var r,i;e!==this.isConnected&&(this.isConnected=e,e?(r=this.reconnected)===null||r===void 0||r.call(this):(i=this.disconnected)===null||i===void 0||i.call(this)),n&&(Ki(this,e),Ks(this))}setValue(e){if(j1(this._$Ct))this._$Ct._$AI(e,this);else{const n=[...this._$Ct._$AH];n[this._$Ci]=e,this._$Ct._$AI(n,this,0)}}disconnected(){}reconnected(){}}/**
2147
+ */const ko=(t,e)=>{var n,r;const i=t._$AN;if(i===void 0)return!1;for(const o of i)(r=(n=o)._$AO)===null||r===void 0||r.call(n,e,!1),ko(o,e);return!0},Rs=t=>{let e,n;do{if((e=t._$AM)===void 0)break;n=e._$AN,n.delete(t),t=e}while((n==null?void 0:n.size)===0)},f2=t=>{for(let e;e=t._$AM;t=e){let n=e._$AN;if(n===void 0)e._$AN=n=new Set;else if(n.has(t))break;n.add(t),Q9(e)}};function G9(t){this._$AN!==void 0?(Rs(this),this._$AM=t,f2(this)):this._$AM=t}function H9(t,e=!1,n=0){const r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(e)if(Array.isArray(r))for(let o=n;o<r.length;o++)ko(r[o],!1),Rs(r[o]);else r!=null&&(ko(r,!1),Rs(r));else ko(this,t)}const Q9=t=>{var e,n,r,i;t.type==zt.CHILD&&((e=(r=t)._$AP)!==null&&e!==void 0||(r._$AP=H9),(n=(i=t)._$AQ)!==null&&n!==void 0||(i._$AQ=G9))};class d2 extends lo{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,n,r){super._$AT(e,n,r),f2(this),this.isConnected=e._$AU}_$AO(e,n=!0){var r,i;e!==this.isConnected&&(this.isConnected=e,e?(r=this.reconnected)===null||r===void 0||r.call(this):(i=this.disconnected)===null||i===void 0||i.call(this)),n&&(ko(this,e),Rs(this))}setValue(e){if(l2(this._$Ct))this._$Ct._$AI(e,this);else{const n=[...this._$Ct._$AH];n[this._$Ci]=e,this._$Ct._$AI(n,this,0)}}disconnected(){}reconnected(){}}/**
2046
2148
  * @license
2047
2149
  * Copyright 2020 Google LLC
2048
2150
  * SPDX-License-Identifier: BSD-3-Clause
2049
- */const Q1=()=>new DI;class DI{}const Wl=new WeakMap,V1=br(class extends H1{render(t){return R}update(t,[e]){var n;const r=e!==this.U;return r&&this.U!==void 0&&this.nt(void 0),(r||this.rt!==this.lt)&&(this.U=e,this.ht=(n=t.options)===null||n===void 0?void 0:n.host,this.nt(this.lt=t.element)),R}nt(t){typeof this.U=="function"?(Wl.get(this.U)!==void 0&&this.U.call(this.ht,void 0),Wl.set(this.U,t),t!==void 0&&this.U.call(this.ht,t)):this.U.value=t}get rt(){var t;return typeof this.U=="function"?Wl.get(this.U):(t=this.U)===null||t===void 0?void 0:t.value}disconnected(){this.rt===this.lt&&this.nt(void 0)}reconnected(){this.nt(this.lt)}});/**
2151
+ */const h2=()=>new V9;class V9{}const _f=new WeakMap,p2=Hr(class extends d2{render(t){return G}update(t,[e]){var n;const r=e!==this.U;return r&&this.U!==void 0&&this.ot(void 0),(r||this.rt!==this.lt)&&(this.U=e,this.ht=(n=t.options)===null||n===void 0?void 0:n.host,this.ot(this.lt=t.element)),G}ot(t){var e;if(typeof this.U=="function"){const n=(e=this.ht)!==null&&e!==void 0?e:globalThis;let r=_f.get(n);r===void 0&&(r=new WeakMap,_f.set(n,r)),r.get(this.U)!==void 0&&this.U.call(this.ht,void 0),r.set(this.U,t),t!==void 0&&this.U.call(this.ht,t)}else this.U.value=t}get rt(){var t,e,n;return typeof this.U=="function"?(e=_f.get((t=this.ht)!==null&&t!==void 0?t:globalThis))===null||e===void 0?void 0:e.get(this.U):(n=this.U)===null||n===void 0?void 0:n.value}disconnected(){this.rt===this.lt&&this.ot(void 0)}reconnected(){this.ot(this.lt)}});/**
2050
2152
  * @license
2051
2153
  * Copyright 2018 Google LLC
2052
2154
  * SPDX-License-Identifier: BSD-3-Clause
2053
- */const MI={},II=br(class extends Gi{constructor(){super(...arguments),this.ot=MI}render(t,e){return e()}update(t,[e,n]){if(Array.isArray(e)){if(Array.isArray(this.ot)&&this.ot.length===e.length&&e.every((r,i)=>r===this.ot[i]))return xe}else if(this.ot===e)return xe;return this.ot=Array.isArray(e)?Array.from(e):e,this.render(e,n)}});class TI extends kt{constructor(){super();this.inputRef=Q1(),this.genomeSpy=void 0,this.getDefaultValue=()=>"",this._keyListener=this._onKeyDown.bind(this),this._documentClickListener=e=>{var n;e.target!==this._inputField&&((n=this._inputField)==null||n.blur())},this._focused=!1}get _inputField(){return this.inputRef.value}static get properties(){return{genomeSpy:{type:Object}}}connectedCallback(){super.connectedCallback(),this._initializeGenome(),document.addEventListener("keydown",this._keyListener),document.addEventListener("click",this._documentClickListener)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("keydown",this._keyListener),document.removeEventListener("click",this._documentClickListener)}createRenderRoot(){return this}_onKeyDown(e){switch(e.code){case"KeyF":e.metaKey||e.altKey||e.ctrlKey||(e.preventDefault(),this.inputRef.value.focus());break}}_initializeGenome(){const e=_1(this.genomeSpy.viewRoot);e&&(this._genomeResolution=e,this._genome=this.genomeSpy.genomeStore.getGenome(),this.getDefaultValue=()=>this._genome.formatInterval(e.getDomain()),e.addEventListener("domain",Is(()=>this.requestUpdate(),60,!1)))}async searchViews(e){var r,i;const n=new Intl.Collator("en",{usage:"search",sensitivity:"base"});for(const o of this.genomeSpy.getSearchableViews()){const s=o.getAccessor("search"),a=o.getAccessor("x"),c=o.getAccessor("x2"),u=o.getScaleResolution("x");if(!(!a||!c||!(u==null?void 0:u.isZoomable()))){for(const f of(i=(r=o.getCollector())==null?void 0:r.getData())!=null?i:[])if(n.compare(s(f),e)===0){const l=so([a(f),c(f)],null,1.2);return await u.zoomTo(l),!0}}}return!1}async search(e){await(async()=>{if(this._genomeResolution&&this._genome){const r=this._genome.parseInterval(e);if(r){this._genomeResolution.zoomTo(r);return}if(await this.searchViews(e))return;this.genomeSpy.viewRoot.visit(i=>{i instanceof _m&&i.handleVerboseCommand(e)})}})(),this._inputField.value=this.getDefaultValue(),this.requestUpdate()}_onSearchHelpClicked(e){const n=e.target;n.tagName=="LI"&&this._doExampleSearch(n.innerText)}_onSearchFocused(e){const n=e.target;switch(e.type){case"focus":this._focused=!0,n.select();break;case"blur":this._focused=!1;break}}_onSearchKeyDown(e){const n=e.target;e.code=="Enter"?(e.preventDefault(),this.search(n.value).then(()=>{n.focus(),n.select()}).catch(r=>{console.log(r),alert(r)})):e.code=="Escape"?n.blur():e.stopPropagation()}_doExampleSearch(e){NI(e,this._inputField).then(()=>{this._inputField.blur(),this.search(e)})}_getSearchHelp(){var n,r;const e=[];e.push(M`<p>Focus to a specific range. Examples:</p><ul><li>chr8:21,445,873-24,623,697</li><li>chr4:166,014,727-chr15:23,731,397</li></ul>`);for(const i of((n=this.genomeSpy)==null?void 0:n.getSearchableViews())||[]){const o=(r=i.spec.title)!=null?r:i.spec.name,s=i.getAccessor("search"),a=s.fields.join(", "),c=Vp(3,i.getCollector().getData(),s);e.push(M`<p>Search <em>${o}</em> (${a}). Examples:</p><ul>${c.map(u=>M`<li>${u}</li>`)}</ul>`)}return M`<div class="search-help" @click="${this._onSearchHelpClicked}">${e}</div>`}updated(e){this._focused&&this._inputField.select()}render(){return M`<div class="search"><input type="text" class="search-input" .value="${this.getDefaultValue()}" @mousedown="${e=>{this._focused||(this._inputField.focus(),e.preventDefault(),e.stopPropagation())}}" @keydown="${this._onSearchKeyDown.bind(this)}" @focus="${this._onSearchFocused}" @blur="${this._onSearchFocused}" ${V1(this.inputRef)}> ${II([123],()=>this._getSearchHelp())}</div>`}}customElements.define("genome-spy-search-field",TI);function NI(t,e){return new Promise(n=>{let r=0;const i=700/t.length+30;function o(){e.value=t.substring(0,r),r>=t.length?setTimeout(n,500):(r++,setTimeout(o,Math.random()*i*2))}o()})}function _1(t){let e;return t.visit(n=>{for(const r of["x","y"]){const i=n.resolutions.scale[r];if(i&&i.type=="locus"&&i.isZoomable())return e=i,kn}}),e}var Y1="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";/**
2155
+ */const Y9={},_9=Hr(class extends lo{constructor(){super(...arguments),this.nt=Y9}render(t,e){return e()}update(t,[e,n]){if(Array.isArray(e)){if(Array.isArray(this.nt)&&this.nt.length===e.length&&e.every((r,i)=>r===this.nt[i]))return Ee}else if(this.nt===e)return Ee;return this.nt=Array.isArray(e)?Array.from(e):e,this.render(e,n)}});class W9 extends Ft{constructor(){super(),this.inputRef=h2(),this.genomeSpy=void 0,this.getDefaultValue=()=>"",this._keyListener=this._onKeyDown.bind(this),this._documentClickListener=e=>{var n;e.target!==this._inputField&&((n=this._inputField)==null||n.blur())},this._focused=!1}get _inputField(){return this.inputRef.value}static get properties(){return{genomeSpy:{type:Object}}}connectedCallback(){super.connectedCallback(),this._initializeGenome(),document.addEventListener("keydown",this._keyListener),document.addEventListener("click",this._documentClickListener)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("keydown",this._keyListener),document.removeEventListener("click",this._documentClickListener)}createRenderRoot(){return this}_onKeyDown(e){switch(e.code){case"KeyF":e.metaKey||e.altKey||e.ctrlKey||(e.preventDefault(),this.inputRef.value.focus());break}}_initializeGenome(){const e=m2(this.genomeSpy.viewRoot);e&&(this._genomeResolution=e,this._genome=this.genomeSpy.genomeStore.getGenome(),this.getDefaultValue=()=>this._genome.formatInterval(e.getDomain()),e.addEventListener("domain",ss(()=>this.requestUpdate(),60,!1)))}async searchViews(e){var r,i;const n=new Intl.Collator("en",{usage:"search",sensitivity:"base"});for(const o of this.genomeSpy.getSearchableViews()){const a=o.getAccessor("search"),s=o.getAccessor("x"),c=o.getAccessor("x2"),u=o.getScaleResolution("x");if(!(!s||!c||!(u!=null&&u.isZoomable()))){for(const f of(i=(r=o.getCollector())==null?void 0:r.getData())!=null?i:[])if(n.compare(a(f),e)===0){const l=_o([s(f),c(f)],null,1.2);return await u.zoomTo(l),!0}}}return!1}async search(e){await(async()=>{if(this._genomeResolution&&this._genome){const r=this._genome.parseInterval(e);if(r){this._genomeResolution.zoomTo(r);return}if(await this.searchViews(e))return;this.genomeSpy.viewRoot.visit(i=>{i instanceof dy&&i.handleVerboseCommand(e)})}})(),this._inputField.value=this.getDefaultValue(),this.requestUpdate()}_onSearchHelpClicked(e){const n=e.target;n.tagName=="LI"&&this._doExampleSearch(n.innerText)}_onSearchFocused(e){const n=e.target;switch(e.type){case"focus":this._focused=!0,n.select();break;case"blur":this._focused=!1;break}}_onSearchKeyDown(e){const n=e.target;e.code=="Enter"?(e.preventDefault(),this.search(n.value).then(()=>{n.focus(),n.select()}).catch(r=>{console.log(r),alert(r)})):e.code=="Escape"?n.blur():e.stopPropagation()}_doExampleSearch(e){X9(e,this._inputField).then(()=>{this._inputField.blur(),this.search(e)})}_getSearchHelp(){var n,r;const e=[];e.push(D`<p>Focus to a specific range. Examples:</p><ul><li>chr8</li><li>chr8:21,445,873</li><li>chr8:21,445,873-24,623,697</li><li>chr4:166,014,727-chr15:23,731,397</li></ul>`);for(const i of((n=this.genomeSpy)==null?void 0:n.getSearchableViews())||[]){const o=(r=i.getTitleText())!=null?r:i.spec.name,a=i.getAccessor("search"),s=a.fields.join(", "),c=Lm(3,i.getCollector().getData(),a);e.push(D`<p>Search <em>${o}</em> (${s}). Examples:</p><ul>${c.map(u=>D`<li>${u}</li>`)}</ul>`)}return D`<div class="search-help" @click="${this._onSearchHelpClicked}">${e}</div>`}updated(e){this._focused&&this._inputField.select()}render(){return D`<div class="search"><input type="text" class="search-input" .value="${this.getDefaultValue()}" @mousedown="${e=>{this._focused||(this._inputField.focus(),e.preventDefault(),e.stopPropagation())}}" @keydown="${this._onSearchKeyDown.bind(this)}" @focus="${this._onSearchFocused}" @blur="${this._onSearchFocused}" ${p2(this.inputRef)}> ${_9([123],()=>this._getSearchHelp())}</div>`}}customElements.define("genome-spy-search-field",W9);function X9(t,e){return new Promise(n=>{let r=0;const i=700/t.length+30;function o(){e.value=t.substring(0,r),r>=t.length?setTimeout(n,500):(r++,setTimeout(o,Math.random()*i*2))}o()})}function m2(t){let e;return t.visit(n=>{for(const r of["x","y"]){const i=n.resolutions.scale[r];if(i&&i.type=="locus"&&i.isZoomable())return e=i,zr}}),e}var g2="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";/**
2054
2156
  * @license
2055
2157
  * Copyright 2020 Google LLC
2056
2158
  * SPDX-License-Identifier: BSD-3-Clause
2057
- */const LI=br(class extends Gi{constructor(t){if(super(t),t.type!==Ot.PROPERTY&&t.type!==Ot.ATTRIBUTE&&t.type!==Ot.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!j1(t))throw Error("`live` bindings can only contain a single expression")}render(t){return t}update(t,[e]){if(e===xe||e===R)return e;const n=t.element,r=t.name;if(t.type===Ot.PROPERTY){if(e===n[r])return xe}else if(t.type===Ot.BOOLEAN_ATTRIBUTE){if(!!e===n.hasAttribute(r))return xe}else if(t.type===Ot.ATTRIBUTE&&n.getAttribute(r)===e+"")return xe;return wI(t),e}});function W1(t,e){return new CustomEvent("query-dependency",{detail:{name:t,setter:e},bubbles:!0})}function kI(t){if(!(t==null?void 0:t.length))throw new Error("Can't nest an empty array!");const e=X1(null);for(const n of t){if(!(n==null?void 0:n.length))throw new Error("Cannot nest, element has no path!");let r=e;for(const i of n){let o=r.children.find(s=>s.item===i);o||(o=X1(i),r.children.push(o)),r=o}}return e.children[0]}const X1=t=>({item:t,children:[]}),Xl=new Set;function ql(t){const n=t.currentTarget.parentNode,r=!n.classList.contains("show");for(const i of Xl)i.classList.remove("show"),document.body.classList.remove(En);return Xl.clear(),t.stopPropagation(),r?(Xl.add(n),n.classList.add("show"),document.body.classList.add(En),window.addEventListener("click",i=>{n.classList.contains("show")&&(n.classList.remove("show"),document.body.classList.remove(En),i.preventDefault())},{once:!0})):window.dispatchEvent(new MouseEvent("click")),r}const Zl={visibilities:{}},Ji=p1({name:"viewSettings",initialState:Zl,reducers:{setVisibility:(t,e)=>{t.visibilities[e.payload.name]=e.payload.visibility},restoreDefaultVisibility:(t,e)=>{delete t.visibilities[e.payload]},restoreDefaultVisibilities:(t,e)=>Zl,setViewSettings:(t,e)=>T(T({},Zl),e.payload?e.payload:{})}});class OI extends kt{constructor(){super();this.app=void 0,this.nestedPaths=void 0,this.sateWatcher=Zs(e=>e.viewSettings,(e,n)=>this.requestUpdate()),this.style.display="none"}connectedCallback(){super.connectedCallback(),this.dispatchEvent(W1("app",e=>{this.app=e})),this.app.addInitializationListener(()=>{this.updateToggles(),this.requestUpdate(),this.style.display=this.nestedPaths.children.length?"block":"none"}),this.app.storeHelper.subscribe(this.sateWatcher)}disconnectedCallback(){this.app.storeHelper.unsubscribe(this.sateWatcher)}createRenderRoot(){return this}toolButtonClicked(e){ql(e)}handleCheckboxClick(e,n){const r=e.target.checked;this.app.storeHelper.dispatch(r!=n.isVisibleInSpec()?Ji.actions.setVisibility({name:n.name,visibility:r}):Ji.actions.restoreDefaultVisibility(n.name)),this.requestUpdate(),e.stopPropagation()}handleResetClick(){this.app.storeHelper.dispatch(Ji.actions.restoreDefaultVisibilities())}updateToggles(){const e=this.app.genomeSpy.viewRoot;if(!e)return;const n=[];e.visit(i=>{if(i instanceof Vu)return gr;n.push(i)});const r=n.filter(i=>!(i instanceof Yu)&&CM(i.name)&&q1(i)).map(i=>[...i.getAncestors()].filter(o=>!(o instanceof Yu)).reverse());this.nestedPaths=kI(r)}renderToggles(){const e=this.getVisibilities(),n=this.app.genomeSpy.viewRoot,r=SM(n);var i=(s,a=!0)=>s.length?M`<ul class="${a?null:"unchecked"}">${s.map(o)}</ul>`:R,o=s=>{var u,f;const a=s.item,c=(u=e[a.name])!=null?u:a.isVisibleInSpec();return M`<li><label class="checkbox"><input type="checkbox" ?disabled="${!r.has(a.name)||!q1(a)}" .checked="${LI(c)}" @change="${l=>this.handleCheckboxClick(l,a)}">${(f=a.spec.title)!=null?f:a.name}</label> ${i(s.children,c)}</li>`};return i(this.nestedPaths.children)}render(){const e=!Object.keys(this.getVisibilities()).length;return M`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Toggle view visibilities" @click="${this.toolButtonClicked.bind(this)}">${te(h8).node[0]}</button><ul class="gs-dropdown-menu" @click="${n=>n.stopPropagation()}"><li class="menu-header">View visibility</li><li>${e?M`<span class="disabled-item">Restore defaults</span>`:M`<a @click="${()=>this.handleResetClick()}">Restore defaults</a>`}</li><li class="menu-divider"></li><li>${this.nestedPaths?this.renderToggles():R}</li></ul></div>`}getVisibilities(){return this.app.storeHelper.state.viewSettings.visibilities}}const q1=t=>{var e;return(e=t.spec.configurableVisibility)!=null?e:!(t.parent&&t.parent instanceof Ri)};customElements.define("genome-spy-view-visibility",OI);class BI extends kt{constructor(){super();this.provenance=void 0}connectedCallback(){super.connectedCallback(),this.provenance.storeHelper.subscribe(()=>{this.requestUpdate()})}disconnectedCallback(){super.disconnectedCallback()}createRenderRoot(){return this}render(){const e=(r,i)=>{var s,a;const o=this.provenance.getActionInfo(r);return o?M`<li><a @click="${()=>this.provenance.activateState(i)}" class="${i==this.provenance.getCurrentIndex()?"active":""}">${te((s=o.icon)!=null?s:qg).node[0]} ${(a=o.provenanceTitle)!=null?a:o.title}</a></li>`:R},n=()=>M`<div class="dropdown provenance-dropdown"><button class="tool-btn" title="Provenance" ?disabled="${this.provenance.isEmpty()}" @click="${ql}">${te(i8).node[0]}</button><ol class="gs-dropdown-menu provenance-menu">${this.provenance.getFullActionHistory().map(e)}</ol></div>`;return M`<div class="btn-group" @click="${r=>r.stopPropagation()}"><button class="tool-btn" title="Backtrack samples (B)" ?disabled="${!this.provenance.isUndoable()}" @click="${()=>this.provenance.undo()}">${te(y8).node[0]}</button> ${n()} <button class="tool-btn" title="Redo" ?disabled="${!this.provenance.isRedoable()}" @click="${()=>this.provenance.redo()}">${te(f8).node[0]}</button></div>`}}customElements.define("genome-spy-provenance-buttons",BI);/**
2159
+ */const Z9=Hr(class extends lo{constructor(t){if(super(t),t.type!==zt.PROPERTY&&t.type!==zt.ATTRIBUTE&&t.type!==zt.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!l2(t))throw Error("`live` bindings can only contain a single expression")}render(t){return t}update(t,[e]){if(e===Ee||e===G)return e;const n=t.element,r=t.name;if(t.type===zt.PROPERTY){if(e===n[r])return Ee}else if(t.type===zt.BOOLEAN_ATTRIBUTE){if(!!e===n.hasAttribute(r))return Ee}else if(t.type===zt.ATTRIBUTE&&n.getAttribute(r)===e+"")return Ee;return U9(t),e}});function y2(t,e){return new CustomEvent("query-dependency",{detail:{name:t,setter:e},bubbles:!0})}function q9(t){if(!(t!=null&&t.length))throw new Error("Can't nest an empty array!");const e=v2(null);for(const n of t){if(!(n!=null&&n.length))throw new Error("Cannot nest, element has no path!");let r=e;for(const i of n){let o=r.children.find(a=>a.item===i);o||(o=v2(i),r.children.push(o)),r=o}}return e.children[0]}const v2=t=>({item:t,children:[]}),Wf=new Set;function Xf(t){const n=t.currentTarget.parentNode,r=!n.classList.contains("show");for(const i of Wf)i.classList.remove("show"),document.body.classList.remove(Un);return Wf.clear(),t.stopPropagation(),r?(Wf.add(n),n.classList.add("show"),document.body.classList.add(Un),window.addEventListener("click",i=>{n.classList.contains("show")&&(n.classList.remove("show"),document.body.classList.remove(Un),i.preventDefault())},{once:!0})):window.dispatchEvent(new MouseEvent("click")),r}const Zf={visibilities:{}},No=Py({name:"viewSettings",initialState:Zf,reducers:{setVisibility:(t,e)=>{t.visibilities[e.payload.name]=e.payload.visibility},restoreDefaultVisibility:(t,e)=>{delete t.visibilities[e.payload]},restoreDefaultVisibilities:(t,e)=>Zf,setViewSettings:(t,e)=>T(T({},Zf),e.payload?e.payload:{})}});class K9 extends Ft{constructor(){super(),this.app=void 0,this.nestedPaths=void 0,this.sateWatcher=zs(e=>e.viewSettings,(e,n)=>this.requestUpdate()),this.style.display="none"}connectedCallback(){super.connectedCallback(),this.dispatchEvent(y2("app",e=>{this.app=e})),this.app.addInitializationListener(()=>{this.updateToggles(),this.requestUpdate(),this.style.display=this.nestedPaths.children.length?"block":"none"}),this.app.storeHelper.subscribe(this.sateWatcher)}disconnectedCallback(){this.app.storeHelper.unsubscribe(this.sateWatcher)}createRenderRoot(){return this}toolButtonClicked(e){Xf(e)}handleCheckboxClick(e,n){const r=e.target.checked;this.app.storeHelper.dispatch(r!=n.isVisibleInSpec()?No.actions.setVisibility({name:n.name,visibility:r}):No.actions.restoreDefaultVisibility(n.name)),this.requestUpdate(),e.stopPropagation()}handleResetClick(){this.app.storeHelper.dispatch(No.actions.restoreDefaultVisibilities())}updateToggles(){const e=this.app.genomeSpy.viewRoot;if(!e)return;const n=[];e.visit(i=>{if(i instanceof ag)return rs;n.push(i)});const r=n.filter(i=>C8(i.name)&&b2(i)).map(i=>[...i.getAncestors()].reverse());this.nestedPaths=q9(r)}renderToggles(){const e=this.getVisibilities(),n=this.app.genomeSpy.viewRoot,r=w8(n);var i=(a,s=!0)=>a.length?D`<ul class="${s?null:"unchecked"}">${a.map(o)}</ul>`:G,o=a=>{var u,f;const s=a.item,c=(u=e[s.name])!=null?u:s.isVisibleInSpec();return D`<li><label class="checkbox"><input type="checkbox" ?disabled="${!r.has(s.name)||!b2(s)}" .checked="${Z9(c)}" @change="${l=>this.handleCheckboxClick(l,s)}">${(f=s.getTitleText())!=null?f:s.name}</label> ${i(a.children,c)}</li>`};return i(this.nestedPaths.children)}render(){const e=!Object.keys(this.getVisibilities()).length;return D`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Toggle view visibilities" @click="${this.toolButtonClicked.bind(this)}">${ne(E5).node[0]}</button><ul class="gs-dropdown-menu" @click="${n=>n.stopPropagation()}"><li class="menu-header">View visibility</li><li>${e?D`<span class="disabled-item">Restore defaults</span>`:D`<a @click="${()=>this.handleResetClick()}">Restore defaults</a>`}</li><li class="menu-divider"></li><li>${this.nestedPaths?this.renderToggles():G}</li></ul></div>`}getVisibilities(){return this.app.storeHelper.state.viewSettings.visibilities}}const b2=t=>{var e;return(e=t.spec.configurableVisibility)!=null?e:!(t.parent&&t.parent instanceof Ot)};customElements.define("genome-spy-view-visibility",K9);class J9 extends Ft{constructor(){super(),this.provenance=void 0}connectedCallback(){super.connectedCallback(),this.provenance.storeHelper.subscribe(()=>{this.requestUpdate()})}disconnectedCallback(){super.disconnectedCallback()}createRenderRoot(){return this}render(){const e=(r,i)=>{var a,s;const o=this.provenance.getActionInfo(r);return o?D`<li><a @click="${()=>this.provenance.activateState(i)}" class="${i==this.provenance.getCurrentIndex()?"active":""}">${ne((a=o.icon)!=null?a:Gg).node[0]} ${(s=o.provenanceTitle)!=null?s:o.title}</a></li>`:G},n=()=>D`<div class="dropdown provenance-dropdown"><button class="tool-btn" title="Provenance" ?disabled="${this.provenance.isEmpty()}" @click="${Xf}">${ne(m5).node[0]}</button><ol class="gs-dropdown-menu provenance-menu">${this.provenance.getFullActionHistory().map(e)}</ol></div>`;return D`<div class="btn-group" @click="${r=>r.stopPropagation()}"><button class="tool-btn" title="Backtrack samples (B)" ?disabled="${!this.provenance.isUndoable()}" @click="${()=>this.provenance.undo()}">${ne(n5).node[0]}</button> ${n()} <button class="tool-btn" title="Redo" ?disabled="${!this.provenance.isRedoable()}" @click="${()=>this.provenance.redo()}">${ne(i5).node[0]}</button></div>`}}customElements.define("genome-spy-provenance-buttons",J9);/**
2058
2160
  * @license
2059
2161
  * Copyright 2021 Google LLC
2060
2162
  * SPDX-License-Identifier: BSD-3-Clause
2061
- */class PI{constructor(e){this.U=e}disconnect(){this.U=void 0}reconnect(e){this.U=e}deref(){return this.U}}class FI{constructor(){this.Y=void 0,this.q=void 0}get(){return this.Y}pause(){var e;(e=this.Y)!==null&&e!==void 0||(this.Y=new Promise(n=>this.q=n))}resume(){var e;(e=this.q)===null||e===void 0||e.call(this),this.Y=this.q=void 0}}/**
2163
+ */class $9{constructor(e){this.U=e}disconnect(){this.U=void 0}reconnect(e){this.U=e}deref(){return this.U}}class ek{constructor(){this.Y=void 0,this.q=void 0}get(){return this.Y}pause(){var e;(e=this.Y)!==null&&e!==void 0||(this.Y=new Promise(n=>this.q=n))}resume(){var e;(e=this.q)===null||e===void 0||e.call(this),this.Y=this.q=void 0}}/**
2062
2164
  * @license
2063
2165
  * Copyright 2017 Google LLC
2064
2166
  * SPDX-License-Identifier: BSD-3-Clause
2065
- */const Z1=t=>!xI(t)&&typeof t.then=="function";class zI extends H1{constructor(){super(...arguments),this._$Cft=1073741823,this._$Cwt=[],this._$CG=new PI(this),this._$CK=new FI}render(...e){var n;return(n=e.find(r=>!Z1(r)))!==null&&n!==void 0?n:xe}update(e,n){const r=this._$Cwt;let i=r.length;this._$Cwt=n;const o=this._$CG,s=this._$CK;this.isConnected||this.disconnected();for(let a=0;a<n.length&&!(a>this._$Cft);a++){const c=n[a];if(!Z1(c))return this._$Cft=a,c;a<i&&c===r[a]||(this._$Cft=1073741823,i=0,Promise.resolve(c).then(async u=>{for(;s.get();)await s.get();const f=o.deref();if(f!==void 0){const l=f._$Cwt.indexOf(c);l>-1&&l<f._$Cft&&(f._$Cft=l,f.setValue(u))}}))}return xe}disconnected(){this._$CG.disconnect(),this._$CK.pause()}reconnected(){this._$CG.reconnect(this),this._$CK.resume()}}const RI=br(zI);var UI={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function K1(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function $i(t){return(t+"").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Kl(t,e){var n,r,i,o,s,a=/((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm,c=[],u="",f=e||{},l=0;function h(p){var g=UI[p[1]||""],m=c[c.length-1]==p;return g?g[1]?(m?c.pop():c.push(p),g[0|m]):g[0]:p}function d(){for(var p="";c.length;)p+=h(c[c.length-1]);return p}for(t=t.replace(/^\[(.+?)\]:\s*(.+)$/gm,function(p,g,m){return f[g.toLowerCase()]=m,""}).replace(/^\n+|\n+$/g,"");i=a.exec(t);)r=t.substring(l,i.index),l=a.lastIndex,n=i[0],r.match(/[^\\](\\\\)*\\$/)||((s=i[3]||i[4])?n='<pre class="code '+(i[4]?"poetry":i[2].toLowerCase())+'"><code'+(i[2]?' class="language-'+i[2].toLowerCase()+'"':"")+">"+K1($i(s).replace(/^\n+|\n+$/g,""))+"</code></pre>":(s=i[6])?(s.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=Kl(K1(i[5].replace(/^\s*[>*+.-]/gm,""))),s==">"?s="blockquote":(s=s.match(/\./)?"ol":"ul",o=o.replace(/^(.*)(\n|$)/gm,"<li>$1</li>")),n="<"+s+">"+o+"</"+s+">"):i[8]?n='<img src="'+$i(i[8])+'" alt="'+$i(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+$i(i[11]||f[r.toLowerCase()])+'">'),n=d()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(s="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+Kl(i[12]||i[15],f)+"</"+s+">":i[16]?n="<code>"+$i(i[16])+"</code>":(i[17]||i[1])&&(n=h(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+d()).replace(/^\n+|\n+$/g,"")}function J1(t,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(t)||t.startsWith("/")?t:(e.endsWith("/")||(e+="/"),e+t)}function jI(t,e={}){const n=Kl(t),r=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${n}</div></body></html>`,"text/html");r.normalize(),$1(r.body);for(const o of r.querySelectorAll("a[href]"))o.setAttribute("target","blank"),o.setAttribute("rel","noopener noreferrer"),o.setAttribute("href",J1(o.getAttribute("href"),e.baseUrl));for(const o of r.querySelectorAll("img[src]"))o.setAttribute("src",J1(o.getAttribute("src"),e.baseUrl));const i=r.body.removeChild(r.querySelector("body > div"));return i.className="snarkdown",i}function $1(t){if(t.nodeType!==3){if(t.nodeType!==1||/^(script|iframe|object|embed|svg)$/i.test(t.tagName))return t.remove();for(let e=t.attributes.length;e--;){const n=t.attributes[e].name;/^(class|id|name|href|src|alt|align|valign|(on[a-z]+))$/i.test(n)||t.attributes.removeNamedItem(n)}for(let e=t.childNodes.length;e--;)$1(t.childNodes[e])}}function GI(t){t.stopPropagation(),t.preventDefault();const n=t.target.parentElement,r=n.parentElement,o=r.parentElement.querySelector(".panes"),s=[...r.children].findIndex(a=>a==n);for(const a of r.children)a.classList.remove("active-tab");for(const a of o.children)a.classList.remove("active-tab");r.children.item(s).classList.add("active-tab"),o.children.item(s).classList.add("active-tab")}var Jl={exports:{}};(function(t){var e=function(){var n=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",o={};function s(c,u){if(!o[c]){o[c]={};for(var f=0;f<c.length;f++)o[c][c.charAt(f)]=f}return o[c][u]}var a={compressToBase64:function(c){if(c==null)return"";var u=a._compress(c,6,function(f){return r.charAt(f)});switch(u.length%4){default:case 0:return u;case 1:return u+"===";case 2:return u+"==";case 3:return u+"="}},decompressFromBase64:function(c){return c==null?"":c==""?null:a._decompress(c.length,32,function(u){return s(r,c.charAt(u))})},compressToUTF16:function(c){return c==null?"":a._compress(c,15,function(u){return n(u+32)})+" "},decompressFromUTF16:function(c){return c==null?"":c==""?null:a._decompress(c.length,16384,function(u){return c.charCodeAt(u)-32})},compressToUint8Array:function(c){for(var u=a.compress(c),f=new Uint8Array(u.length*2),l=0,h=u.length;l<h;l++){var d=u.charCodeAt(l);f[l*2]=d>>>8,f[l*2+1]=d%256}return f},decompressFromUint8Array:function(c){if(c==null)return a.decompress(c);for(var u=new Array(c.length/2),f=0,l=u.length;f<l;f++)u[f]=c[f*2]*256+c[f*2+1];var h=[];return u.forEach(function(d){h.push(n(d))}),a.decompress(h.join(""))},compressToEncodedURIComponent:function(c){return c==null?"":a._compress(c,6,function(u){return i.charAt(u)})},decompressFromEncodedURIComponent:function(c){return c==null?"":c==""?null:(c=c.replace(/ /g,"+"),a._decompress(c.length,32,function(u){return s(i,c.charAt(u))}))},compress:function(c){return a._compress(c,16,function(u){return n(u)})},_compress:function(c,u,f){if(c==null)return"";var l,h,d={},p={},g="",m="",y="",x=2,v=3,S=2,b=[],A=0,w=0,E;for(E=0;E<c.length;E+=1)if(g=c.charAt(E),Object.prototype.hasOwnProperty.call(d,g)||(d[g]=v++,p[g]=!0),m=y+g,Object.prototype.hasOwnProperty.call(d,m))y=m;else{if(Object.prototype.hasOwnProperty.call(p,y)){if(y.charCodeAt(0)<256){for(l=0;l<S;l++)A=A<<1,w==u-1?(w=0,b.push(f(A)),A=0):w++;for(h=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}else{for(h=1,l=0;l<S;l++)A=A<<1|h,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=0;for(h=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}x--,x==0&&(x=Math.pow(2,S),S++),delete p[y]}else for(h=d[y],l=0;l<S;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1;x--,x==0&&(x=Math.pow(2,S),S++),d[m]=v++,y=String(g)}if(y!==""){if(Object.prototype.hasOwnProperty.call(p,y)){if(y.charCodeAt(0)<256){for(l=0;l<S;l++)A=A<<1,w==u-1?(w=0,b.push(f(A)),A=0):w++;for(h=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}else{for(h=1,l=0;l<S;l++)A=A<<1|h,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=0;for(h=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}x--,x==0&&(x=Math.pow(2,S),S++),delete p[y]}else for(h=d[y],l=0;l<S;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1;x--,x==0&&(x=Math.pow(2,S),S++)}for(h=2,l=0;l<S;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1;for(;;)if(A=A<<1,w==u-1){b.push(f(A));break}else w++;return b.join("")},decompress:function(c){return c==null?"":c==""?null:a._decompress(c.length,32768,function(u){return c.charCodeAt(u)})},_decompress:function(c,u,f){var l=[],h=4,d=4,p=3,g="",m=[],y,x,v,S,b,A,w,E={val:f(0),position:u,index:1};for(y=0;y<3;y+=1)l[y]=y;for(v=0,b=Math.pow(2,2),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;switch(v){case 0:for(v=0,b=Math.pow(2,8),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;w=n(v);break;case 1:for(v=0,b=Math.pow(2,16),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;w=n(v);break;case 2:return""}for(l[3]=w,x=w,m.push(w);;){if(E.index>c)return"";for(v=0,b=Math.pow(2,p),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;switch(w=v){case 0:for(v=0,b=Math.pow(2,8),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;l[d++]=n(v),w=d-1,h--;break;case 1:for(v=0,b=Math.pow(2,16),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;l[d++]=n(v),w=d-1,h--;break;case 2:return m.join("")}if(h==0&&(h=Math.pow(2,p),p++),l[w])g=l[w];else if(w===d)g=x+x.charAt(0);else return null;m.push(g),l[d++]=x+g.charAt(0),h--,x=g,h==0&&(h=Math.pow(2,p),p++)}}};return a}();t!=null&&(t.exports=e)})(Jl);function HI(){const t=typeof process!="undefined"?require("util").TextEncoder:TextEncoder;return new t}let Js;function QI(){let t,e=[];for(let n=0;n<256;n++){t=n;for(let r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;e[n]=t}return e}function VI(t){Js!=null||(Js=QI());let e=-1;const n=HI().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^Js[(e^n[r])&255];return(e^-1)>>>0}function ey(t){return("00000000"+VI(t).toString(16)).slice(-8)}function ty(t){const e=Jl.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+ey(e)}function _I(t){if(!t||t.length<10)throw new Error("The state string in the URL is too short.");const e=t.slice(1,-8),n=t.slice(-8);if(ey(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(Jl.exports.decompressFromEncodedURIComponent(e))}let Ut;async function ny(t,e){var n;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch(Ji.actions.setViewSettings(t.viewSettings));const r=[];for(const[i,o]of Object.entries((n=t.scaleDomains)!=null?n:{})){const s=e.genomeSpy.getNamedScaleResolutions().get(i);s?r.push(s.zoomTo(o)):console.warn(`Cannot restore scale domain. Unknown name: ${i}`)}await Promise.all(r)}catch(r){console.error(r),st(M`<p>Cannot restore the state:</p><p>${r}</p>`),e.provenance.activateState(0)}}async function $s(t,e,n={}){await ny(t,e),(Ut||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await YI(t,e,n)}async function YI(t,e,n={}){Ut!=null||(Ut=Qi("tour")),await WI(t,e,n)}async function WI(t,e,n){var g;const r=n.database,i=r?await r.getNames():[],o=i.indexOf(t.name),s=r?` ${o+1} of ${i.length}`:"",a=`${n.mode=="shared"?"Shared bookmark":"Bookmark"}${s}: ${(g=t.name)!=null?g:"Unnamed"}`,c=t.notes?jI(t.notes,{baseUrl:e.genomeSpy.spec.baseUrl}):M`<span class="no-notes">No notes provided</span>`,u=()=>{Ut==null||Ut.close(),Ut=void 0},f=async m=>{const y=await r.get(i[m]);$s(y,e,n)},l=async()=>{if(await $l(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(m){console.warn(m),st(`Cannot import bookmark: ${m}`)}},h=M`<button @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?M`<button @click="${l}">${te(Xg).node[0]} Import bookmark</button>`:R} ${r?M`<button @click="${()=>f(o-1)}" ?disabled="${o<=0}">${te(p8).node[0]} Previous</button> <button @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${te(g8).node[0]}</button>`:R}`,p=M`<button title="Collapse" class="collapse" @click="${m=>m.target.closest(".gs-modal").classList.toggle("collapsed")}">${te(r8).node[0]}</button><div class="modal-title">${a}</div><div class="modal-body markdown" style="max-width:600px">${c}</div><div class="modal-buttons">${h}</div>`;Xe(p,Ut.content)}function ry(t){const e=JSON.stringify(t,void 0,2),n=window.location,r=n.origin+n.pathname+n.search+ty(t);st(M`<div class="gs-tabs" style="width:600px"><ul class="tabs" @click="${GI}"><li class="active-tab"><button>URL</button></li><li><button>JSON</button></li></ul><div class="panes"><div class="gs-form-group active-tab"><label for="bookmark-url">Here's a link for you:</label><div class="copy-url"><input id="bookmark-url" type="text" .value="${r}"> <button @click="${o=>navigator.clipboard.writeText(r).then(()=>o.target.dispatchEvent(J8())).catch(()=>st("Failed to copy!"))}">Copy</button></div><small>The bookmark URL contains all the bookmarked data, including the possible notes, which will be shown when the link is opened.</small></div><div class="gs-form-group"><textarea id="bookmark-json" style="height:250px">
2066
- ${e}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div></div>`,{title:"Share a bookmark",okLabel:"Close"})}function $l(t,e,n){const r={add:"Add bookmark",edit:"Edit bookmark",share:"Share the current view state as a bookmark"}[n],i=(c,u)=>{var f,l;return M`<div class="modal-title">${r}</div><div class="modal-body" style="width:500px">${n=="edit"?M`<div class="gs-alert warning">${te(s8).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:R} ${n=="share"?M`<div class="gs-alert info">${te(Zg).node[0]} <span>You can add an optional title and notes, which will be shown to the recipient when the bookmark link is opened.</span></div>`:R}<div class="gs-form-group"><label for="bookmark-title">Title</label> <input id="bookmark-title" type="text" ?required="${n=="add"||n=="edit"}" .value="${(f=e.name)!=null?f:""}" .placeholder="${n=="share"?"Add an optional title":""}" @change="${h=>{e.name=iy(h.target.value)}}"></div><div class="gs-form-group"><label for="bookmark-notes">Notes</label> <textarea id="bookmark-notes" rows="4" .value="${(l=e.notes)!=null?l:""}" .placeholder="${n=="share"?"... and notes":""}" @change="${h=>{e.notes=iy(h.target.value)}}"></textarea> <small>Notes will be shown when the bookmark is loaded. You can use <a href="https://www.markdownguide.org/basic-syntax/">markdown</a> for formatting.</small></div></div><div class="modal-buttons"><button class="btn-cancel" @click="${c}">Cancel</button> <button class="btn-primary" @click="${u}">${n=="share"?M`${te(nl).node[0]} Create a link`:"Save"}</button></div>`},o=e.name,s=()=>!!e.name,a=Qi();return new Promise(c=>{const u=()=>{a.close(),c(!1)},f=async()=>{if(!s()){st("Name is missing!",{title:"Error"});return}let h=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(h=await st(M`A bookmark with the name <em>${e.name}</em> already exists. It will be overwritten.`,{title:"Bookmark already exists",cancelButton:!0})),h&&(a.close(),c(!0))},l=()=>{a.close(),c(!0)};Xe(i(u,n=="share"?l:f),a.content),a.content.querySelector("#bookmark-title").focus()})}function iy(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class XI extends kt{constructor(){super();this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(W1("app",e=>{this.app=e}))}createRenderRoot(){return this}_createBookmarkWithCurrentState(){const e={name:void 0,timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}},n=this.app.storeHelper.state.viewSettings;Object.keys(n.visibilities).length&&(e.viewSettings=n);for(const[r,i]of this.app.genomeSpy.getNamedScaleResolutions().entries())i.isZoomable()&&(e.scaleDomains[r]=i.getComplexDomain());return e}async _shareCurrentState(){const e=this._createBookmarkWithCurrentState();await $l(void 0,e,"share")&&ry(e)}async _addBookmark(e,n){var s,a;const r=n?await e.get(n):void 0,i=!!r,o=this._createBookmarkWithCurrentState();if((s=o.name)!=null||(o.name=r==null?void 0:r.name),(a=o.notes)!=null||(o.notes=r==null?void 0:r.notes),await $l(e,o,i?"edit":"add"))try{await e.put(o,r==null?void 0:r.name),this.requestUpdate()}catch(c){st(`${c}`,{title:"Cannot save the bookmark!"})}}async _loadBookmark(e,n){const r=await e.get(n);r&&$s(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li");Hm({items:[{label:"Edit and replace...",icon:u8,callback:()=>this._addBookmark(e,n)},{label:"Delete",icon:m8,callback:()=>st(M`The bookmark <em>${n}</em> will be deleted.`,{title:"Are you sure?",cancelButton:!0}).then(async a=>{a&&(await e.delete(n),this.requestUpdate())})},{label:"Share...",icon:nl,callback:async()=>ry(await e.get(n))}]},i,"right-start")}async _makeBookmarkMenuItems(e,n){const i=(await e.getNames()).map(o=>({label:o,callback:()=>this._loadBookmark(e,o),ellipsisCallback:e.isReadonly()?void 0:s=>this._createContextMenu(e,o,s)}));return i.length?[{type:"divider"},{label:n,type:"header"},...i].map(o=>jm(o)):R}_getBookmarks(){const e=(n,r)=>n?RI(this._makeBookmarkMenuItems(n,r),M`Loading...`):R;return[e(this.app.globalBookmarkDatabase,"Global bookmarks"),e(this.app.localBookmarkDatabase,"Local bookmarks")]}render(){const e=this.app.localBookmarkDatabase,n=e?M`<li><a @click="${()=>this._addBookmark(e)}">Add bookmark...</a></li>`:R,r=e||this.app.globalBookmarkDatabase?M`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${i=>{ql(i)&&this.requestUpdate()}}">${te(Xg).node[0]}</button><ul class="gs-dropdown-menu">${n} ${this._getBookmarks()}</ul></div>`:R;return M`<div class="btn-group">${r} <button class="tool-btn" title="Share" @click="${()=>this._shareCurrentState()}">${te(nl).node[0]}</button></div>`}}customElements.define("genome-spy-bookmark-button",XI);class qI extends kt{constructor(){super();this.app=void 0,this.appInitialized=!1}static get properties(){return{app:{type:Object},appInitialized:{type:Boolean}}}createRenderRoot(){return this}_getToolButtons(){const e=this.app.getSampleView(),n=this.app.provenance,r=[];n.isEnabled()&&r.push(M`<genome-spy-provenance-buttons .provenance="${n}"></genome-spy-provenance-buttons>`),r.push(M`<genome-spy-view-visibility></genome-spy-view-visibility>`),e&&r.push(M`<button class="tool-btn" title="Peek (E)" @click="${()=>e._togglePeek()}">${te(t8).node[0]}</button>`),r.push(M`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const i=this.app.config.description?qe(this.app.config.description):[];return i.length>1&&r.push(M`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>st(M`${i.slice(1).map(o=>M`<p>${o}</p>`)}`,{title:i[0]})}">${te(Zg).node[0]}</button>`),i.length>0&&r.push(M`<span class="vis-title">${i[0]}</span>`),r.push(M`<span class="spacer"></span> ${this.app.appContainer.requestFullscreen?M`<button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${te(a8).node[0]}</button>`:R} <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${te(l8).node[0]}</button>`),r}render(){const e=this.app.genomeSpy;return M`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${Y1}"> </a>${this.appInitialized&&_1(e.viewRoot)?M`<genome-spy-search-field .genomeSpy="${e}"></genome-spy-search-field>`:R} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",qI);class ZI{constructor(e){this.storeHelper=e,this._reducers={},this.actionInfoSources=[],this._reducer=void 0,e.addReducer("provenance",(n,r)=>this._reducer?this._reducer(n,r):n!=null?n:{})}addReducer(e,n){this._reducers[e]=n;const r=o=>Object.keys(this._reducers).some(s=>o.type.startsWith(s)),i=(o,s)=>r(s)?s:o!=null?o:null;this._reducer=v6(zl(F(T({},this._reducers),{lastAction:i})),{ignoreInitialState:!0,filter:r}),this.storeHelper.dispatch({type:"@@redux/REPLACE"+Math.random().toString(36).substring(7).split("").join(".")})}get _storeState(){return this.storeHelper.store.getState()}get _provenanceState(){return this._storeState.provenance}isEnabled(){return!!this.getPresentState()}getPresentState(){return this._provenanceState.present}addActionInfoSource(e){this.actionInfoSources.push(e)}getActionInfo(e){for(const n of this.actionInfoSources){const r=n(e);if(r)return r}}dispatchBookmark(e){this.storeHelper.dispatch([...this.isUndoable()?[sn.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(sn.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(sn.ActionCreators.undo())}isAtInitialState(){return!this.isUndoable()}isEmpty(){const e=this._provenanceState;return!this.isEnabled()||e.past.length+e.future.length<=0}activateState(e){const n=this.getCurrentIndex();e<n?this.storeHelper.dispatch(sn.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(sn.ActionCreators.jumpToFuture(e-n-1))}getCurrentIndex(){var e;return(e=this._provenanceState.past)==null?void 0:e.length}getActionHistory(){const e=this._provenanceState;return e.present&&[...e.past,e.present].map(n=>n.lastAction)}getFullActionHistory(){const e=this._provenanceState;return[...e.past,e.present,...e.future].map(n=>n.lastAction)}getBookmarkableActionHistory(){var e;return(e=this.getActionHistory())==null?void 0:e.slice(1)}}function*KI(t,e=n=>+n){const n=t.length,r=new ji,i=new Array(n).fill(0);for(const[s,a]of t.entries())a.length&&r.push(s,e(a[0]));let o=0;for(;(o=r.pop())!==void 0;){const s=t[o];let a=i[o];if(yield s[a++],a<s.length){const u=e(s[a]);r.push(o,u),i[o]=a}}}const JI="sampleCount";class $I extends se{constructor(e,n){super();this.view=n;const r=n.context.animator;for(const i of n.getAncestors())i instanceof jl&&(this.provenance=i.provenance,this.provenance.storeHelper.subscribe(o=>r.requestTransition(()=>{this.reset(),this._mergeAndPropagate(Ul(o)),this.complete()})));if(!this.provenance)throw new Error("No SampleView was found!");this.contextObject=void 0}initialize(){this.contextObject=Object.create(super.getGlobalObject());const e=this.view.parent.getEncoding().x;if(Mn(e))this.xAccessor=Z(e.field);else throw new Error("Crash!")}handle(e){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof Ui)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){this._mergeAndPropagate(this.provenance.getPresentState()[Mr]),super.complete()}_mergeAndPropagate(e){const n=[...T1(e.rootGroup)].filter(r=>M1(pe(r)));for(const[r,i]of n.entries()){const o=pe(i);if(M1(o)){this.contextObject[JI]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const s=o.samples,a=this._getCollector(),c=KI(s.map(u=>{var f;return(f=a.facetBatches.get([u]))!=null?f:[]}),this.xAccessor);for(const u of c)this._propagate(u)}}this._updateScales()}setParent(e){super.setParent(e)}_updateScales(){const e=new Set;this.view.visit(n=>{if(n instanceof Pe&&n.mark.encoding.y){const r=n.getScaleResolution("y");r&&e.add(r)}});for(const n of e)n.reconfigure()}}var eT="BATCHING_REDUCER.BATCH";function tT(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:eT;return{type:e,meta:{batch:!0},payload:t}}function nT(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class rT{constructor(e){this._reducers=e!=null?e:{},this.store=P5({reducer:{}}),this._listeners=new Set,this.store.subscribe(()=>{const n=this.store.getState();for(const r of this._listeners)r(n)})}get state(){return this.store.getState()}addReducer(e,n){this._reducers[e]=n,this.store.replaceReducer(nT(zl(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(tT(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class iT extends U1{constructor(e){super();this.bookmarks=e,this.names=e.map(n=>n.name)}async getNames(){return this.names}async get(e){return this.bookmarks.find(n=>n.name==e)}}Ig.mergeFacets=$I;class oy{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new rT,this.storeHelper.addReducer("viewSettings",Ji.reducer),this.provenance=new ZI(this.storeHelper),this._initializationListeners=[],this.toolbarRef=Q1(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new bI(n.specId):void 0,this.globalBookmarkDatabase=void 0,Xe(M`<div class="genome-spy-app"><genome-spy-toolbar ${V1(i.toolbarRef)} .app="${i}"></genome-spy-toolbar><div class="genome-spy-container"></div></div>`,i.appContainer),i.appContainer.querySelector(".genome-spy-app").addEventListener("query-dependency",a=>{a.detail.name=="app"&&(a.detail.setter(i),a.stopPropagation())});const o=a=>this.appContainer.getElementsByClassName(a)[0];this.genomeSpy=new Gg(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(aI,(a,c,u,f)=>new jl(a,c,u,f,this.provenance));const s=this.genomeSpy.viewVisibilityPredicate;this.genomeSpy.viewVisibilityPredicate=a=>{var c,u;return(u=(c=this.storeHelper.state.viewSettings)==null?void 0:c.visibilities[a.name])!=null?u:s(a)}}addInitializationListener(e){this._initializationListeners?this._initializationListeners.push(e):e()}toggleFullScreen(){document.fullscreenElement?document.exitFullscreen&&document.exitFullscreen():this.appContainer.requestFullscreen()}isFullPage(){return this.appContainer==document.body}async launch(){var s,a;const e=((s=this.config.bookmarks)==null?void 0:s.remote)?_r({baseURL:this.config.baseUrl}).load(this.config.bookmarks.remote.url).then(c=>Promise.resolve(JSON.parse(c))):Promise.resolve([]);if(!await this.genomeSpy.launch())return;this.storeHelper.subscribe(Zs(c=>{var u;return(u=c.viewSettings)==null?void 0:u.visibilities},(c,u)=>{var l,h;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(h=(l=this.getSampleView())==null?void 0:l.summaryViews)==null||h._invalidateCacheByPrefix("size","self");const f=this.genomeSpy.viewRoot.context;f.requestLayoutReflow(),f.animator.requestRender()},this.storeHelper.store.getState()));try{const c=await e;c.length&&(this.globalBookmarkDatabase=new iT(c))}catch(c){throw new Error(`Cannot load remote bookmarks: ${c}`)}await this._restoreStateFromUrlOrBookmark(),this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl(),!1);const r=Is(()=>this._updateStateToUrl(),500,!1);for(const[,c]of this.genomeSpy.getNamedScaleResolutions())c.isZoomable()&&c.addEventListener("domain",r);const i=this.toolbarRef.value;i.appInitialized=!0;const o=qe((a=this.genomeSpy.spec.description)!=null?a:[]);this.isFullPage()&&o.length>0&&(document.title="GenomeSpy - "+o);for(const c of this._initializationListeners)c();this._initializationListeners=void 0}async _restoreStateFromUrlOrBookmark(){var i,o;const e=this._restoreStateFromUrl(),n=(i=this.config.bookmarks)==null?void 0:i.remote,r=this.globalBookmarkDatabase;if(!e&&n&&r){const s=(o=n.initialBookmark)!=null?o:n.tour&&(await r.getNames())[0];if(s){const a=await r.get(s);if(!a)throw new Error(`No such bookmark: ${s}`);n.tour?await $s(a,this,{mode:"tour",database:r}):await ny(a,this)}}}_updateStateToUrl(){const e={actions:[],scaleDomains:{}},n=this.provenance.getBookmarkableActionHistory();(n==null?void 0:n.length)&&(e.actions=n);for(const[o,s]of this.genomeSpy.getNamedScaleResolutions().entries())s.isZoomed()||(e.scaleDomains[o]=s.getComplexDomain());const r=this.storeHelper.state.viewSettings;Object.keys(r.visibilities).length&&(e.viewSettings=r);const i=e.actions.length||Object.keys(e.scaleDomains).length||e.viewSettings?ty(e):"";window.history.replaceState(void 0,document.title,window.location.pathname+window.location.search+i)}_restoreStateFromUrl(){const e=window.location.hash;if(e&&e.length>0)try{const n=_I(e);return $s(n,this,{mode:"shared"}),!0}catch(n){console.error(n),st(M`<p>Cannot restore the state:</p><p>${n}</p>`)}return!1}_configureContainer(){this.isFullPage()?(this.appContainer.style.margin="0",this.appContainer.style.padding="0",this.appContainer.style.overflow="hidden",oT(ZM)):this.appContainer.style.position="relative"}getSampleView(){var n;if(!((n=this.genomeSpy)==null?void 0:n.viewRoot))return;let e;return this.genomeSpy.viewRoot.visit(r=>{if(r instanceof jl)return e=r,kn}),e}}function oT(t){const e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function sT(t,e,n={}){var o,s,a;let r;if(oe(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 c=ze(e)?e:await sy(e);(o=c.baseUrl)!=null||(c.baseUrl=""),(s=c.width)!=null||(c.width="container"),(a=c.padding)!=null||(c.padding=10);const u=new oy(r,c,n);i=u.genomeSpy,aT(i,n),await u.launch()}catch(c){r.innerText=c.toString(),console.error(c)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(c,u){const f=i._eventListeners;let l=f.get(c);l||(l=new Set,f.set(c,l)),l.add(u)},removeEventListener(c,u){var l;(l=i._eventListeners.get(c))==null||l.delete(u)},getScaleResolutionByName(c){return i.getNamedScaleResolutions().get(c)}}}function aT(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function sy(t){let e;try{e=JSON.parse(await _r().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}Y.GenomeSpy=Gg,Y.GenomeSpyApp=oy,Y.embed=sT,Y.html=M,Y.icon=Y1,Y.loadSpec=sy,Object.defineProperty(Y,"__esModule",{value:!0}),Y[Symbol.toStringTag]="Module"});
2167
+ */const A2=t=>!R9(t)&&typeof t.then=="function";class tk extends d2{constructor(){super(...arguments),this._$Cwt=1073741823,this._$Cyt=[],this._$CG=new $9(this),this._$CK=new ek}render(...e){var n;return(n=e.find(r=>!A2(r)))!==null&&n!==void 0?n:Ee}update(e,n){const r=this._$Cyt;let i=r.length;this._$Cyt=n;const o=this._$CG,a=this._$CK;this.isConnected||this.disconnected();for(let s=0;s<n.length&&!(s>this._$Cwt);s++){const c=n[s];if(!A2(c))return this._$Cwt=s,c;s<i&&c===r[s]||(this._$Cwt=1073741823,i=0,Promise.resolve(c).then(async u=>{for(;a.get();)await a.get();const f=o.deref();if(f!==void 0){const l=f._$Cyt.indexOf(c);l>-1&&l<f._$Cwt&&(f._$Cwt=l,f.setValue(u))}}))}return Ee}disconnected(){this._$CG.disconnect(),this._$CK.pause()}reconnected(){this._$CG.reconnect(this),this._$CK.resume()}}const nk=Hr(tk);var rk={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function x2(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function Lo(t){return(t+"").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function qf(t,e){var n,r,i,o,a,s=/((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm,c=[],u="",f=e||{},l=0;function d(p){var m=rk[p[1]||""],g=c[c.length-1]==p;return m?m[1]?(g?c.pop():c.push(p),m[0|g]):m[0]:p}function h(){for(var p="";c.length;)p+=d(c[c.length-1]);return p}for(t=t.replace(/^\[(.+?)\]:\s*(.+)$/gm,function(p,m,g){return f[m.toLowerCase()]=g,""}).replace(/^\n+|\n+$/g,"");i=s.exec(t);)r=t.substring(l,i.index),l=s.lastIndex,n=i[0],r.match(/[^\\](\\\\)*\\$/)||((a=i[3]||i[4])?n='<pre class="code '+(i[4]?"poetry":i[2].toLowerCase())+'"><code'+(i[2]?' class="language-'+i[2].toLowerCase()+'"':"")+">"+x2(Lo(a).replace(/^\n+|\n+$/g,""))+"</code></pre>":(a=i[6])?(a.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=qf(x2(i[5].replace(/^\s*[>*+.-]/gm,""))),a==">"?a="blockquote":(a=a.match(/\./)?"ol":"ul",o=o.replace(/^(.*)(\n|$)/gm,"<li>$1</li>")),n="<"+a+">"+o+"</"+a+">"):i[8]?n='<img src="'+Lo(i[8])+'" alt="'+Lo(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+Lo(i[11]||f[r.toLowerCase()])+'">'),n=h()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(a="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+qf(i[12]||i[15],f)+"</"+a+">":i[16]?n="<code>"+Lo(i[16])+"</code>":(i[17]||i[1])&&(n=d(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+h()).replace(/^\n+|\n+$/g,"")}function w2(t,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(t)||t.startsWith("/")?t:(e.endsWith("/")||(e+="/"),e+t)}function ik(t,e={}){const n=qf(t),r=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${n}</div></body></html>`,"text/html");r.normalize(),C2(r.body);for(const o of r.querySelectorAll("a[href]"))o.setAttribute("target","blank"),o.setAttribute("rel","noopener noreferrer"),o.setAttribute("href",w2(o.getAttribute("href"),e.baseUrl));for(const o of r.querySelectorAll("img[src]"))o.setAttribute("src",w2(o.getAttribute("src"),e.baseUrl));const i=r.body.removeChild(r.querySelector("body > div"));return i.className="snarkdown",i}function C2(t){if(t.nodeType!==3){if(t.nodeType!==1||/^(script|iframe|object|embed|svg)$/i.test(t.tagName))return t.remove();for(let e=t.attributes.length;e--;){const n=t.attributes[e].name;/^(class|id|name|href|src|alt|align|valign|(on[a-z]+))$/i.test(n)||t.attributes.removeNamedItem(n)}for(let e=t.childNodes.length;e--;)C2(t.childNodes[e])}}function ok(t){t.stopPropagation(),t.preventDefault();const n=t.target.parentElement,r=n.parentElement,o=r.parentElement.querySelector(".panes"),a=[...r.children].findIndex(s=>s==n);for(const s of r.children)s.classList.remove("active-tab");for(const s of o.children)s.classList.remove("active-tab");r.children.item(a).classList.add("active-tab"),o.children.item(a).classList.add("active-tab")}var Kf={exports:{}};(function(t){var e=function(){var n=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",o={};function a(c,u){if(!o[c]){o[c]={};for(var f=0;f<c.length;f++)o[c][c.charAt(f)]=f}return o[c][u]}var s={compressToBase64:function(c){if(c==null)return"";var u=s._compress(c,6,function(f){return r.charAt(f)});switch(u.length%4){default:case 0:return u;case 1:return u+"===";case 2:return u+"==";case 3:return u+"="}},decompressFromBase64:function(c){return c==null?"":c==""?null:s._decompress(c.length,32,function(u){return a(r,c.charAt(u))})},compressToUTF16:function(c){return c==null?"":s._compress(c,15,function(u){return n(u+32)})+" "},decompressFromUTF16:function(c){return c==null?"":c==""?null:s._decompress(c.length,16384,function(u){return c.charCodeAt(u)-32})},compressToUint8Array:function(c){for(var u=s.compress(c),f=new Uint8Array(u.length*2),l=0,d=u.length;l<d;l++){var h=u.charCodeAt(l);f[l*2]=h>>>8,f[l*2+1]=h%256}return f},decompressFromUint8Array:function(c){if(c==null)return s.decompress(c);for(var u=new Array(c.length/2),f=0,l=u.length;f<l;f++)u[f]=c[f*2]*256+c[f*2+1];var d=[];return u.forEach(function(h){d.push(n(h))}),s.decompress(d.join(""))},compressToEncodedURIComponent:function(c){return c==null?"":s._compress(c,6,function(u){return i.charAt(u)})},decompressFromEncodedURIComponent:function(c){return c==null?"":c==""?null:(c=c.replace(/ /g,"+"),s._decompress(c.length,32,function(u){return a(i,c.charAt(u))}))},compress:function(c){return s._compress(c,16,function(u){return n(u)})},_compress:function(c,u,f){if(c==null)return"";var l,d,h={},p={},m="",g="",y="",x=2,A=3,C=2,b=[],v=0,w=0,E;for(E=0;E<c.length;E+=1)if(m=c.charAt(E),Object.prototype.hasOwnProperty.call(h,m)||(h[m]=A++,p[m]=!0),g=y+m,Object.prototype.hasOwnProperty.call(h,g))y=g;else{if(Object.prototype.hasOwnProperty.call(p,y)){if(y.charCodeAt(0)<256){for(l=0;l<C;l++)v=v<<1,w==u-1?(w=0,b.push(f(v)),v=0):w++;for(d=y.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1}else{for(d=1,l=0;l<C;l++)v=v<<1|d,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=0;for(d=y.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1}x--,x==0&&(x=Math.pow(2,C),C++),delete p[y]}else for(d=h[y],l=0;l<C;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1;x--,x==0&&(x=Math.pow(2,C),C++),h[g]=A++,y=String(m)}if(y!==""){if(Object.prototype.hasOwnProperty.call(p,y)){if(y.charCodeAt(0)<256){for(l=0;l<C;l++)v=v<<1,w==u-1?(w=0,b.push(f(v)),v=0):w++;for(d=y.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1}else{for(d=1,l=0;l<C;l++)v=v<<1|d,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=0;for(d=y.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1}x--,x==0&&(x=Math.pow(2,C),C++),delete p[y]}else for(d=h[y],l=0;l<C;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1;x--,x==0&&(x=Math.pow(2,C),C++)}for(d=2,l=0;l<C;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1;for(;;)if(v=v<<1,w==u-1){b.push(f(v));break}else w++;return b.join("")},decompress:function(c){return c==null?"":c==""?null:s._decompress(c.length,32768,function(u){return c.charCodeAt(u)})},_decompress:function(c,u,f){var l=[],d=4,h=4,p=3,m="",g=[],y,x,A,C,b,v,w,E={val:f(0),position:u,index:1};for(y=0;y<3;y+=1)l[y]=y;for(A=0,b=Math.pow(2,2),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),A|=(C>0?1:0)*v,v<<=1;switch(A){case 0:for(A=0,b=Math.pow(2,8),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),A|=(C>0?1:0)*v,v<<=1;w=n(A);break;case 1:for(A=0,b=Math.pow(2,16),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),A|=(C>0?1:0)*v,v<<=1;w=n(A);break;case 2:return""}for(l[3]=w,x=w,g.push(w);;){if(E.index>c)return"";for(A=0,b=Math.pow(2,p),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),A|=(C>0?1:0)*v,v<<=1;switch(w=A){case 0:for(A=0,b=Math.pow(2,8),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),A|=(C>0?1:0)*v,v<<=1;l[h++]=n(A),w=h-1,d--;break;case 1:for(A=0,b=Math.pow(2,16),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),A|=(C>0?1:0)*v,v<<=1;l[h++]=n(A),w=h-1,d--;break;case 2:return g.join("")}if(d==0&&(d=Math.pow(2,p),p++),l[w])m=l[w];else if(w===h)m=x+x.charAt(0);else return null;g.push(m),l[h++]=x+m.charAt(0),d--,x=m,d==0&&(d=Math.pow(2,p),p++)}}};return s}();t!=null&&(t.exports=e)})(Kf);function ak(){const t=typeof process!="undefined"?require("util").TextEncoder:TextEncoder;return new t}let js;function sk(){let t,e=[];for(let n=0;n<256;n++){t=n;for(let r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;e[n]=t}return e}function ck(t){js!=null||(js=sk());let e=-1;const n=ak().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^js[(e^n[r])&255];return(e^-1)>>>0}function S2(t){return("00000000"+ck(t).toString(16)).slice(-8)}function E2(t){const e=Kf.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+S2(e)}function uk(t){if(!t||t.length<10)throw new Error("The state string in the URL is too short.");const e=t.slice(1,-8),n=t.slice(-8);if(S2(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(Kf.exports.decompressFromEncodedURIComponent(e))}let Vt;async function D2(t,e){var n;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch(No.actions.setViewSettings(t.viewSettings));const r=[];for(const[i,o]of Object.entries((n=t.scaleDomains)!=null?n:{})){const a=e.genomeSpy.getNamedScaleResolutions().get(i);a?r.push(a.zoomTo(o)):console.warn(`Cannot restore scale domain. Unknown name: ${i}`)}await Promise.all(r)}catch(r){console.error(r),ft(D`<p>Cannot restore the state:</p><p>${r}</p>`),e.provenance.activateState(0)}}async function Us(t,e,n={}){await D2(t,e),(Vt||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await lk(t,e,n)}async function lk(t,e,n={}){Vt!=null||(Vt=Wr("tour")),await fk(t,e,n)}async function fk(t,e,n){var m;const r=n.database,i=r?await r.getNames():[],o=i.indexOf(t.name),a=r?` ${o+1} of ${i.length}`:"",s=`${n.mode=="shared"?"Shared bookmark":"Bookmark"}${a}: ${(m=t.name)!=null?m:"Unnamed"}`,c=t.notes?ik(t.notes,{baseUrl:e.genomeSpy.spec.baseUrl}):D`<span class="no-notes">No notes provided</span>`,u=()=>{Vt==null||Vt.close(),Vt=void 0},f=async g=>{const y=await r.get(i[g]);Us(y,e,n)},l=async()=>{if(await Jf(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(g){console.warn(g),ft(`Cannot import bookmark: ${g}`)}},d=D`<button @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?D`<button @click="${l}">${ne(Ug).node[0]} Import bookmark</button>`:G} ${r?D`<button @click="${()=>f(o-1)}" ?disabled="${o<=0}">${ne(a5).node[0]} Previous</button> <button @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${ne(b5).node[0]}</button>`:G}`,p=D`<button title="Collapse" class="collapse" @click="${g=>g.target.closest(".gs-modal").classList.toggle("collapsed")}">${ne(c5).node[0]}</button><div class="modal-title">${s}</div><div class="modal-body markdown" style="max-width:600px">${c}</div><div class="modal-buttons">${d}</div>`;He(p,Vt.content)}function M2(t){const e=JSON.stringify(t,void 0,2),n=window.location,r=n.origin+n.pathname+n.search+E2(t);ft(D`<div class="gs-tabs" style="width:600px"><ul class="tabs" @click="${ok}"><li class="active-tab"><button>URL</button></li><li><button>JSON</button></li></ul><div class="panes"><div class="gs-form-group active-tab"><label for="bookmark-url">Here's a link for you:</label><div class="copy-url"><input id="bookmark-url" type="text" .value="${r}"> <button @click="${o=>navigator.clipboard.writeText(r).then(()=>o.target.dispatchEvent(f6())).catch(()=>ft("Failed to copy!"))}">Copy</button></div><small>The bookmark URL contains all the bookmarked data, including the possible notes, which will be shown when the link is opened.</small></div><div class="gs-form-group"><textarea id="bookmark-json" style="height:250px">
2168
+ ${e}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div></div>`,{title:"Share a bookmark",okLabel:"Close"})}function Jf(t,e,n){const r={add:"Add bookmark",edit:"Edit bookmark",share:"Share the current view state as a bookmark"}[n],i=(c,u)=>{var f,l;return D`<div class="modal-title">${r}</div><div class="modal-body" style="width:500px">${n=="edit"?D`<div class="gs-alert warning">${ne(l5).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:G} ${n=="share"?D`<div class="gs-alert info">${ne(Hg).node[0]} <span>You can add an optional title and notes, which will be shown to the recipient when the bookmark link is opened.</span></div>`:G}<div class="gs-form-group"><label for="bookmark-title">Title</label> <input id="bookmark-title" type="text" ?required="${n=="add"||n=="edit"}" .value="${(f=e.name)!=null?f:""}" .placeholder="${n=="share"?"Add an optional title":""}" @change="${d=>{e.name=T2(d.target.value)}}"></div><div class="gs-form-group"><label for="bookmark-notes">Notes</label> <textarea id="bookmark-notes" rows="4" .value="${(l=e.notes)!=null?l:""}" .placeholder="${n=="share"?"... and notes":""}" @change="${d=>{e.notes=T2(d.target.value)}}"></textarea> <small>Notes will be shown when the bookmark is loaded. You can use <a href="https://www.markdownguide.org/basic-syntax/">markdown</a> for formatting.</small></div></div><div class="modal-buttons"><button class="btn-cancel" @click="${c}">Cancel</button> <button class="btn-primary" @click="${u}">${n=="share"?D`${ne(Pl).node[0]} Create a link`:"Save"}</button></div>`},o=e.name,a=()=>!!e.name,s=Wr();return new Promise(c=>{const u=()=>{s.close(),c(!1)},f=async()=>{if(!a()){ft("Name is missing!",{title:"Error"});return}let d=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(d=await ft(D`A bookmark with the name <em>${e.name}</em> already exists. It will be overwritten.`,{title:"Bookmark already exists",cancelButton:!0})),d&&(s.close(),c(!0))},l=()=>{s.close(),c(!0)};He(i(u,n=="share"?l:f),s.content),s.content.querySelector("#bookmark-title").focus()})}function T2(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class dk extends Ft{constructor(){super(),this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(y2("app",e=>{this.app=e}))}createRenderRoot(){return this}_createBookmarkWithCurrentState(){const e={name:void 0,timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}},n=this.app.storeHelper.state.viewSettings;Object.keys(n.visibilities).length&&(e.viewSettings=n);for(const[r,i]of this.app.genomeSpy.getNamedScaleResolutions().entries())i.isZoomable()&&(e.scaleDomains[r]=i.getComplexDomain());return e}async _shareCurrentState(){const e=this._createBookmarkWithCurrentState();await Jf(void 0,e,"share")&&M2(e)}async _addBookmark(e,n){var a,s;const r=n?await e.get(n):void 0,i=!!r,o=this._createBookmarkWithCurrentState();if((a=o.name)!=null||(o.name=r==null?void 0:r.name),(s=o.notes)!=null||(o.notes=r==null?void 0:r.notes),await Jf(e,o,i?"edit":"add"))try{await e.put(o,r==null?void 0:r.name),this.requestUpdate()}catch(c){ft(`${c}`,{title:"Cannot save the bookmark!"})}}async _loadBookmark(e,n){const r=await e.get(n);r&&Us(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li");uy({items:[{label:"Edit and replace...",icon:C5,callback:()=>this._addBookmark(e,n)},{label:"Delete",icon:D5,callback:()=>ft(D`The bookmark <em>${n}</em> will be deleted.`,{title:"Are you sure?",cancelButton:!0}).then(async s=>{s&&(await e.delete(n),this.requestUpdate())})},{label:"Share...",icon:Pl,callback:async()=>M2(await e.get(n))}]},i,"right-start")}async _makeBookmarkMenuItems(e,n){const i=(await e.getNames()).map(o=>({label:o,callback:()=>this._loadBookmark(e,o),ellipsisCallback:e.isReadonly()?void 0:a=>this._createContextMenu(e,o,a)}));return i.length?[{type:"divider"},{label:n,type:"header"},...i].map(o=>sy(o)):G}_getBookmarks(){const e=(n,r)=>n?nk(this._makeBookmarkMenuItems(n,r),D`Loading...`):G;return[e(this.app.globalBookmarkDatabase,"Global bookmarks"),e(this.app.localBookmarkDatabase,"Local bookmarks")]}render(){const e=this.app.localBookmarkDatabase,n=e?D`<li><a @click="${()=>this._addBookmark(e)}">Add bookmark...</a></li>`:G,r=e||this.app.globalBookmarkDatabase?D`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${i=>{Xf(i)&&this.requestUpdate()}}">${ne(Ug).node[0]}</button><ul class="gs-dropdown-menu">${n} ${this._getBookmarks()}</ul></div>`:G;return D`<div class="btn-group">${r} <button class="tool-btn" title="Share" @click="${()=>this._shareCurrentState()}">${ne(Pl).node[0]}</button></div>`}}customElements.define("genome-spy-bookmark-button",dk);class hk extends Ft{constructor(){super(),this.app=void 0,this.appInitialized=!1}static get properties(){return{app:{type:Object},appInitialized:{type:Boolean}}}createRenderRoot(){return this}_getToolButtons(){const e=this.app.getSampleView(),n=this.app.provenance,r=[];n.isEnabled()&&r.push(D`<genome-spy-provenance-buttons .provenance="${n}"></genome-spy-provenance-buttons>`),r.push(D`<genome-spy-view-visibility></genome-spy-view-visibility>`),e&&r.push(D`<button class="tool-btn" title="Peek (E)" @click="${()=>e._togglePeek()}">${ne(I5).node[0]}</button>`),r.push(D`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const i=this.app.config.description?Ke(this.app.config.description):[];return i.length>1&&r.push(D`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>ft(D`${i.slice(1).map(o=>D`<p>${o}</p>`)}`,{title:i[0]})}">${ne(Hg).node[0]}</button>`),i.length>0&&r.push(D`<span class="vis-title">${i[0]}</span>`),r.push(D`<span class="spacer"></span> ${this.app.appContainer.requestFullscreen?D`<button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${ne(x5).node[0]}</button>`:G} <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${ne(h5).node[0]}</button>`),r}render(){const e=this.app.genomeSpy;return D`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${g2}"> </a>${this.appInitialized&&m2(e.viewRoot)?D`<genome-spy-search-field .genomeSpy="${e}"></genome-spy-search-field>`:G} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",hk);class pk{constructor(e){this.storeHelper=e,this._reducers={},this.actionInfoSources=[],this._reducer=void 0,e.addReducer("provenance",(n,r)=>this._reducer?this._reducer(n,r):n!=null?n:{})}addReducer(e,n){this._reducers[e]=n;const r=o=>Object.keys(this._reducers).some(a=>o.type.startsWith(a)),i=(o,a)=>r(a)?a:o!=null?o:null;this._reducer=F6(Pf(U(T({},this._reducers),{lastAction:i})),{ignoreInitialState:!0,filter:r}),this.storeHelper.dispatch({type:"@@redux/REPLACE"+Math.random().toString(36).substring(7).split("").join(".")})}get _storeState(){return this.storeHelper.store.getState()}get _provenanceState(){return this._storeState.provenance}isEnabled(){return!!this.getPresentState()}getPresentState(){return this._provenanceState.present}addActionInfoSource(e){this.actionInfoSources.push(e)}getActionInfo(e){for(const n of this.actionInfoSources){const r=n(e);if(r)return r}}dispatchBookmark(e){this.storeHelper.dispatch([...this.isUndoable()?[yn.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(yn.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(yn.ActionCreators.undo())}isAtInitialState(){return!this.isUndoable()}isEmpty(){const e=this._provenanceState;return!this.isEnabled()||e.past.length+e.future.length<=0}activateState(e){const n=this.getCurrentIndex();e<n?this.storeHelper.dispatch(yn.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(yn.ActionCreators.jumpToFuture(e-n-1))}getCurrentIndex(){var e;return(e=this._provenanceState.past)==null?void 0:e.length}getActionHistory(){const e=this._provenanceState;return e.present&&[...e.past,e.present].map(n=>n.lastAction)}getFullActionHistory(){const e=this._provenanceState;return[...e.past,e.present,...e.future].map(n=>n.lastAction)}getBookmarkableActionHistory(){var e;return(e=this.getActionHistory())==null?void 0:e.slice(1)}}function*mk(t,e=n=>+n){const n=t.length,r=new uo,i=new Array(n).fill(0);for(const[a,s]of t.entries())s.length&&r.push(a,e(s[0]));let o=0;for(;(o=r.pop())!==void 0;){const a=t[o];let s=i[o];if(yield a[s++],s<a.length){const u=e(a[s]);r.push(o,u),i[o]=s}}}const gk="sampleCount";class yk extends ue{constructor(e,n){super(),this.view=n;const r=n.context.animator;for(const i of n.getAncestors())i instanceof jf&&(this.provenance=i.provenance,this.provenance.storeHelper.subscribe(o=>r.requestTransition(()=>{this.reset(),this._mergeAndPropagate(Rf(o)),this.complete()})));if(!this.provenance)throw new Error("No SampleView was found!");this.contextObject=void 0}initialize(){this.contextObject=Object.create(super.getGlobalObject());const e=this.view.getEncoding().x;if(Vn(e))this.xAccessor=J(e.field);else throw new Error("Crash!")}handle(e){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof Ur)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){this._mergeAndPropagate(this.provenance.getPresentState()[$r]),super.complete()}_mergeAndPropagate(e){const n=[...Ky(e.rootGroup)].filter(r=>Zy(ze(r)));for(const[r,i]of n.entries()){const o=ze(i);if(Zy(o)){this.contextObject[gk]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const a=o.samples,s=this._getCollector(),c=mk(a.map(u=>{var f;return(f=s.facetBatches.get([u]))!=null?f:[]}),this.xAccessor);for(const u of c)this._propagate(u)}}this._updateScales()}setParent(e){super.setParent(e)}_updateScales(){const e=new Set;this.view.visit(n=>{if(n instanceof Ae&&n.mark.encoding.y){const r=n.getScaleResolution("y");r&&e.add(r)}});for(const n of e)n.reconfigure()}}var vk="BATCHING_REDUCER.BATCH";function bk(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:vk;return{type:e,meta:{batch:!0},payload:t}}function Ak(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class xk{constructor(e){this._reducers=e!=null?e:{},this.store=JI({reducer:{}}),this._listeners=new Set,this.store.subscribe(()=>{const n=this.store.getState();for(const r of this._listeners)r(n)})}get state(){return this.store.getState()}addReducer(e,n){this._reducers[e]=n,this.store.replaceReducer(Ak(Pf(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(bk(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class wk extends u2{constructor(e){super(),this.bookmarks=e,this.names=e.map(n=>n.name)}async getNames(){return this.names}async get(e){return this.bookmarks.find(n=>n.name==e)}}vg.mergeFacets=yk;class I2{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new xk,this.storeHelper.addReducer("viewSettings",No.reducer),this.provenance=new pk(this.storeHelper),this._initializationListeners=[],this.toolbarRef=h2(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new z9(n.specId):void 0,this.globalBookmarkDatabase=void 0,He(D`<div class="genome-spy-app"><genome-spy-toolbar ${p2(i.toolbarRef)} .app="${i}"></genome-spy-toolbar><div class="genome-spy-container"></div></div>`,i.appContainer),i.appContainer.querySelector(".genome-spy-app").addEventListener("query-dependency",s=>{s.detail.name=="app"&&(s.detail.setter(i),s.stopPropagation())});const o=s=>this.appContainer.getElementsByClassName(s)[0];this.genomeSpy=new Lg(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(E9,(s,c,u,f)=>new jf(s,c,u,f,this.provenance));const a=this.genomeSpy.viewVisibilityPredicate;this.genomeSpy.viewVisibilityPredicate=s=>{var c,u;return(u=(c=this.storeHelper.state.viewSettings)==null?void 0:c.visibilities[s.name])!=null?u:a(s)}}addInitializationListener(e){this._initializationListeners?this._initializationListeners.push(e):e()}toggleFullScreen(){document.fullscreenElement?document.exitFullscreen&&document.exitFullscreen():this.appContainer.requestFullscreen()}isFullPage(){return this.appContainer==document.body}async launch(){var a,s;const e=(a=this.config.bookmarks)!=null&&a.remote?xi({baseURL:this.config.baseUrl}).load(this.config.bookmarks.remote.url).then(c=>Promise.resolve(JSON.parse(c))):Promise.resolve([]);if(!await this.genomeSpy.launch())return;this.storeHelper.subscribe(zs(c=>{var u;return(u=c.viewSettings)==null?void 0:u.visibilities},(c,u)=>{var l,d;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(d=(l=this.getSampleView())==null?void 0:l.summaryViews)==null||d._invalidateCacheByPrefix("size","self");const f=this.genomeSpy.viewRoot.context;f.requestLayoutReflow(),f.animator.requestRender()},this.storeHelper.store.getState()));try{const c=await e;c.length&&(this.globalBookmarkDatabase=new wk(c))}catch(c){throw new Error(`Cannot load remote bookmarks: ${c}`)}await this._restoreStateFromUrlOrBookmark(),this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl(),!1);const r=ss(()=>this._updateStateToUrl(),500,!1);for(const[,c]of this.genomeSpy.getNamedScaleResolutions())c.isZoomable()&&c.addEventListener("domain",r);const i=this.toolbarRef.value;i.appInitialized=!0;const o=Ke((s=this.genomeSpy.spec.description)!=null?s:[]);this.isFullPage()&&o.length>0&&(document.title="GenomeSpy - "+o);for(const c of this._initializationListeners)c();this._initializationListeners=void 0}async _restoreStateFromUrlOrBookmark(){var i,o;const e=this._restoreStateFromUrl(),n=(i=this.config.bookmarks)==null?void 0:i.remote,r=this.globalBookmarkDatabase;if(!e&&n&&r){const a=(o=n.initialBookmark)!=null?o:n.tour&&(await r.getNames())[0];if(a){const s=await r.get(a);if(!s)throw new Error(`No such bookmark: ${a}`);n.tour?await Us(s,this,{mode:"tour",database:r}):await D2(s,this)}}}_updateStateToUrl(){const e={actions:[],scaleDomains:{}},n=this.provenance.getBookmarkableActionHistory();n!=null&&n.length&&(e.actions=n);for(const[o,a]of this.genomeSpy.getNamedScaleResolutions().entries())a.isZoomed()||(e.scaleDomains[o]=a.getComplexDomain());const r=this.storeHelper.state.viewSettings;Object.keys(r.visibilities).length&&(e.viewSettings=r);const i=e.actions.length||Object.keys(e.scaleDomains).length||e.viewSettings?E2(e):"";window.history.replaceState(void 0,document.title,window.location.pathname+window.location.search+i)}_restoreStateFromUrl(){const e=window.location.hash;if(e&&e.length>0)try{const n=uk(e);return Us(n,this,{mode:"shared"}),!0}catch(n){console.error(n),ft(D`<p>Cannot restore the state:</p><p>${n}</p>`)}return!1}_configureContainer(){this.isFullPage()?(this.appContainer.style.margin="0",this.appContainer.style.padding="0",this.appContainer.style.overflow="hidden",Ck(W8)):this.appContainer.style.position="relative"}getSampleView(){var n;if(!((n=this.genomeSpy)!=null&&n.viewRoot))return;let e;return this.genomeSpy.viewRoot.visit(r=>{if(r instanceof jf)return e=r,zr}),e}}function Ck(t){const e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function Sk(t,e,n={}){var o,a,s;let r;if(re(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 c=Ge(e)?e:await k2(e);(o=c.baseUrl)!=null||(c.baseUrl=""),(a=c.width)!=null||(c.width="container"),(s=c.padding)!=null||(c.padding=10);const u=new I2(r,c,n);i=u.genomeSpy,Ek(i,n),await u.launch()}catch(c){r.innerText=c.toString(),console.error(c)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(c,u){const f=i._eventListeners;let l=f.get(c);l||(l=new Set,f.set(c,l)),l.add(u)},removeEventListener(c,u){var l;(l=i._eventListeners.get(c))==null||l.delete(u)},getScaleResolutionByName(c){return i.getNamedScaleResolutions().get(c)}}}function Ek(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function k2(t){let e;try{e=JSON.parse(await xi().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}z.GenomeSpy=Lg,z.GenomeSpyApp=I2,z.embed=Sk,z.html=D,z.icon=g2,z.loadSpec=k2,Object.defineProperties(z,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});