@genome-spy/app 0.19.1 → 0.22.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 +569 -267
- package/package.json +8 -8
package/dist/index.js
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
var
|
2
|
-
\r]`),n=t.charCodeAt(0);function r(l,
|
3
|
-
`)}function
|
1
|
+
var Ok=Object.defineProperty,Pk=Object.defineProperties;var Fk=Object.getOwnPropertyDescriptors;var Ys=Object.getOwnPropertySymbols;var z2=Object.prototype.hasOwnProperty,R2=Object.prototype.propertyIsEnumerable;var td=(z,R,V)=>R in z?Ok(z,R,{enumerable:!0,configurable:!0,writable:!0,value:V}):z[R]=V,T=(z,R)=>{for(var V in R||(R={}))z2.call(R,V)&&td(z,V,R[V]);if(Ys)for(var V of Ys(R))R2.call(R,V)&&td(z,V,R[V]);return z},U=(z,R)=>Pk(z,Fk(R));var j2=(z,R)=>{var V={};for(var we in z)z2.call(z,we)&&R.indexOf(we)<0&&(V[we]=z[we]);if(z!=null&&Ys)for(var we of Ys(z))R.indexOf(we)<0&&R2.call(z,we)&&(V[we]=z[we]);return V};var U2=(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)),ke=(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),G2=(z,R,V,we)=>({set _(_s){Uo(z,R,_s,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,rt,ni,Oo,id,Dt,Sn,Us,H2,Gs,Q2,lr,Go,Po,od,Fo,ad,zo,sd,Hs,V2,Qs,Y2;"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 _s(t){return t.length===1?_2(t[0]):W2(t)}const _2=t=>function(e){return e[t]},W2=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 X2(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=X2(t);return t=r.length===1?r[0]:t,R((n&&n.get||_s)(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 qe=Array.isArray;function je(t){return t===Object(t)}function it(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),Z2=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),q2=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 Ws(t,e,n,r){const i=n(t[0]),o=n(it(t)),a=(o-i)*e;return[r(i-a),r(o-a)]}function K2(t,e){return Ws(t,e,ri,Qo)}function J2(t,e){var n=Math.sign(t[0]);return Ws(t,e,ud(n),cd(n))}function $2(t,e,n){return Ws(t,e,Vo(n),Vo(1/n))}function Yo(t,e,n,r,i){const o=r(t[0]),a=r(it(t)),s=e!=null?r(e):(o+a)/2;return[i(s+(o-s)*n),i(s+(a-s)*n)]}function Xs(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 ev(t,e,n,r){return Yo(t,e,n,Z2(r),q2(r))}function qs(t){return t!=null?qe(t)?t:[t]:[]}function tv(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 Be(t){return typeof t=="function"}const nv="descending";function fd(t,e,n){n=n||{},e=qs(e)||[];const r=[],i=[],o={},a=n.comparator||rv;return qs(t).forEach((s,c)=>{s!=null&&(r.push(e[c]===nv?-1:1),i.push(s=Be(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),rv=(t,e)=>t.length===1?iv(t[0],e[0]):ov(t,e,t.length),iv=(t,e)=>function(n,r){return dd(t(n),t(r))*e},ov=(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 av(t){return Be(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 sv=Object.prototype.hasOwnProperty;function En(t,e){return sv.call(t,e)}function _o(t){return typeof t=="boolean"}function cv(t){return Object.prototype.toString.call(t)==="[object Date]"}function uv(t){return t&&Be(t[Symbol.iterator])}function le(t){return typeof t=="number"}function re(t){return typeof t=="string"}function lv(t,e){const n=t[0],r=it(t),i=+e;return i?i===1?r:n+i*(r-n):n}function Wo(t){return t&&it(t)-t[0]||0}function Xo(t){return qe(t)?"["+t.map(Xo)+"]":je(t)||re(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function fv(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const dv=t=>le(t)||cv(t)?t:Date.parse(t);function hv(t,e){return e=e||dv,t==null||t===""?null:e(t)}function pv(t){return t==null||t===""?null:t+""}function Zo(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 mv(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 Oe(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function gv(t){return t<0?"-"+Oe(-t,6):t>9999?"+"+Oe(t,6):Oe(t,4)}function yv(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":gv(t.getUTCFullYear())+"-"+Oe(t.getUTCMonth()+1,2)+"-"+Oe(t.getUTCDate(),2)+(i?"T"+Oe(e,2)+":"+Oe(n,2)+":"+Oe(r,2)+"."+Oe(i,3)+"Z":r?"T"+Oe(e,2)+":"+Oe(n,2)+":"+Oe(r,2)+"Z":n||e?"T"+Oe(e,2)+":"+Oe(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(y,g){if(h)return h(y,g-1);p=y,h=d?mv(y,d):pd(y)});return m.columns=p||[],m}function i(l,d){var h=[],p=l.length,m=0,y=0,g,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(;(g=C())!==Js;){for(var b=[];g!==hd&&g!==Js;)b.push(g),g=C();d&&(b=d(b,y++))==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?uy(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:c,formatRow:u,formatValue:f}}var ly=Xl(" "),fy=ly.parseRows;function hy(t){return t}function dy(t){if(t==null)return hy;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 py(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function gy(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return Zl(t,n)})}:Zl(t,e)}function Zl(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=ql(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 ql(t,e){var n=dy(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var h=r[f<0?~f:f],p=0,d=h.length;p<d;++p)l.push(n(h[p],p));f<0&&py(l,d)}function o(f){return n(f)}function s(f){for(var l=[],h=0,p=f.length;h<p;++h)i(f[h],l);return l.length<2&&l.push(l[0]),l}function a(f){for(var l=s(f);l.length<4;)l.push(l[0]);return l}function 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 my(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],p,d;if(p=i[l])if(delete i[p.end],p.push(u),p.end=h,d=r[h]){delete r[d.start];var g=d===p?p:p.concat(d);r[g.start=p.start]=i[g.end=d.end]=g}else r[p.start]=i[p.end]=p;else if(p=r[h])if(delete r[p.start],p.unshift(u),p.start=l,d=i[l]){delete i[d.end];var m=d===p?p:d.concat(p);r[m.start=d.start]=i[m.end=p.end]=m}else r[p.start]=i[p.end]=p;else p=[u],r[p.start=l]=i[p.end=h]=p});function a(u){var f=t.arcs[u<0?~u:u],l=f[0],h;return t.transform?(h=[0,0],f.forEach(function(p){h[0]+=p[0],h[1]+=p[1]})):h=f[f.length-1],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(p){n[p<0?~p:p]=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 ql(t,Ay.apply(this,arguments))}function Ay(t,e,n){var r,i,o;if(arguments.length>1)r=by(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:my(t,r)}}function by(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 Vn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Or(t){let e=t,n=t,r=t;t.length!==2&&(e=(a,c)=>t(a)-c,n=Vn,r=(a,c)=>Vn(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 Kl(t){return t===null?NaN:+t}const Jl=Or(Vn),oa=Jl.right;Jl.left,Or(Kl).center;var Yn=oa;function vy(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 Wn extends Map{constructor(e,n=Cy){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($l(this,e))}has(e){return super.has($l(this,e))}set(e,n){return super.set(xy(this,e),n)}delete(e){return super.delete(wy(this,e))}}function $l({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function xy({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function wy({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Cy(t){return t!==null&&typeof t=="object"?t.valueOf():t}function ho(t){return t}function Pr(t,...e){return sa(t,ho,ho,e)}function Sy(t,...e){return sa(t,Array.from,ho,e)}function Ey(t,e,...n){return sa(t,ho,e,n)}function sa(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new Wn,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 Dy(t,e){return Array.from(e,n=>t[n])}function My(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 s of e){const a=aa(s[i],s[o]);if(a)return a}})):(n=t.map(n),r.sort((i,o)=>aa(n[i],n[o]))),Dy(t,r)}return t.sort(Ty(n))}function Ty(t=Vn){if(t===Vn)return aa;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 aa(t,e){return(t==null||!(t>=t))-(e==null||!(e>=e))||(t<e?-1:t>e?1:0)}var ca=Math.sqrt(50),ua=Math.sqrt(10),la=Math.sqrt(2);function po(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=ef(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 ef(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>=ca?10:o>=ua?5:o>=la?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=ca?10:o>=ua?5:o>=la?2:1)}function dn(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>=ca?i*=10:o>=ua?i*=5:o>=la&&(i*=2),e<t?-i:i}function fa(t,e,n=Kl){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 Ft(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 go(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 Iy(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function mo(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 _n(t){return t=mo(Math.abs(t)),t?t[1]:NaN}function Ny(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 ky(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var By=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function zt(t){if(!(e=By.exec(t)))throw new Error("invalid format: "+t);var e;return new ha({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]})}zt.prototype=ha.prototype;function ha(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+""}ha.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 Ly(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 tf;function Oy(t,e){var n=mo(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(tf=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")+mo(t,Math.max(0,e+o-1))[0]}function nf(t,e){var n=mo(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 rf={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Iy,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)=>nf(t*100,e),r:nf,s:Oy,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function of(t){return t}var sf=Array.prototype.map,af=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Py(t){var e=t.grouping===void 0||t.thousands===void 0?of:Ny(sf.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?of:ky(sf.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=zt(l);var h=l.fill,p=l.align,d=l.sign,g=l.symbol,m=l.zero,y=l.width,v=l.comma,w=l.precision,C=l.trim,b=l.type;b==="n"?(v=!0,b="g"):rf[b]||(w===void 0&&(w=12),C=!0,b="g"),(m||h==="0"&&p==="=")&&(m=!0,h="0",p="=");var A=g==="$"?n:g==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",x=g==="$"?r:/[%p]/.test(b)?s:"",E=rf[b],N=/[defgprs%]/.test(b);w=w===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function L(I){var O=A,q=x,Z,ye,Ke;if(b==="c")q=E(I)+q,I="";else{I=+I;var fn=I<0||1/I<0;if(I=isNaN(I)?c:E(Math.abs(I),w),C&&(I=Ly(I)),fn&&+I==0&&d!=="+"&&(fn=!1),O=(fn?d==="("?d:a:d==="-"||d==="("?"":d)+O,q=(b==="s"?af[8+tf/3]:"")+q+(fn&&d==="("?")":""),N){for(Z=-1,ye=I.length;++Z<ye;)if(Ke=I.charCodeAt(Z),48>Ke||Ke>57){q=(Ke===46?i+I.slice(Z+1):I.slice(Z))+q,I=I.slice(0,Z);break}}}v&&!m&&(I=e(I,1/0));var G=O.length+I.length+q.length,je=G<y?new Array(y-G+1).join(h):"";switch(v&&m&&(I=e(je+I,je.length?y-q.length:1/0),je=""),p){case"<":I=O+I+q+je;break;case"=":I=O+je+I+q;break;case"^":I=je.slice(0,G=je.length>>1)+O+I+q+je.slice(G);break;default:I=je+O+I+q;break}return o(I)}return L.toString=function(){return l+""},L}function f(l,h){var p=u((l=zt(l),l.type="f",l)),d=Math.max(-8,Math.min(8,Math.floor(_n(h)/3)))*3,g=Math.pow(10,-d),m=af[8+d/3];return function(y){return p(g*y)+m}}return{format:u,formatPrefix:f}}var yo,ce,da;Fy({thousands:",",grouping:[3],currency:["$",""]});function Fy(t){return yo=Py(t),ce=yo.format,da=yo.formatPrefix,yo}function cf(t){return Math.max(0,-_n(Math.abs(t)))}function uf(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(_n(e)/3)))*3-_n(Math.abs(t)))}function lf(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,_n(e)-_n(t))+1}var pa=new Date,ga=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 pa.setTime(+o),ga.setTime(+s),t(pa),t(ga),Math.floor(n(pa,ga))},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 ma=fe(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});ma.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}):ma};var ya=ma;const xt=1e3,Ve=xt*60,wt=Ve*60,pn=wt*24,Aa=pn*7,ff=pn*30,ba=pn*365;var zy=fe(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*xt)},function(t,e){return(e-t)/xt},function(t){return t.getUTCSeconds()}),Rt=zy,Ry=fe(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*xt)},function(t,e){t.setTime(+t+e*Ve)},function(t,e){return(e-t)/Ve},function(t){return t.getMinutes()}),va=Ry,jy=fe(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*xt-t.getMinutes()*Ve)},function(t,e){t.setTime(+t+e*wt)},function(t,e){return(e-t)/wt},function(t){return t.getHours()}),xa=jy,Uy=fe(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ve)/pn,t=>t.getDate()-1),gn=Uy;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())*Ve)/Aa})}var Ao=mn(0),wa=mn(1);mn(2),mn(3);var Fr=mn(4);mn(5),mn(6);var Gy=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()}),bo=Gy,hf=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()});hf.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 jt=hf,Hy=fe(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Ve)},function(t,e){return(e-t)/Ve},function(t){return t.getUTCMinutes()}),Ca=Hy,Qy=fe(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*wt)},function(t,e){return(e-t)/wt},function(t){return t.getUTCHours()}),Sa=Qy,Vy=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=Vy;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)/Aa})}var vo=An(0),Ea=An(1);An(2),An(3);var zr=An(4);An(5),An(6);var Yy=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()}),xo=Yy,df=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()});df.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 Ut=df;function pf(t,e,n,r,i,o){const s=[[Rt,1,xt],[Rt,5,5*xt],[Rt,15,15*xt],[Rt,30,30*xt],[o,1,Ve],[o,5,5*Ve],[o,15,15*Ve],[o,30,30*Ve],[i,1,wt],[i,3,3*wt],[i,6,6*wt],[i,12,12*wt],[r,1,pn],[r,2,2*pn],[n,1,Aa],[e,1,ff],[e,3,3*ff],[t,1,ba]];function a(u,f,l){const h=f<u;h&&([u,f]=[f,u]);const p=l&&typeof l.range=="function"?l:c(u,f,l),d=p?p.range(u,+f+1):[];return h?d.reverse():d}function c(u,f,l){const h=Math.abs(f-u)/l,p=Or(([,,m])=>m).right(s,h);if(p===s.length)return t.every(dn(u/ba,f/ba,l));if(p===0)return ya.every(Math.max(dn(u,f,l),1));const[d,g]=s[h/s[p-1][2]<s[p][2]/h?p-1:p];return d.every(g)}return[a,c]}const[Wy,_y]=pf(Ut,xo,vo,yn,Sa,Ca),[Xy,Zy]=pf(jt,bo,Ao,gn,xa,va),Rr="year",jr="quarter",Ur="month",Gr="week",Hr="date",wo="day",Da="dayofyear",Qr="hours",Vr="minutes",Yr="seconds",Co="milliseconds";[Rr,jr,Ur,Gr,Hr,wo,Da,Qr,Vr,Yr,Co].reduce((t,e,n)=>(t[e]=1+n,t),{});const qy={[Rr]:jt,[jr]:bo.every(3),[Ur]:bo,[Gr]:Ao,[Hr]:gn,[wo]:gn,[Da]:gn,[Qr]:xa,[Vr]:va,[Yr]:Rt,[Co]:ya},Ky={[Rr]:Ut,[jr]:xo.every(3),[Ur]:xo,[Gr]:vo,[Hr]:yn,[wo]:yn,[Da]:yn,[Qr]:Sa,[Vr]:Ca,[Yr]:Rt,[Co]:ya};function Jy(t){return qy[t]}function $y(t){return Ky[t]}function Ma(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 Ta(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 Wr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function gf(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=_r(i),f=Xr(i),l=_r(o),h=Xr(o),p=_r(s),d=Xr(s),g=_r(a),m=Xr(a),y=_r(c),v=Xr(c),w={a:fn,A:G,b:je,B:to,c:null,d:xf,e:xf,f:wA,g:BA,G:OA,H:bA,I:vA,j:xA,L:wf,m:CA,M:SA,p:no,q:qs,Q:Tf,s:If,S:EA,u:DA,U:MA,V:TA,w:IA,W:NA,x:null,X:null,y:kA,Y:LA,Z:PA,"%":Mf},C={a:jl,A:nT,b:rT,B:iT,c:null,d:Sf,e:Sf,f:jA,g:ZA,G:KA,H:FA,I:zA,j:RA,L:Ef,m:UA,M:GA,p:oT,q:sT,Q:Tf,s:If,S:HA,u:QA,U:VA,V:YA,w:WA,W:_A,x:null,X:null,y:XA,Y:qA,Z:JA,"%":Mf},b={a:L,A:I,b:O,B:q,c:Z,d:bf,e:bf,f:gA,g:Af,G:yf,H:vf,I:vf,j:fA,L:pA,m:lA,M:hA,p:N,q:uA,Q:yA,s:AA,S:dA,u:iA,U:oA,V:sA,w:rA,W:aA,x:ye,X:Ke,y:Af,Y:yf,Z:cA,"%":mA};w.x=A(n,w),w.X=A(r,w),w.c=A(e,w),C.x=A(n,C),C.X=A(r,C),C.c=A(e,C);function A(B,R){return function(H){var M=[],Oe=-1,K=0,Ue=B.length,Ge,Qn,B1;for(H instanceof Date||(H=new Date(+H));++Oe<Ue;)B.charCodeAt(Oe)===37&&(M.push(B.slice(K,Oe)),(Qn=mf[Ge=B.charAt(++Oe)])!=null?Ge=B.charAt(++Oe):Qn=Ge==="e"?" ":"0",(B1=R[Ge])&&(Ge=B1(H,Qn)),M.push(Ge),K=Oe+1);return M.push(B.slice(K,Oe)),M.join("")}}function x(B,R){return function(H){var M=Wr(1900,void 0,1),Oe=E(M,B,H+="",0),K,Ue;if(Oe!=H.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(R&&!("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?(K=Ta(Wr(M.y,0,1)),Ue=K.getUTCDay(),K=Ue>4||Ue===0?Ea.ceil(K):Ea(K),K=yn.offset(K,(M.V-1)*7),M.y=K.getUTCFullYear(),M.m=K.getUTCMonth(),M.d=K.getUTCDate()+(M.w+6)%7):(K=Ma(Wr(M.y,0,1)),Ue=K.getDay(),K=Ue>4||Ue===0?wa.ceil(K):wa(K),K=gn.offset(K,(M.V-1)*7),M.y=K.getFullYear(),M.m=K.getMonth(),M.d=K.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),Ue="Z"in M?Ta(Wr(M.y,0,1)).getUTCDay():Ma(Wr(M.y,0,1)).getDay(),M.m=0,M.d="W"in M?(M.w+6)%7+M.W*7-(Ue+5)%7:M.w+M.U*7-(Ue+6)%7);return"Z"in M?(M.H+=M.Z/100|0,M.M+=M.Z%100,Ta(M)):Ma(M)}}function E(B,R,H,M){for(var Oe=0,K=R.length,Ue=H.length,Ge,Qn;Oe<K;){if(M>=Ue)return-1;if(Ge=R.charCodeAt(Oe++),Ge===37){if(Ge=R.charAt(Oe++),Qn=b[Ge in mf?R.charAt(Oe++):Ge],!Qn||(M=Qn(B,H,M))<0)return-1}else if(Ge!=H.charCodeAt(M++))return-1}return M}function N(B,R,H){var M=u.exec(R.slice(H));return M?(B.p=f.get(M[0].toLowerCase()),H+M[0].length):-1}function L(B,R,H){var M=p.exec(R.slice(H));return M?(B.w=d.get(M[0].toLowerCase()),H+M[0].length):-1}function I(B,R,H){var M=l.exec(R.slice(H));return M?(B.w=h.get(M[0].toLowerCase()),H+M[0].length):-1}function O(B,R,H){var M=y.exec(R.slice(H));return M?(B.m=v.get(M[0].toLowerCase()),H+M[0].length):-1}function q(B,R,H){var M=g.exec(R.slice(H));return M?(B.m=m.get(M[0].toLowerCase()),H+M[0].length):-1}function Z(B,R,H){return E(B,e,R,H)}function ye(B,R,H){return E(B,n,R,H)}function Ke(B,R,H){return E(B,r,R,H)}function fn(B){return s[B.getDay()]}function G(B){return o[B.getDay()]}function je(B){return c[B.getMonth()]}function to(B){return a[B.getMonth()]}function no(B){return i[+(B.getHours()>=12)]}function qs(B){return 1+~~(B.getMonth()/3)}function jl(B){return s[B.getUTCDay()]}function nT(B){return o[B.getUTCDay()]}function rT(B){return c[B.getUTCMonth()]}function iT(B){return a[B.getUTCMonth()]}function oT(B){return i[+(B.getUTCHours()>=12)]}function sT(B){return 1+~~(B.getUTCMonth()/3)}return{format:function(B){var R=A(B+="",w);return R.toString=function(){return B},R},parse:function(B){var R=x(B+="",!1);return R.toString=function(){return B},R},utcFormat:function(B){var R=A(B+="",C);return R.toString=function(){return B},R},utcParse:function(B){var R=x(B+="",!0);return R.toString=function(){return B},R}}}var mf={"-":"",_:" ","0":"0"},he=/^\s*\d+/,eA=/^%/,tA=/[\\^$*+?|[\]().{}]/g;function j(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 nA(t){return t.replace(tA,"\\$&")}function _r(t){return new RegExp("^(?:"+t.map(nA).join("|")+")","i")}function Xr(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function rA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function iA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function oA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function sA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function aA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function yf(t,e,n){var r=he.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Af(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 cA(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 uA(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 lA(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 bf(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function fA(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 vf(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function hA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function dA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function pA(t,e,n){var r=he.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function gA(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 mA(t,e,n){var r=eA.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 AA(t,e,n){var r=he.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function xf(t,e){return j(t.getDate(),e,2)}function bA(t,e){return j(t.getHours(),e,2)}function vA(t,e){return j(t.getHours()%12||12,e,2)}function xA(t,e){return j(1+gn.count(jt(t),t),e,3)}function wf(t,e){return j(t.getMilliseconds(),e,3)}function wA(t,e){return wf(t,e)+"000"}function CA(t,e){return j(t.getMonth()+1,e,2)}function SA(t,e){return j(t.getMinutes(),e,2)}function EA(t,e){return j(t.getSeconds(),e,2)}function DA(t){var e=t.getDay();return e===0?7:e}function MA(t,e){return j(Ao.count(jt(t)-1,t),e,2)}function Cf(t){var e=t.getDay();return e>=4||e===0?Fr(t):Fr.ceil(t)}function TA(t,e){return t=Cf(t),j(Fr.count(jt(t),t)+(jt(t).getDay()===4),e,2)}function IA(t){return t.getDay()}function NA(t,e){return j(wa.count(jt(t)-1,t),e,2)}function kA(t,e){return j(t.getFullYear()%100,e,2)}function BA(t,e){return t=Cf(t),j(t.getFullYear()%100,e,2)}function LA(t,e){return j(t.getFullYear()%1e4,e,4)}function OA(t,e){var n=t.getDay();return t=n>=4||n===0?Fr(t):Fr.ceil(t),j(t.getFullYear()%1e4,e,4)}function PA(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+j(e/60|0,"0",2)+j(e%60,"0",2)}function Sf(t,e){return j(t.getUTCDate(),e,2)}function FA(t,e){return j(t.getUTCHours(),e,2)}function zA(t,e){return j(t.getUTCHours()%12||12,e,2)}function RA(t,e){return j(1+yn.count(Ut(t),t),e,3)}function Ef(t,e){return j(t.getUTCMilliseconds(),e,3)}function jA(t,e){return Ef(t,e)+"000"}function UA(t,e){return j(t.getUTCMonth()+1,e,2)}function GA(t,e){return j(t.getUTCMinutes(),e,2)}function HA(t,e){return j(t.getUTCSeconds(),e,2)}function QA(t){var e=t.getUTCDay();return e===0?7:e}function VA(t,e){return j(vo.count(Ut(t)-1,t),e,2)}function Df(t){var e=t.getUTCDay();return e>=4||e===0?zr(t):zr.ceil(t)}function YA(t,e){return t=Df(t),j(zr.count(Ut(t),t)+(Ut(t).getUTCDay()===4),e,2)}function WA(t){return t.getUTCDay()}function _A(t,e){return j(Ea.count(Ut(t)-1,t),e,2)}function XA(t,e){return j(t.getUTCFullYear()%100,e,2)}function ZA(t,e){return t=Df(t),j(t.getUTCFullYear()%100,e,2)}function qA(t,e){return j(t.getUTCFullYear()%1e4,e,4)}function KA(t,e){var n=t.getUTCDay();return t=n>=4||n===0?zr(t):zr.ceil(t),j(t.getUTCFullYear()%1e4,e,4)}function JA(){return"+0000"}function Mf(){return"%"}function Tf(t){return+t}function If(t){return Math.floor(+t/1e3)}var Xn,Ia,Nf,Na,kf;$A({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 $A(t){return Xn=gf(t),Ia=Xn.format,Nf=Xn.parse,Na=Xn.utcFormat,kf=Xn.utcParse,Xn}function Zr(t){const e={};return n=>e[n]||(e[n]=t(n))}function e2(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=t2(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 t2(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 n2(t){const e=Zr(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=zt(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return e2(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=zt(s==null?",f":s);const a=dn(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=uf(a,c))||(s.precision=u),n(s,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=lf(a,c))||(s.precision=u-(s.type==="e"));break}case"f":case"%":{isNaN(u=cf(a))||(s.precision=u-(s.type==="%")*2);break}}return e(s)}}}r2();function r2(){return n2({format:ce,formatPrefix:da})}function Bf(t,e,n){n=n||{},Pe(n)||re("Invalid time multi-format specifier: ".concat(n));const r=e(Yr),i=e(Vr),o=e(Qr),s=e(Hr),a=e(Gr),c=e(Ur),u=e(jr),f=e(Rr),l=t(n[Co]||".%L"),h=t(n[Yr]||":%S"),p=t(n[Vr]||"%I:%M"),d=t(n[Qr]||"%I %p"),g=t(n[Hr]||n[wo]||"%a %d"),m=t(n[Gr]||"%b %d"),y=t(n[Ur]||"%B"),v=t(n[jr]||"%B"),w=t(n[Rr]||"%Y");return C=>(r(C)<C?l:i(C)<C?h:o(C)<C?p:s(C)<C?d:c(C)<C?a(C)<C?g:m:f(C)<C?u(C)<C?y:v:w)(C)}function Lf(t){const e=Zr(t.format),n=Zr(t.utcFormat);return{timeFormat:r=>ie(r)?e(r):Bf(e,Jy,r),utcFormat:r=>ie(r)?n(r):Bf(n,$y,r),timeParse:Zr(t.parse),utcParse:Zr(t.utcParse)}}let ka;i2();function i2(){return ka=Lf({format:Ia,parse:Nf,utcFormat:Na,utcParse:kf})}function o2(t){return Lf(gf(t))}function s2(t){return arguments.length?ka=o2(t):ka}const a2=/^(data:|([A-Za-z]+:)?\/\/)/,c2=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,u2=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Of="file://";function l2(t,e){return n=>({options:n||{},sanitize:h2,load:f2,fileAccess:!!e,file:d2(e),http:g2(t)})}async function f2(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function h2(t,e){e=ta({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=c2.test(t.replace(u2,""));(t==null||typeof t!="string"||!a)&&re("Sanitize failure, invalid URI: "+lo(t));const c=a2.test(t);return(s=e.baseURL)&&!c&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(Of))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(Of.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 d2(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):p2}async function p2(){re("No file system access.")}function g2(t){return t?async function(e,n){const r=ta({},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)}:m2}async function m2(){re("No HTTP fetch method available.")}const y2=t=>t!=null&&t===t,A2=t=>t==="true"||t==="false"||t===!0||t===!1,b2=t=>!Number.isNaN(Date.parse(t)),Pf=t=>!Number.isNaN(+t)&&!(t instanceof Date),v2=t=>Pf(t)&&Number.isInteger(+t),Ff={boolean:ry,integer:Br,number:Br,date:oy,string:sy,unknown:io},So=[A2,v2,Pf,b2],x2=["boolean","integer","number","date"];function zf(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=So.length,i=So.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)&&!So[a](c)&&(i[a]=0,++s,s===So.length))return"string";return x2[i.reduce((o,s)=>o===0?s:o,0)-1]}function w2(t,e){return e.reduce((n,r)=>(n[r]=zf(t,r),n),{})}function Rf(t){const e=function(n,r){const i={delimiter:t};return Ba(n,r?ta(r,i):i)};return e.responseType="text",e}function Ba(t,e){return e.header&&(t=e.header.map(lo).join(e.delimiter)+`
|
6
|
-
`+t),Xl(e.delimiter).parse(t+"")}Ba.responseType="text";function C2(t){return typeof Buffer=="function"&&Te(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function La(t,e){const n=e&&e.property?ro(e.property):io;return Pe(t)&&!C2(t)?S2(n(t),e):n(JSON.parse(t))}La.responseType="json";function S2(t,e){return!Qe(t)&&ty(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const E2={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function jf(t,e){let n,r,i,o;return t=La(t,e),e&&e.feature?(n=gy,i=e.feature):e&&e.mesh?(n=yy,i=e.mesh,o=E2[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]}jf.responseType="json";const Oa={dsv:Ba,csv:Rf(","),tsv:Rf(" "),json:La,topojson:jf};function Uf(t,e){return arguments.length>1?(Oa[t]=e,this):hn(Oa,t)?Oa[t]:null}function Gf(t,e,n,r){e=e||{};const i=Uf(e.type||"json");return i||re("Unknown data format type: "+e.type),t=i(t,e),e.parse&&D2(t,e.parse,n,r),hn(t,"columns")&&delete t.columns,t}function D2(t,e,n,r){if(!t.length)return;const i=s2();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=w2(t,o)),o=Object.keys(e);const h=o.map(p=>{const d=e[p];let g,m;if(d&&(d.startsWith("date:")||d.startsWith("utc:")))return g=d.split(/:(.+)?/,2),m=g[1],(m[0]==="'"&&m[m.length-1]==="'"||m[0]==='"'&&m[m.length-1]==='"')&&(m=m.slice(1,-1)),(g[0]==="utc"?r:n)(m);if(!Ff[d])throw Error("Illegal format pattern: "+p+":"+d);return Ff[d]});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 qr=l2(typeof fetch!="undefined"&&fetch,null),Hf=1;function Pa(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,s=.5,a=0;const u=f=>(f+s-t[0])/n*r+e[0];return u.invert=f=>(f-e[0])/r*n+t[0]-s,u.domain=function(f){if(arguments.length){if(t=vy(f),n=t[1]-t[0],n<Hf){n=Hf;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 po(t[0]-l+h,t[1]-l+h,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(p=>p-a)},u.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const p=dn(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?ce(","):ce(".3s");return d=>p(d+a)},u.copy=()=>Pa().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),u}function M2(){const t=Pa().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,dn(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),p=Math.min(l.continuousEnd-c/4,i[1]+1);for(let d=h;d<=p;d+=c){const g=d-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=dn(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?ce(","):ce(".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 T2(t){return t.type=="locus"}function at(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function Gt(t,e){switch(arguments.length){case 0:break;case 1:{typeof t=="function"?this.interpolator(t):this.range(t);break}default:{this.domain(t),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const Fa=Symbol("implicit");function za(){var t=new Wn,e=[],n=[],r=Fa;function i(o){let s=t.get(o);if(s===void 0){if(r!==Fa)return r;t.set(o,s=e.push(o)-1)}return n[s%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Wn;for(const s of o)t.has(s)||t.set(s,e.push(s)-1);return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return za(e,n).unknown(r)},at.apply(i,arguments),i}function Zn(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Kr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Ht(){}var bn=.7,qn=1/bn,Kn="\\s*([+-]?\\d+)\\s*",Jr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",ct="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",I2=/^#([0-9a-f]{3,8})$/,N2=new RegExp(`^rgb\\(${Kn},${Kn},${Kn}\\)$`),k2=new RegExp(`^rgb\\(${ct},${ct},${ct}\\)$`),B2=new RegExp(`^rgba\\(${Kn},${Kn},${Kn},${Jr}\\)$`),L2=new RegExp(`^rgba\\(${ct},${ct},${ct},${Jr}\\)$`),O2=new RegExp(`^hsl\\(${Jr},${ct},${ct}\\)$`),P2=new RegExp(`^hsla\\(${Jr},${ct},${ct},${Jr}\\)$`),Qf={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};Zn(Ht,vn,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Vf,formatHex:Vf,formatHex8:F2,formatHsl:z2,formatRgb:Yf,toString:Yf});function Vf(){return this.rgb().formatHex()}function F2(){return this.rgb().formatHex8()}function z2(){return qf(this).formatHsl()}function Yf(){return this.rgb().formatRgb()}function vn(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=I2.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Wf(e):n===3?new de(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Eo(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Eo(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=N2.exec(t))?new de(e[1],e[2],e[3],1):(e=k2.exec(t))?new de(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=B2.exec(t))?Eo(e[1],e[2],e[3],e[4]):(e=L2.exec(t))?Eo(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=O2.exec(t))?Zf(e[1],e[2]/100,e[3]/100,1):(e=P2.exec(t))?Zf(e[1],e[2]/100,e[3]/100,e[4]):Qf.hasOwnProperty(t)?Wf(Qf[t]):t==="transparent"?new de(NaN,NaN,NaN,0):null}function Wf(t){return new de(t>>16&255,t>>8&255,t&255,1)}function Eo(t,e,n,r){return r<=0&&(t=e=n=NaN),new de(t,e,n,r)}function Ra(t){return t instanceof Ht||(t=vn(t)),t?(t=t.rgb(),new de(t.r,t.g,t.b,t.opacity)):new de}function Do(t,e,n,r){return arguments.length===1?Ra(t):new de(t,e,n,r==null?1:r)}function de(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Zn(de,Do,Kr(Ht,{brighter(t){return t=t==null?qn:Math.pow(qn,t),new de(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?bn:Math.pow(bn,t),new de(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new de(xn(this.r),xn(this.g),xn(this.b),Mo(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:_f,formatHex:_f,formatHex8:R2,formatRgb:Xf,toString:Xf}));function _f(){return`#${wn(this.r)}${wn(this.g)}${wn(this.b)}`}function R2(){return`#${wn(this.r)}${wn(this.g)}${wn(this.b)}${wn((isNaN(this.opacity)?1:this.opacity)*255)}`}function Xf(){const t=Mo(this.opacity);return`${t===1?"rgb(":"rgba("}${xn(this.r)}, ${xn(this.g)}, ${xn(this.b)}${t===1?")":`, ${t})`}`}function Mo(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function xn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function wn(t){return t=xn(t),(t<16?"0":"")+t.toString(16)}function Zf(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new $e(t,e,n,r)}function qf(t){if(t instanceof $e)return new $e(t.h,t.s,t.l,t.opacity);if(t instanceof Ht||(t=vn(t)),!t)return new $e;if(t instanceof $e)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 $e(s,a,c,t.opacity)}function ja(t,e,n,r){return arguments.length===1?qf(t):new $e(t,e,n,r==null?1:r)}function $e(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Zn($e,ja,Kr(Ht,{brighter(t){return t=t==null?qn:Math.pow(qn,t),new $e(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?bn:Math.pow(bn,t),new $e(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 de(Ua(t>=240?t-240:t+120,i,r),Ua(t,i,r),Ua(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new $e(Kf(this.h),To(this.s),To(this.l),Mo(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=Mo(this.opacity);return`${t===1?"hsl(":"hsla("}${Kf(this.h)}, ${To(this.s)*100}%, ${To(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Kf(t){return t=(t||0)%360,t<0?t+360:t}function To(t){return Math.max(0,Math.min(1,t||0))}function Ua(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 Jf=Math.PI/180,$f=180/Math.PI,Io=18,eh=.96422,th=1,nh=.82521,rh=4/29,Jn=6/29,ih=3*Jn*Jn,j2=Jn*Jn*Jn;function oh(t){if(t instanceof ut)return new ut(t.l,t.a,t.b,t.opacity);if(t instanceof Ct)return sh(t);t instanceof de||(t=Ra(t));var e=Ya(t.r),n=Ya(t.g),r=Ya(t.b),i=Ha((.2225045*e+.7168786*n+.0606169*r)/th),o,s;return e===n&&n===r?o=s=i:(o=Ha((.4360747*e+.3850649*n+.1430804*r)/eh),s=Ha((.0139322*e+.0971045*n+.7141733*r)/nh)),new ut(116*i-16,500*(o-i),200*(i-s),t.opacity)}function Ga(t,e,n,r){return arguments.length===1?oh(t):new ut(t,e,n,r==null?1:r)}function ut(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}Zn(ut,Ga,Kr(Ht,{brighter(t){return new ut(this.l+Io*(t==null?1:t),this.a,this.b,this.opacity)},darker(t){return new ut(this.l-Io*(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=eh*Qa(e),t=th*Qa(t),n=nh*Qa(n),new de(Va(3.1338561*e-1.6168667*t-.4906146*n),Va(-.9787684*e+1.9161415*t+.033454*n),Va(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function Ha(t){return t>j2?Math.pow(t,1/3):t/ih+rh}function Qa(t){return t>Jn?t*t*t:ih*(t-rh)}function Va(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ya(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function U2(t){if(t instanceof Ct)return new Ct(t.h,t.c,t.l,t.opacity);if(t instanceof ut||(t=oh(t)),t.a===0&&t.b===0)return new Ct(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*$f;return new Ct(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Wa(t,e,n,r){return arguments.length===1?U2(t):new Ct(t,e,n,r==null?1:r)}function Ct(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function sh(t){if(isNaN(t.h))return new ut(t.l,0,0,t.opacity);var e=t.h*Jf;return new ut(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}Zn(Ct,Wa,Kr(Ht,{brighter(t){return new Ct(this.h,this.c,this.l+Io*(t==null?1:t),this.opacity)},darker(t){return new Ct(this.h,this.c,this.l-Io*(t==null?1:t),this.opacity)},rgb(){return sh(this).rgb()}}));var ah=-.14861,_a=1.78277,Xa=-.29227,No=-.90649,$r=1.97294,ch=$r*No,uh=$r*_a,lh=_a*Xa-No*ah;function G2(t){if(t instanceof Cn)return new Cn(t.h,t.s,t.l,t.opacity);t instanceof de||(t=Ra(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(lh*r+ch*e-uh*n)/(lh+ch-uh),o=r-i,s=($r*(n-i)-Xa*o)/No,a=Math.sqrt(s*s+o*o)/($r*i*(1-i)),c=a?Math.atan2(s,o)*$f-120:NaN;return new Cn(c<0?c+360:c,a,i,t.opacity)}function Za(t,e,n,r){return arguments.length===1?G2(t):new Cn(t,e,n,r==null?1:r)}function Cn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Zn(Cn,Za,Kr(Ht,{brighter(t){return t=t==null?qn:Math.pow(qn,t),new Cn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?bn:Math.pow(bn,t),new Cn(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*Jf,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new de(255*(e+n*(ah*r+_a*i)),255*(e+n*(Xa*r+No*i)),255*(e+n*($r*r)),this.opacity)}}));function fh(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 hh(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 fh((n-r/e)*e,s,i,o,a)}}function dh(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 fh((n-r/e)*e,i,o,s,a)}}var ko=t=>()=>t;function ph(t,e){return function(n){return t+n*e}}function H2(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 Bo(t,e){var n=e-t;return n?ph(t,n>180||n<-180?n-360*Math.round(n/360):n):ko(isNaN(t)?e:t)}function Q2(t){return(t=+t)==1?pe:function(e,n){return n-e?H2(e,n,t):ko(isNaN(e)?n:e)}}function pe(t,e){var n=e-t;return n?ph(t,n):ko(isNaN(t)?e:t)}var qa=function t(e){var n=Q2(e);function r(i,o){var s=n((i=Do(i)).r,(o=Do(o)).r),a=n(i.g,o.g),c=n(i.b,o.b),u=pe(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 gh(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=Do(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 V2=gh(hh),Y2=gh(dh);function Ka(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 mh(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function W2(t,e){return(mh(e)?Ka:yh)(t,e)}function yh(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]=Qt(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 Ah(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function et(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function bh(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]=Qt(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var Ja=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,$a=new RegExp(Ja.source,"g");function _2(t){return function(){return t}}function X2(t){return function(e){return t(e)+""}}function vh(t,e){var n=Ja.lastIndex=$a.lastIndex=0,r,i,o,s=-1,a=[],c=[];for(t=t+"",e=e+"";(r=Ja.exec(t))&&(i=$a.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:et(r,i)})),n=$a.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?c[0]?X2(c[0].x):_2(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 Qt(t,e){var n=typeof e,r;return e==null||n==="boolean"?ko(e):(n==="number"?et:n==="string"?(r=vn(e))?(e=r,qa):vh:e instanceof vn?qa:e instanceof Date?Ah:mh(e)?Ka:Array.isArray(e)?yh:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?bh:et)(t,e)}function Z2(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function q2(t,e){var n=Bo(+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 xh=180/Math.PI,ec={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function wh(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)*xh,skewX:Math.atan(c)*xh,scaleX:s,scaleY:a}}var Lo;function K2(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?ec:wh(e.a,e.b,e.c,e.d,e.e,e.f)}function J2(t){return t==null||(Lo||(Lo=document.createElementNS("http://www.w3.org/2000/svg","g")),Lo.setAttribute("transform",t),!(t=Lo.transform.baseVal.consolidate()))?ec:(t=t.matrix,wh(t.a,t.b,t.c,t.d,t.e,t.f))}function Ch(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,h,p,d){if(u!==l||f!==h){var g=p.push("translate(",null,e,null,n);d.push({i:g-4,x:et(u,l)},{i:g-2,x:et(f,h)})}else(l||h)&&p.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:et(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:et(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,h,p,d){if(u!==l||f!==h){var g=p.push(i(p)+"scale(",null,",",null,")");d.push({i:g-4,x:et(u,l)},{i:g-2,x:et(f,h)})}else(l!==1||h!==1)&&p.push(i(p)+"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(p){for(var d=-1,g=h.length,m;++d<g;)l[(m=h[d]).i]=m.x(p);return l.join("")}}}var $2=Ch(K2,"px, ","px)","deg)"),eb=Ch(J2,", ",")",")"),tb=1e-12;function Sh(t){return((t=Math.exp(t))+1/t)/2}function nb(t){return((t=Math.exp(t))-1/t)/2}function rb(t){return((t=Math.exp(2*t))-1)/(t+1)}var Eh=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],p=f-a,d=l-c,g=p*p+d*d,m,y;if(g<tb)y=Math.log(h/u)/e,m=function(x){return[a+x*p,c+x*d,u*Math.exp(e*x*y)]};else{var v=Math.sqrt(g),w=(h*h-u*u+r*g)/(2*u*n*v),C=(h*h-u*u-r*g)/(2*h*n*v),b=Math.log(Math.sqrt(w*w+1)-w),A=Math.log(Math.sqrt(C*C+1)-C);y=(A-b)/e,m=function(x){var E=x*y,N=Sh(b),L=u/(n*v)*(N*rb(e*E+b)-nb(b));return[a+L*p,c+L*d,u*N/Sh(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 Dh(t){return function(e,n){var r=t((e=ja(e)).h,(n=ja(n)).h),i=pe(e.s,n.s),o=pe(e.l,n.l),s=pe(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 ib=Dh(Bo),ob=Dh(pe);function sb(t,e){var n=pe((t=Ga(t)).l,(e=Ga(e)).l),r=pe(t.a,e.a),i=pe(t.b,e.b),o=pe(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 Mh(t){return function(e,n){var r=t((e=Wa(e)).h,(n=Wa(n)).h),i=pe(e.c,n.c),o=pe(e.l,n.l),s=pe(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 ab=Mh(Bo),cb=Mh(pe);function Th(t){return function e(n){n=+n;function r(i,o){var s=t((i=Za(i)).h,(o=Za(o)).h),a=pe(i.s,o.s),c=pe(i.l,o.l),u=pe(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 ub=Th(Bo),lb=Th(pe);function tc(t,e){e===void 0&&(e=t,t=Qt);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 fb(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var hb=Object.freeze(Object.defineProperty({__proto__:null,interpolate:Qt,interpolateArray:W2,interpolateBasis:hh,interpolateBasisClosed:dh,interpolateDate:Ah,interpolateDiscrete:Z2,interpolateHue:q2,interpolateNumber:et,interpolateNumberArray:Ka,interpolateObject:bh,interpolateRound:ei,interpolateString:vh,interpolateTransformCss:$2,interpolateTransformSvg:eb,interpolateZoom:Eh,interpolateRgb:qa,interpolateRgbBasis:V2,interpolateRgbBasisClosed:Y2,interpolateHsl:ib,interpolateHslLong:ob,interpolateLab:sb,interpolateHcl:ab,interpolateHclLong:cb,interpolateCubehelix:ub,interpolateCubehelixLong:lb,piecewise:tc,quantize:fb},Symbol.toStringTag,{value:"Module"}));function db(t){return function(){return t}}function nc(t){return+t}var Ih=[0,1];function Ne(t){return t}function rc(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:db(isNaN(e)?NaN:.5)}function pb(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function gb(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=rc(i,r),o=n(s,o)):(r=rc(r,i),o=n(o,s)),function(a){return o(r(a))}}function mb(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]=rc(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var c=Yn(t,a,1,r)-1;return o[c](i[c](a))}}function ti(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Oo(){var t=Ih,e=Ih,n=Qt,r,i,o,s=Ne,a,c,u;function f(){var h=Math.min(t.length,e.length);return s!==Ne&&(s=pb(t[0],t[h-1])),a=h>2?mb:gb,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),et)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,nc),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=ei,f()},l.clamp=function(h){return arguments.length?(s=h?!0:Ne,f()):s!==Ne},l.interpolate=function(h){return arguments.length?(n=h,f()):n},l.unknown=function(h){return arguments.length?(o=h,l):o},function(h,p){return r=h,i=p,f()}}function Nh(){return Oo()(Ne,Ne)}function kh(t,e,n,r){var i=dn(t,e,n),o;switch(r=zt(r==null?",f":r),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=uf(i,s))&&(r.precision=o),da(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=lf(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=cf(i))&&(r.precision=o-(r.type==="%")*2);break}}return ce(r)}function Sn(t){var e=t.domain;return t.ticks=function(n){var r=e();return po(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return kh(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=ef(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 Bh(){var t=Nh();return t.copy=function(){return ti(t,Bh())},at.apply(t,arguments),Sn(t)}function Lh(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,nc),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return Lh(t).unknown(e)},t=arguments.length?Array.from(t,nc):[0,1],Sn(n)}function Oh(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 Ph(t){return Math.log(t)}function Fh(t){return Math.exp(t)}function yb(t){return-Math.log(-t)}function Ab(t){return-Math.exp(-t)}function bb(t){return isFinite(t)?+("1e"+t):t<0?0:t}function vb(t){return t===10?bb:t===Math.E?Math.exp:e=>Math.pow(t,e)}function xb(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 zh(t){return(e,n)=>-t(-e,n)}function ic(t){const e=t(Ph,Fh),n=e.domain;let r=10,i,o;function s(){return i=xb(r),o=vb(r),n()[0]<0?(i=zh(i),o=zh(o),t(yb,Ab)):t(Ph,Fh),e}return e.base=function(a){return arguments.length?(r=+a,s()):r},e.domain=function(a){return arguments.length?(n(a),s()):n()},e.ticks=a=>{const c=n();let u=c[0],f=c[c.length-1];const l=f<u;l&&([u,f]=[f,u]);let h=i(u),p=i(f),d,g;const m=a==null?10:+a;let y=[];if(!(r%1)&&p-h<m){if(h=Math.floor(h),p=Math.ceil(p),u>0){for(;h<=p;++h)for(d=1;d<r;++d)if(g=h<0?d/o(-h):d*o(h),!(g<u)){if(g>f)break;y.push(g)}}else for(;h<=p;++h)for(d=r-1;d>=1;--d)if(g=h>0?d/o(-h):d*o(h),!(g<u)){if(g>f)break;y.push(g)}y.length*2<m&&(y=po(u,f,m))}else y=po(h,p,Math.min(p-h,m)).map(o);return l?y.reverse():y},e.tickFormat=(a,c)=>{if(a==null&&(a=10),c==null&&(c=r===10?"s":","),typeof c!="function"&&(!(r%1)&&(c=zt(c)).precision==null&&(c.trim=!0),c=ce(c)),a===1/0)return c;const u=Math.max(1,r*a/e.ticks().length);return f=>{let l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=u?c(f):""}},e.nice=()=>n(Oh(n(),{floor:a=>o(Math.floor(i(a))),ceil:a=>o(Math.ceil(i(a)))})),e}function oc(){const t=ic(Oo()).domain([1,10]);return t.copy=()=>ti(t,oc()).base(t.base()),at.apply(t,arguments),t}function Rh(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function jh(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function sc(t){var e=1,n=t(Rh(e),jh(e));return n.constant=function(r){return arguments.length?t(Rh(e=+r),jh(e)):e},Sn(n)}function Uh(){var t=sc(Oo());return t.copy=function(){return ti(t,Uh()).constant(t.constant())},at.apply(t,arguments)}function Gh(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function wb(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Cb(t){return t<0?-t*t:t*t}function ac(t){var e=t(Ne,Ne),n=1;function r(){return n===1?t(Ne,Ne):n===.5?t(wb,Cb):t(Gh(n),Gh(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Sn(e)}function cc(){var t=ac(Oo());return t.copy=function(){return ti(t,cc()).exponent(t.exponent())},at.apply(t,arguments),t}function Sb(){return cc.apply(null,arguments).exponent(.5)}function Hh(){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]=fa(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[Yn(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(Vn),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 Hh().domain(t).range(e).unknown(r)},at.apply(o,arguments)}function Qh(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function s(c){return c!=null&&c<=c?i[Yn(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 Qh().domain([t,e]).range(i).unknown(o)},at.apply(Sn(s),arguments)}function Vh(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[Yn(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 Vh().domain(t).range(e).unknown(n)},at.apply(i,arguments)}function Eb(t){return new Date(t)}function Db(t){return t instanceof Date?+t:+new Date(+t)}function uc(t,e,n,r,i,o,s,a,c,u){var f=Nh(),l=f.invert,h=f.domain,p=u(".%L"),d=u(":%S"),g=u("%I:%M"),m=u("%I %p"),y=u("%a %d"),v=u("%b %d"),w=u("%B"),C=u("%Y");function b(A){return(c(A)<A?p:a(A)<A?d:s(A)<A?g:o(A)<A?m:r(A)<A?i(A)<A?y:v:n(A)<A?w:C)(A)}return f.invert=function(A){return new Date(l(A))},f.domain=function(A){return arguments.length?h(Array.from(A,Db)):h().map(Eb)},f.ticks=function(A){var x=h();return t(x[0],x[x.length-1],A==null?10:A)},f.tickFormat=function(A,x){return x==null?b:u(x)},f.nice=function(A){var x=h();return(!A||typeof A.range!="function")&&(A=e(x[0],x[x.length-1],A==null?10:A)),A?h(Oh(x,A)):f},f.copy=function(){return ti(f,uc(t,e,n,r,i,o,s,a,c,u))},f}function Mb(){return at.apply(uc(Xy,Zy,jt,bo,Ao,gn,xa,va,Rt,Ia).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Tb(){return at.apply(uc(Wy,_y,Ut,xo,vo,yn,Sa,Ca,Rt,Na).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Po(){var t=0,e=1,n,r,i,o,s=Ne,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 p,d;return arguments.length?([p,d]=h,s=l(p,d),u):[s(0),s(1)]}}return u.range=f(Qt),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 Vt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function lc(){var t=Sn(Po()(Ne));return t.copy=function(){return Vt(t,lc())},Gt.apply(t,arguments)}function Yh(){var t=ic(Po()).domain([1,10]);return t.copy=function(){return Vt(t,Yh()).base(t.base())},Gt.apply(t,arguments)}function Wh(){var t=sc(Po());return t.copy=function(){return Vt(t,Wh()).constant(t.constant())},Gt.apply(t,arguments)}function fc(){var t=ac(Po());return t.copy=function(){return Vt(t,fc()).exponent(t.exponent())},Gt.apply(t,arguments)}function Ib(){return fc.apply(null,arguments).exponent(.5)}function Fo(){var t=0,e=.5,n=1,r=1,i,o,s,a,c,u=Ne,f,l=!1,h;function p(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))}p.domain=function(g){return arguments.length?([t,e,n]=g,i=f(t=+t),o=f(e=+e),s=f(n=+n),a=i===o?0:.5/(o-i),c=o===s?0:.5/(s-o),r=o<i?-1:1,p):[t,e,n]},p.clamp=function(g){return arguments.length?(l=!!g,p):l},p.interpolator=function(g){return arguments.length?(u=g,p):u};function d(g){return function(m){var y,v,w;return arguments.length?([y,v,w]=m,u=tc(g,[y,v,w]),p):[u(0),u(.5),u(1)]}}return p.range=d(Qt),p.rangeRound=d(ei),p.unknown=function(g){return arguments.length?(h=g,p):h},function(g){return f=g,i=g(t),o=g(e),s=g(n),a=i===o?0:.5/(o-i),c=o===s?0:.5/(s-o),r=o<i?-1:1,p}}function _h(){var t=Sn(Fo()(Ne));return t.copy=function(){return Vt(t,_h())},Gt.apply(t,arguments)}function Xh(){var t=ic(Fo()).domain([.1,1,10]);return t.copy=function(){return Vt(t,Xh()).base(t.base())},Gt.apply(t,arguments)}function Zh(){var t=sc(Fo());return t.copy=function(){return Vt(t,Zh()).constant(t.constant())},Gt.apply(t,arguments)}function hc(){var t=ac(Fo());return t.copy=function(){return Vt(t,hc()).exponent(t.exponent())},Gt.apply(t,arguments)}function Nb(){return hc.apply(null,arguments).exponent(.5)}function dc(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const kb="identity",$n="linear",Yt="log",ni="pow",ri="sqrt",zo="symlog",qh="time",Kh="utc",lt="sequential",er="diverging",pc="quantile",Jh="quantize",$h="threshold",gc="ordinal",mc="point",ed="band",yc="bin-ordinal",ue="continuous",ii="discrete",oi="discretizing",Ye="interpolating",td="temporal";function Bb(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 Lb(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 Ac(){const t=za().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],p=r[1-h],d=dc(l,a,c);let g=r[h-0];i=(p-g)/(d||1),s&&(i=Math.floor(i)),g+=(p-g-i*(l-a))*u,o=i*(1-a),s&&(g=Math.round(g),o=Math.round(o));const m=Ft(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],p=h?n().reverse():n(),d=p.length-1;let g=+l[0],m=+l[1],y,v,w;if(!(g!==g||m!==m)&&(m<g&&(w=g,g=m,m=w),!(m<p[0]||g>r[1-h])))return y=Math.max(0,oa(p,g)-1),v=g===m?y:oa(p,m)-1,g-p[y]>o+1e-10&&++y,h&&(w=y,y=d-v,v=d-w),y>v?void 0:e().slice(y,v+1)},t.invert=function(l){const h=t.invertRange([l,l]);return h&&h[0]},t.copy=function(){return Ac().domain(e()).range(r).round(s).paddingInner(a).paddingOuter(c).align(u)},f()}function nd(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return nd(e())},t}function Ob(){return nd(Ac().paddingInner(1))}var Pb=Array.prototype.map;function Fb(t){return Pb.call(t,Br)}const zb=Array.prototype.slice;function rd(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(Yn(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=Fb(r),n):t.slice()},n.range=function(r){return arguments.length?(e=zb.call(r),n):e.slice()},n.tickFormat=function(r,i){return kh(t[0],Je(t),r==null?10:r,i)},n.copy=function(){return rd().domain(n.domain()).range(n.range())},n}const Ro={};function Rb(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?Bb(o):o.invertExtent?Lb(o):void 0),o.type=t,o};return r.metadata=fo(ea(n)),r}function V(t,e,n){return arguments.length>1?(Ro[t]=Rb(t,e,n),this):jb(t)?Ro[t]:void 0}V(kb,Lh),V($n,Bh,ue),V(Yt,oc,[ue,Yt]),V(ni,cc,ue),V(ri,Sb,ue),V(zo,Uh,ue),V(qh,Mb,[ue,td]),V(Kh,Tb,[ue,td]),V(lt,lc,[ue,Ye]),V("".concat(lt,"-").concat($n),lc,[ue,Ye]),V("".concat(lt,"-").concat(Yt),Yh,[ue,Ye,Yt]),V("".concat(lt,"-").concat(ni),fc,[ue,Ye]),V("".concat(lt,"-").concat(ri),Ib,[ue,Ye]),V("".concat(lt,"-").concat(zo),Wh,[ue,Ye]),V("".concat(er,"-").concat($n),_h,[ue,Ye]),V("".concat(er,"-").concat(Yt),Xh,[ue,Ye,Yt]),V("".concat(er,"-").concat(ni),hc,[ue,Ye]),V("".concat(er,"-").concat(ri),Nb,[ue,Ye]),V("".concat(er,"-").concat(zo),Zh,[ue,Ye]),V(pc,Hh,[oi,pc]),V(Jh,Qh,oi),V($h,Vh,oi),V(yc,rd,[ii,oi]),V(gc,za,ii),V(ed,Ac,ii),V(mc,Ob,ii);function jb(t){return hn(Ro,t)}function si(t,e){const n=Ro[t];return n&&n.metadata[e]}function tt(t){return si(t,ue)}function Wt(t){return si(t,ii)}function tr(t){return si(t,oi)}function id(t){return si(t,Yt)}function jo(t){return si(t,Ye)}function Ub(t,e){const n=e[0],r=Je(e)-n;return function(i){return t(n+i*r)}}function Uo(t,e,n){return tc(od(e||"rgb",n),t)}function Gb(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function od(t,e){const n=hb[Hb(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function Hb(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const Qb={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"},Vb={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 sd(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 ad(t,e){for(const n in t)bc(n,e(t[n]))}const cd={};ad(Vb,sd),ad(Qb,t=>Uo(sd(t)));function bc(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(cd[t]=e,this):cd[t]}var fT="";function Yb(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?yv(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:a,formatBody:s,formatRows:c,formatRow:u,formatValue:f}}var vv=gd(" "),bv=vv.parseRows;function Av(t){return t}function xv(t){if(t==null)return Av;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 wv(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Cv(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=xv(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&&wv(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 Sv(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 y=p===h?h:p.concat(h);r[y.start=p.start]=i[y.end=h.end]=y}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 Ev(t){return vd(t,Dv.apply(this,arguments))}function Dv(t,e,n){var r,i,o;if(arguments.length>1)r=Mv(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:Sv(t,r)}}function Mv(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 Tv(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function qo(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===Tv?t:Iv,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 Iv(){return 0}function bd(t){return t===null?NaN:+t}const Ad=qo(Dn),tc=Ad.right;Ad.left,qo(bd).center;var dr=tc;function kv(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 Mn extends Map{constructor(e,n=Bv){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(Nv(this,e),n)}delete(e){return super.delete(Lv(this,e))}}function xd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Nv({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Lv({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Bv(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Ko(t){return t}function oi(t,...e){return nc(t,Ko,Ko,e)}function Ov(t,...e){return nc(t,Array.from,Ko,e)}function Pv(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 Mn,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 Fv(t,e){return Array.from(e,n=>t[n])}function zv(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]))),Fv(t,r)}return t.sort(Rv(n))}function Rv(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 Tn(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 jv(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 hr(t){return t=ea(Math.abs(t)),t?t[1]:NaN}function Uv(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 Gv(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Hv=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Wt(t){if(!(e=Hv.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 Qv(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 Vv(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:jv,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:Vv,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 Yv(t){var e=t.grouping===void 0||t.thousands===void 0?Dd:Uv(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:Gv(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,y=l.zero,g=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"),(y||d==="0"&&h==="=")&&(y=!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=Qv(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&&!y&&(I=e(I,1/0));var W=P.length+I.length+Z.length,We=W<g?new Array(g-W+1).join(d):"";switch(x&&y&&(I=e(We+I,We.length?g-Z.length:1/0),We=""),h){case"<":I=P+I+Z+We;break;case"=":I=P+We+I+Z;break;case"^":I=We.slice(0,W=We.length>>1)+P+I+Z+We.slice(W);break;default:I=We+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(hr(d)/3)))*3,m=Math.pow(10,-p),y=Td[8+p/3];return function(g){return h(m*g)+y}}return{format:u,formatPrefix:f}}var ta,he,uc;_v({thousands:",",grouping:[3],currency:["$",""]});function _v(t){return ta=Yv(t),he=ta.format,uc=ta.formatPrefix,ta}function Id(t){return Math.max(0,-hr(Math.abs(t)))}function kd(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(hr(e)/3)))*3-hr(Math.abs(t)))}function Nd(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,hr(e)-hr(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,Ke=Mt*60,Tt=Ke*60,In=Tt*24,pc=In*7,Ld=In*30,mc=In*365;var Wv=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=Wv,Xv=me(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Mt)},function(t,e){t.setTime(+t+e*Ke)},function(t,e){return(e-t)/Ke},function(t){return t.getMinutes()}),gc=Xv,Zv=me(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Mt-t.getMinutes()*Ke)},function(t,e){t.setTime(+t+e*Tt)},function(t,e){return(e-t)/Tt},function(t){return t.getHours()}),yc=Zv,qv=me(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ke)/In,t=>t.getDate()-1),kn=qv;function Nn(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())*Ke)/pc})}var na=Nn(0),vc=Nn(1);Nn(2),Nn(3);var ai=Nn(4);Nn(5),Nn(6);var Kv=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=Kv,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,Jv=me(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Ke)},function(t,e){return(e-t)/Ke},function(t){return t.getUTCMinutes()}),bc=Jv,$v=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=$v,eb=me(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/In},function(t){return t.getUTCDate()-1}),Ln=eb;function Bn(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=Bn(0),xc=Bn(1);Bn(2),Bn(3);var si=Bn(4);Bn(5),Bn(6);var tb=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=tb,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,Ke],[o,5,5*Ke],[o,15,15*Ke],[o,30,30*Ke],[i,1,Tt],[i,3,3*Tt],[i,6,6*Tt],[i,12,12*Tt],[r,1,In],[r,2,2*In],[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=qo(([,,y])=>y).right(a,d);if(h===a.length)return t.every(Tn(u/mc,f/mc,l));if(h===0)return hc.every(Math.max(Tn(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[nb,rb]=Pd(qt,oa,ia,Ln,Ac,bc),[ib,ob]=Pd(Zt,ra,na,kn,yc,gc),ci="year",ui="quarter",li="month",fi="week",di="date",aa="day",wc="dayofyear",hi="hours",pi="minutes",mi="seconds",sa="milliseconds";[ci,ui,li,fi,di,aa,wc,hi,pi,mi,sa].reduce((t,e,n)=>(t[e]=1+n,t),{});const ab={[ci]:Zt,[ui]:ra.every(3),[li]:ra,[fi]:na,[di]:kn,[aa]:kn,[wc]:kn,[hi]:yc,[pi]:gc,[mi]:Xt,[sa]:hc},sb={[ci]:qt,[ui]:oa.every(3),[li]:oa,[fi]:ia,[di]:Ln,[aa]:Ln,[wc]:Ln,[hi]:Ac,[pi]:bc,[mi]:Xt,[sa]:hc};function cb(t){return ab[t]}function ub(t){return sb[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 gi(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=yi(i),f=vi(i),l=yi(o),d=vi(o),h=yi(a),p=vi(a),m=yi(s),y=vi(s),g=yi(c),x=vi(c),A={a:Cn,A:W,b:We,B:Ro,c:null,d:Hd,e:Hd,f:Lb,g:Hb,G:Vb,H:Ib,I:kb,j:Nb,L:Qd,m:Bb,M:Ob,p:jo,q:Vs,Q:Zd,s:qd,S:Pb,u:Fb,U:zb,V:Rb,w:jb,W:Ub,x:null,X:null,y:Gb,Y:Qb,Z:Yb,"%":Xd},C={a:ed,A:Ik,b:kk,B:Nk,c:null,d:Yd,e:Yd,f:Zb,g:oA,G:sA,H:_b,I:Wb,j:Xb,L:_d,m:qb,M:Kb,p:Lk,q:Bk,Q:Zd,s:qd,S:Jb,u:$b,U:eA,V:tA,w:nA,W:rA,x:null,X:null,y:iA,Y:aA,Z:cA,"%":Xd},b={a:L,A:I,b:P,B:Z,c:Q,d:Ud,e:Ud,f:Eb,g:jd,G:Rd,H:Gd,I:Gd,j:xb,L:Sb,m:Ab,M:wb,p:k,q:bb,Q:Mb,s:Tb,S:Cb,u:pb,U:mb,V:gb,w:hb,W:yb,x:fe,X:Se,y:jd,Y:Rd,Z:vb,"%":Db};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=[],Re=-1,$=0,Xe=O.length,Ze,fr,F2;for(X instanceof Date||(X=new Date(+X));++Re<Xe;)O.charCodeAt(Re)===37&&(M.push(O.slice($,Re)),(fr=zd[Ze=O.charAt(++Re)])!=null?Ze=O.charAt(++Re):fr=Ze==="e"?" ":"0",(F2=H[Ze])&&(Ze=F2(X,fr)),M.push(Ze),$=Re+1);return M.push(O.slice($,Re)),M.join("")}}function w(O,H){return function(X){var M=gi(1900,void 0,1),Re=E(M,O,X+="",0),$,Xe;if(Re!=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(gi(M.y,0,1)),Xe=$.getUTCDay(),$=Xe>4||Xe===0?xc.ceil($):xc($),$=Ln.offset($,(M.V-1)*7),M.y=$.getUTCFullYear(),M.m=$.getUTCMonth(),M.d=$.getUTCDate()+(M.w+6)%7):($=Cc(gi(M.y,0,1)),Xe=$.getDay(),$=Xe>4||Xe===0?vc.ceil($):vc($),$=kn.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),Xe="Z"in M?Sc(gi(M.y,0,1)).getUTCDay():Cc(gi(M.y,0,1)).getDay(),M.m=0,M.d="W"in M?(M.w+6)%7+M.W*7-(Xe+5)%7:M.w+M.U*7-(Xe+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 Re=0,$=H.length,Xe=X.length,Ze,fr;Re<$;){if(M>=Xe)return-1;if(Ze=H.charCodeAt(Re++),Ze===37){if(Ze=H.charAt(Re++),fr=b[Ze in zd?H.charAt(Re++):Ze],!fr||(M=fr(O,X,M))<0)return-1}else if(Ze!=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=g.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=y.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 We(O){return c[O.getMonth()]}function Ro(O){return s[O.getMonth()]}function jo(O){return i[+(O.getHours()>=12)]}function Vs(O){return 1+~~(O.getMonth()/3)}function ed(O){return a[O.getUTCDay()]}function Ik(O){return o[O.getUTCDay()]}function kk(O){return c[O.getUTCMonth()]}function Nk(O){return s[O.getUTCMonth()]}function Lk(O){return i[+(O.getUTCHours()>=12)]}function Bk(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+/,lb=/^%/,fb=/[\\^$*+?|[\]().{}]/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 db(t){return t.replace(fb,"\\$&")}function yi(t){return new RegExp("^(?:"+t.map(db).join("|")+")","i")}function vi(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function hb(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function pb(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function mb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function gb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function yb(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 vb(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 bb(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 Ab(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 xb(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 wb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Cb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Sb(t,e,n){var r=ge.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Eb(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 Db(t,e,n){var r=lb.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Mb(t,e,n){var r=ge.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Tb(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 Ib(t,e){return Y(t.getHours(),e,2)}function kb(t,e){return Y(t.getHours()%12||12,e,2)}function Nb(t,e){return Y(1+kn.count(Zt(t),t),e,3)}function Qd(t,e){return Y(t.getMilliseconds(),e,3)}function Lb(t,e){return Qd(t,e)+"000"}function Bb(t,e){return Y(t.getMonth()+1,e,2)}function Ob(t,e){return Y(t.getMinutes(),e,2)}function Pb(t,e){return Y(t.getSeconds(),e,2)}function Fb(t){var e=t.getDay();return e===0?7:e}function zb(t,e){return Y(na.count(Zt(t)-1,t),e,2)}function Vd(t){var e=t.getDay();return e>=4||e===0?ai(t):ai.ceil(t)}function Rb(t,e){return t=Vd(t),Y(ai.count(Zt(t),t)+(Zt(t).getDay()===4),e,2)}function jb(t){return t.getDay()}function Ub(t,e){return Y(vc.count(Zt(t)-1,t),e,2)}function Gb(t,e){return Y(t.getFullYear()%100,e,2)}function Hb(t,e){return t=Vd(t),Y(t.getFullYear()%100,e,2)}function Qb(t,e){return Y(t.getFullYear()%1e4,e,4)}function Vb(t,e){var n=t.getDay();return t=n>=4||n===0?ai(t):ai.ceil(t),Y(t.getFullYear()%1e4,e,4)}function Yb(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 _b(t,e){return Y(t.getUTCHours(),e,2)}function Wb(t,e){return Y(t.getUTCHours()%12||12,e,2)}function Xb(t,e){return Y(1+Ln.count(qt(t),t),e,3)}function _d(t,e){return Y(t.getUTCMilliseconds(),e,3)}function Zb(t,e){return _d(t,e)+"000"}function qb(t,e){return Y(t.getUTCMonth()+1,e,2)}function Kb(t,e){return Y(t.getUTCMinutes(),e,2)}function Jb(t,e){return Y(t.getUTCSeconds(),e,2)}function $b(t){var e=t.getUTCDay();return e===0?7:e}function eA(t,e){return Y(ia.count(qt(t)-1,t),e,2)}function Wd(t){var e=t.getUTCDay();return e>=4||e===0?si(t):si.ceil(t)}function tA(t,e){return t=Wd(t),Y(si.count(qt(t),t)+(qt(t).getUTCDay()===4),e,2)}function nA(t){return t.getUTCDay()}function rA(t,e){return Y(xc.count(qt(t)-1,t),e,2)}function iA(t,e){return Y(t.getUTCFullYear()%100,e,2)}function oA(t,e){return t=Wd(t),Y(t.getUTCFullYear()%100,e,2)}function aA(t,e){return Y(t.getUTCFullYear()%1e4,e,4)}function sA(t,e){var n=t.getUTCDay();return t=n>=4||n===0?si(t):si.ceil(t),Y(t.getUTCFullYear()%1e4,e,4)}function cA(){return"+0000"}function Xd(){return"%"}function Zd(t){return+t}function qd(t){return Math.floor(+t/1e3)}var pr,Ec,Kd,Dc,Jd;uA({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 uA(t){return pr=Fd(t),Ec=pr.format,Kd=pr.parse,Dc=pr.utcFormat,Jd=pr.utcParse,pr}function bi(t){const e={};return n=>e[n]||(e[n]=t(n))}function lA(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=fA(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 fA(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 dA(t){const e=bi(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 lA(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,a){a=Wt(a==null?",f":a);const s=Tn(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)}}}hA();function hA(){return dA({format:he,formatPrefix:uc})}function $d(t,e,n){n=n||{},je(n)||ce("Invalid time multi-format specifier: ".concat(n));const r=e(mi),i=e(pi),o=e(hi),a=e(di),s=e(fi),c=e(li),u=e(ui),f=e(ci),l=t(n[sa]||".%L"),d=t(n[mi]||":%S"),h=t(n[pi]||"%I:%M"),p=t(n[hi]||"%I %p"),m=t(n[di]||n[aa]||"%a %d"),y=t(n[fi]||"%b %d"),g=t(n[li]||"%B"),x=t(n[ui]||"%B"),A=t(n[ci]||"%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:y:f(C)<C?u(C)<C?g:x:A)(C)}function eh(t){const e=bi(t.format),n=bi(t.utcFormat);return{timeFormat:r=>re(r)?e(r):$d(e,cb,r),utcFormat:r=>re(r)?n(r):$d(n,ub,r),timeParse:bi(t.parse),utcParse:bi(t.utcParse)}}let Mc;pA();function pA(){return Mc=eh({format:Ec,parse:Kd,utcFormat:Dc,utcParse:Jd})}function mA(t){return eh(Fd(t))}function gA(t){return arguments.length?Mc=mA(t):Mc}const yA=/^(data:|([A-Za-z]+:)?\/\/)/,vA=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,bA=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,th="file://";function AA(t,e){return n=>({options:n||{},sanitize:wA,load:xA,fileAccess:!!e,file:CA(e),http:EA(t)})}async function xA(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function wA(t,e){e=Ks({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,a;const s=vA.test(t.replace(bA,""));(t==null||typeof t!="string"||!s)&&ce("Sanitize failure, invalid URI: "+Xo(t));const c=yA.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 CA(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):SA}async function SA(){ce("No file system access.")}function EA(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?Be(o[i])?o[i]():o.text():ce(o.status+""+o.statusText)}:DA}async function DA(){ce("No HTTP fetch method available.")}const MA=t=>t!=null&&t===t,TA=t=>t==="true"||t==="false"||t===!0||t===!1,IA=t=>!Number.isNaN(Date.parse(t)),nh=t=>!Number.isNaN(+t)&&!(t instanceof Date),kA=t=>nh(t)&&Number.isInteger(+t),rh={boolean:fv,integer:ri,number:ri,date:hv,string:pv,unknown:Qo},ca=[TA,kA,nh,IA],NA=["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]&&MA(c)&&!ca[s](c)&&(i[s]=0,++a,a===ca.length))return"string";return NA[i.reduce((o,a)=>o===0?a:o,0)-1]}function LA(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(Xo).join(e.delimiter)+`
|
6
|
+
`+t),gd(e.delimiter).parse(t+"")}Tc.responseType="text";function BA(t){return typeof Buffer=="function"&&Be(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function Ic(t,e){const n=e&&e.property?Ho(e.property):Qo;return je(t)&&!BA(t)?OA(n(t),e):n(JSON.parse(t))}Ic.responseType="json";function OA(t,e){return!qe(t)&&uv(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const PA={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=Cv,i=e.feature):e&&e.mesh?(n=Ev,i=e.mesh,o=PA[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&&FA(t,e.parse,n,r),En(t,"columns")&&delete t.columns,t}function FA(t,e,n,r){if(!t.length)return;const i=gA();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=LA(t,o)),o=Object.keys(e);const d=o.map(h=>{const p=e[h];let m,y;if(p&&(p.startsWith("date:")||p.startsWith("utc:")))return m=p.split(/:(.+)?/,2),y=m[1],(y[0]==="'"&&y[y.length-1]==="'"||y[0]==='"'&&y[y.length-1]==='"')&&(y=y.slice(1,-1)),(m[0]==="utc"?r:n)(y);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 Ai=AA(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=kv(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=Tn(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 zA(){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,Tn(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=Tn(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 RA(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 Mn,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 Mn;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 mr(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function xi(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Jt(){}var On=.7,gr=1/On,yr="\\s*([+-]?\\d+)\\s*",wi="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",pt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",jA=/^#([0-9a-f]{3,8})$/,UA=new RegExp(`^rgb\\(${yr},${yr},${yr}\\)$`),GA=new RegExp(`^rgb\\(${pt},${pt},${pt}\\)$`),HA=new RegExp(`^rgba\\(${yr},${yr},${yr},${wi}\\)$`),QA=new RegExp(`^rgba\\(${pt},${pt},${pt},${wi}\\)$`),VA=new RegExp(`^hsl\\(${wi},${pt},${pt}\\)$`),YA=new RegExp(`^hsla\\(${wi},${pt},${pt},${wi}\\)$`),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};mr(Jt,Pn,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:fh,formatHex:fh,formatHex8:_A,formatHsl:WA,formatRgb:dh,toString:dh});function fh(){return this.rgb().formatHex()}function _A(){return this.rgb().formatHex8()}function WA(){return yh(this).formatHsl()}function dh(){return this.rgb().formatRgb()}function Pn(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=jA.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=UA.exec(t))?new ye(e[1],e[2],e[3],1):(e=GA.exec(t))?new ye(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=HA.exec(t))?ua(e[1],e[2],e[3],e[4]):(e=QA.exec(t))?ua(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=VA.exec(t))?gh(e[1],e[2]/100,e[3]/100,1):(e=YA.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=Pn(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}mr(ye,la,xi(Jt,{brighter(t){return t=t==null?gr:Math.pow(gr,t),new ye(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?On:Math.pow(On,t),new ye(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ye(Fn(this.r),Fn(this.g),Fn(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:XA,formatRgb:mh,toString:mh}));function ph(){return`#${zn(this.r)}${zn(this.g)}${zn(this.b)}`}function XA(){return`#${zn(this.r)}${zn(this.g)}${zn(this.b)}${zn((isNaN(this.opacity)?1:this.opacity)*255)}`}function mh(){const t=fa(this.opacity);return`${t===1?"rgb(":"rgba("}${Fn(this.r)}, ${Fn(this.g)}, ${Fn(this.b)}${t===1?")":`, ${t})`}`}function fa(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Fn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function zn(t){return t=Fn(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 ot(t,e,n,r)}function yh(t){if(t instanceof ot)return new ot(t.h,t.s,t.l,t.opacity);if(t instanceof Jt||(t=Pn(t)),!t)return new ot;if(t instanceof ot)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 ot(a,s,c,t.opacity)}function Pc(t,e,n,r){return arguments.length===1?yh(t):new ot(t,e,n,r==null?1:r)}function ot(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}mr(ot,Pc,xi(Jt,{brighter(t){return t=t==null?gr:Math.pow(gr,t),new ot(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?On:Math.pow(On,t),new ot(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 ot(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,vr=6/29,Eh=3*vr*vr,ZA=vr*vr*vr;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}mr(mt,zc,xi(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>ZA?Math.pow(t,1/3):t/Eh+Sh}function jc(t){return t>vr?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 qA(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?qA(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)}mr(It,Hc,xi(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,Ci=1.97294,Ih=Ci*pa,kh=Ci*Qc,Nh=Qc*Vc-pa*Th;function KA(t){if(t instanceof Rn)return new Rn(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=(Ci*(n-i)-Vc*o)/pa,s=Math.sqrt(a*a+o*o)/(Ci*i*(1-i)),c=s?Math.atan2(a,o)*Ah-120:NaN;return new Rn(c<0?c+360:c,s,i,t.opacity)}function Yc(t,e,n,r){return arguments.length===1?KA(t):new Rn(t,e,n,r==null?1:r)}function Rn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}mr(Rn,Yc,xi(Jt,{brighter(t){return t=t==null?gr:Math.pow(gr,t),new Rn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?On:Math.pow(On,t),new Rn(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*(Ci*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 JA(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 $A(t){return(t=+t)==1?ve:function(e,n){return n-e?JA(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=$A(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 ex=Fh(Bh),tx=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 nx(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 at(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 rx(t){return function(){return t}}function ix(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:at(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]?ix(c[0].x):rx(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"?at:n==="string"?(r=Pn(e))?(e=r,_c):Gh:e instanceof Pn?_c:e instanceof Date?jh:zh(e)?Wc:Array.isArray(e)?Rh:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?Uh:at)(t,e)}function ox(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function ax(t,e){var n=ga(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function Si(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 sx(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 cx(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:at(u,l)},{i:m-2,x:at(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:at(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:at(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:at(u,l)},{i:m-2,x:at(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,y;++p<m;)l[(y=d[p]).i]=y.x(h);return l.join("")}}}var ux=Vh(sx,"px, ","px)","deg)"),lx=Vh(cx,", ",")",")"),fx=1e-12;function Yh(t){return((t=Math.exp(t))+1/t)/2}function dx(t){return((t=Math.exp(t))-1/t)/2}function hx(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,y,g;if(m<fx)g=Math.log(d/u)/e,y=function(w){return[s+w*h,c+w*p,u*Math.exp(e*w*g)]};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);g=(v-b)/e,y=function(w){var E=w*g,k=Yh(b),L=u/(n*x)*(k*hx(e*E+b)-dx(b));return[s+L*h,c+L*p,u*k/Yh(e*E+b)]}}return y.duration=g*1e3*e/Math.SQRT2,y}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 px=Wh(ga),mx=Wh(ve);function gx(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 yx=Xh(ga),vx=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 bx=Zh(ga),Ax=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 xx(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var wx=Object.freeze(Object.defineProperty({__proto__:null,interpolate:$t,interpolateArray:nx,interpolateBasis:Bh,interpolateBasisClosed:Oh,interpolateDate:jh,interpolateDiscrete:ox,interpolateHue:ax,interpolateNumber:at,interpolateNumberArray:Wc,interpolateObject:Uh,interpolateRound:Si,interpolateString:Gh,interpolateTransformCss:ux,interpolateTransformSvg:lx,interpolateZoom:_h,interpolateRgb:_c,interpolateRgbBasis:ex,interpolateRgbBasisClosed:tx,interpolateHsl:px,interpolateHslLong:mx,interpolateLab:gx,interpolateHcl:yx,interpolateHclLong:vx,interpolateCubehelix:bx,interpolateCubehelixLong:Ax,piecewise:Kc,quantize:xx},Symbol.toStringTag,{value:"Module"}));function Cx(t){return function(){return t}}function Jc(t){return+t}var qh=[0,1];function Pe(t){return t}function $c(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Cx(isNaN(e)?NaN:.5)}function Sx(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Ex(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 Dx(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=dr(t,s,1,r)-1;return o[c](i[c](s))}}function Ei(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=Pe,s,c,u;function f(){var d=Math.min(t.length,e.length);return a!==Pe&&(a=Sx(t[0],t[d-1])),s=d>2?Dx:Ex,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),at)))(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=Si,f()},l.clamp=function(d){return arguments.length?(a=d?!0:Pe,f()):a!==Pe},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()(Pe,Pe)}function Jh(t,e,n,r){var i=Tn(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 jn(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 Ei(t,$h())},ht.apply(t,arguments),jn(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],jn(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 Mx(t){return-Math.log(-t)}function Tx(t){return-Math.exp(-t)}function Ix(t){return isFinite(t)?+("1e"+t):t<0?0:t}function kx(t){return t===10?Ix:t===Math.E?Math.exp:e=>Math.pow(t,e)}function Nx(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=Nx(r),o=kx(r),n()[0]<0?(i=i0(i),o=i0(o),t(Mx,Tx)):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 y=s==null?10:+s;let g=[];if(!(r%1)&&h-d<y){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;g.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;g.push(m)}g.length*2<y&&(g=Jo(u,f,y))}else g=Jo(d,h,Math.min(h-d,y)).map(o);return l?g.reverse():g},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=()=>Ei(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},jn(n)}function s0(){var t=nu(va());return t.copy=function(){return Ei(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 Lx(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Bx(t){return t<0?-t*t:t*t}function ru(t){var e=t(Pe,Pe),n=1;function r(){return n===1?t(Pe,Pe):n===.5?t(Lx,Bx):t(c0(n),c0(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},jn(e)}function iu(){var t=ru(va());return t.copy=function(){return Ei(t,iu()).exponent(t.exponent())},ht.apply(t,arguments),t}function Ox(){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[dr(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[dr(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(jn(a),arguments)}function f0(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[dr(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 Px(t){return new Date(t)}function Fx(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"),y=u("%I %p"),g=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?y:r(v)<v?i(v)<v?g: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,Fx)):d().map(Px)},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 Ei(f,ou(t,e,n,r,i,o,a,s,c,u))},f}function zx(){return ht.apply(ou(ib,ob,Zt,ra,na,kn,yc,gc,Xt,Ec).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Rx(){return ht.apply(ou(nb,rb,qt,oa,ia,Ln,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=Pe,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(Si),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=jn(ba()(Pe));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 jx(){return su.apply(null,arguments).exponent(.5)}function Aa(){var t=0,e=.5,n=1,r=1,i,o,a,s,c,u=Pe,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(y){var g,x,A;return arguments.length?([g,x,A]=y,u=Kc(m,[g,x,A]),h):[u(0),u(.5),u(1)]}}return h.range=p($t),h.rangeRound=p(Si),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=jn(Aa()(Pe));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 Ux(){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 Gx="identity",br="linear",tn="log",Di="pow",Mi="sqrt",xa="symlog",y0="time",v0="utc",gt="sequential",Ar="diverging",lu="quantile",b0="quantize",A0="threshold",fu="ordinal",du="point",x0="band",hu="bin-ordinal",pe="continuous",Ti="discrete",Ii="discretizing",Je="interpolating",w0="temporal";function Hx(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 Qx(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 y=_t(l).map(g=>m+i*g);return n(d?y.reverse():y)}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],y=+l[1],g,x,A;if(!(m!==m||y!==y)&&(y<m&&(A=m,m=y,y=A),!(y<h[0]||m>r[1-d])))return g=Math.max(0,tc(h,m)-1),x=m===y?g:tc(h,y)-1,m-h[g]>o+1e-10&&++g,d&&(A=g,g=p-x,x=p-A),g>x?void 0:e().slice(g,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 Vx(){return C0(pu().paddingInner(1))}var Yx=Array.prototype.map;function _x(t){return Yx.call(t,ri)}const Wx=Array.prototype.slice;function S0(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(dr(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=_x(r),n):t.slice()},n.range=function(r){return arguments.length?(e=Wx.call(r),n):e.slice()},n.tickFormat=function(r,i){return Jh(t[0],it(t),r==null?10:r,i)},n.copy=function(){return S0().domain(n.domain()).range(n.range())},n}const wa={};function Xx(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?Hx(o):o.invertExtent?Qx(o):void 0),o.type=t,o};return r.metadata=Zo(qs(n)),r}function q(t,e,n){return arguments.length>1?(wa[t]=Xx(t,e,n),this):Zx(t)?wa[t]:void 0}q(Gx,e0),q(br,$h,pe),q(tn,tu,[pe,tn]),q(Di,iu,pe),q(Mi,Ox,pe),q(xa,s0,pe),q(y0,zx,[pe,w0]),q(v0,Rx,[pe,w0]),q(gt,au,[pe,Je]),q("".concat(gt,"-").concat(br),au,[pe,Je]),q("".concat(gt,"-").concat(tn),d0,[pe,Je,tn]),q("".concat(gt,"-").concat(Di),su,[pe,Je]),q("".concat(gt,"-").concat(Mi),jx,[pe,Je]),q("".concat(gt,"-").concat(xa),h0,[pe,Je]),q("".concat(Ar,"-").concat(br),p0,[pe,Je]),q("".concat(Ar,"-").concat(tn),m0,[pe,Je,tn]),q("".concat(Ar,"-").concat(Di),cu,[pe,Je]),q("".concat(Ar,"-").concat(Mi),Ux,[pe,Je]),q("".concat(Ar,"-").concat(xa),g0,[pe,Je]),q(lu,u0,[Ii,lu]),q(b0,l0,Ii),q(A0,f0,Ii),q(hu,S0,[Ti,Ii]),q(fu,Bc,Ti),q(x0,pu,Ti),q(du,Vx,Ti);function Zx(t){return En(wa,t)}function ki(t,e){const n=wa[t];return n&&n.metadata[e]}function Ue(t){return ki(t,pe)}function nn(t){return ki(t,Ti)}function xr(t){return ki(t,Ii)}function E0(t){return ki(t,tn)}function Ca(t){return ki(t,Je)}function qx(t,e){const n=e[0],r=it(e)-n;return function(i){return t(n+i*r)}}function Sa(t,e,n){return Kc(D0(e||"rgb",n),t)}function Kx(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=wx[Jx(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function Jx(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const $x={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"},ew={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(ew,M0),T0($x,t=>Sa(M0(t)));function mu(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(I0[t]=e,this):I0[t]}var Rk="";function tw(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 vc;const nr=globalThis.trustedTypes,ud=nr?nr.createPolicy("lit-html",{createHTML:t=>t}):void 0,_t=`lit$${(Math.random()+"").slice(9)}$`,ld="?"+_t,Wb=`<${ld}>`,rr=document,ai=(t="")=>rr.createComment(t),ci=t=>t===null||typeof t!="object"&&typeof t!="function",fd=Array.isArray,_b=t=>{var e;return fd(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},ui=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,hd=/-->/g,dd=/>/g,En=/>|[ \n\r](?:([^\s"'>=/]+)([ \n\r]*=[ \n\r]*(?:[^ \n\r"'`<>=]|("|')|))|$)/g,pd=/'/g,gd=/"/g,md=/^(?:script|style|textarea|title)$/i,Xb=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),D=Xb(1),be=Symbol.for("lit-noChange"),z=Symbol.for("lit-nothing"),yd=new WeakMap,Fe=(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 fi(e.insertBefore(ai(),a),a,void 0,n!=null?n:{})}return s._$AI(t),s},ir=rr.createTreeWalker(rr,129,null,!1),Zb=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",s=ui;for(let c=0;c<n;c++){const u=t[c];let f,l,h=-1,p=0;for(;p<u.length&&(s.lastIndex=p,l=s.exec(u),l!==null);)p=s.lastIndex,s===ui?l[1]==="!--"?s=hd:l[1]!==void 0?s=dd:l[2]!==void 0?(md.test(l[2])&&(i=RegExp("</"+l[2],"g")),s=En):l[3]!==void 0&&(s=En):s===En?l[0]===">"?(s=i!=null?i:ui,h=-1):l[1]===void 0?h=-2:(h=s.lastIndex-l[2].length,f=l[1],s=l[3]===void 0?En:l[3]==='"'?gd:pd):s===gd||s===pd?s=En:s===hd||s===dd?s=ui:(s=En,i=void 0);const d=s===En&&t[c+1].startsWith("/>")?" ":"";o+=s===ui?u+Wb:h>=0?(r.push(f),u.slice(0,h)+"$lit$"+u.slice(h)+_t+d):u+_t+(h===-2?(r.push(void 0),c):d)}const a=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[ud!==void 0?ud.createHTML(a):a,r]};class li{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]=Zb(e,n);if(this.el=li.createElement(u,r),ir.currentNode=this.el.content,n===2){const l=this.el.content,h=l.firstChild;h.remove(),l.append(...h.childNodes)}for(;(i=ir.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(_t)){const p=f[s++];if(l.push(h),p!==void 0){const d=i.getAttribute(p.toLowerCase()+"$lit$").split(_t),g=/([.?@])?(.*)/.exec(p);c.push({type:1,index:o,name:g[2],strings:d,ctor:g[1]==="."?Kb:g[1]==="?"?$b:g[1]==="@"?ev:Go})}else c.push({type:6,index:o})}for(const h of l)i.removeAttribute(h)}if(md.test(i.tagName)){const l=i.textContent.split(_t),h=l.length-1;if(h>0){i.textContent=nr?nr.emptyScript:"";for(let p=0;p<h;p++)i.append(l[p],ai()),ir.nextNode(),c.push({type:2,index:++o});i.append(l[h],ai())}}}else if(i.nodeType===8)if(i.data===ld)c.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(_t,l+1))!==-1;)c.push({type:7,index:o}),l+=_t.length-1}o++}}static createElement(e,n){const r=rr.createElement("template");return r.innerHTML=e,r}}function or(t,e,n=t,r){var i,o,s,a;if(e===be)return e;let c=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const u=ci(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=or(t,c._$AS(t,e.values),c,r)),e}class qb{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:rr).importNode(r,!0);ir.currentNode=o;let s=ir.nextNode(),a=0,c=0,u=i[0];for(;u!==void 0;){if(a===u.index){let f;u.type===2?f=new fi(s,s.nextSibling,this,e):u.type===1?f=new u.ctor(s,u.name,u.strings,this,e):u.type===6&&(f=new tv(s,this,e)),this.v.push(f),u=i[++c]}a!==(u==null?void 0:u.index)&&(s=ir.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 fi{constructor(e,n,r,i){var o;this.type=2,this._$AH=z,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=or(this,e,n),ci(e)?e===z||e==null||e===""?(this._$AH!==z&&this._$AR(),this._$AH=z):e!==this._$AH&&e!==be&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.k(e):_b(e)?this.S(e):this.$(e)}A(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}k(e){this._$AH!==e&&(this._$AR(),this._$AH=this.A(e))}$(e){this._$AH!==z&&ci(this._$AH)?this._$AA.nextSibling.data=e:this.k(rr.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=li.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 qb(o,this),a=s.p(this.options);s.m(r),this.k(a),this._$AH=s}}_$AC(e){let n=yd.get(e.strings);return n===void 0&&yd.set(e.strings,n=new li(e)),n}S(e){fd(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.A(ai()),this.A(ai()),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 Go{constructor(e,n,r,i,o){this.type=1,this._$AH=z,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=z}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=or(this,e,n,0),s=!ci(e)||e!==this._$AH&&e!==be,s&&(this._$AH=e);else{const a=e;let c,u;for(e=o[0],c=0;c<o.length-1;c++)u=or(this,a[r+c],n,c),u===be&&(u=this._$AH[c]),s||(s=!ci(u)||u!==this._$AH[c]),u===z?e=z:e!==z&&(e+=(u!=null?u:"")+o[c+1]),this._$AH[c]=u}s&&!i&&this.C(e)}C(e){e===z?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class Kb extends Go{constructor(){super(...arguments),this.type=3}C(e){this.element[this.name]=e===z?void 0:e}}const Jb=nr?nr.emptyScript:"";class $b extends Go{constructor(){super(...arguments),this.type=4}C(e){e&&e!==z?this.element.setAttribute(this.name,Jb):this.element.removeAttribute(this.name)}}class ev extends Go{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=or(this,e,n,0))!==null&&r!==void 0?r:z)===be)return;const i=this._$AH,o=e===z&&i!==z||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,s=e!==z&&(i===z||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 tv{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){or(this,e)}}const Ad=window.litHtmlPolyfillSupport;Ad==null||Ad(li,fi),((vc=globalThis.litHtmlVersions)!==null&&vc!==void 0?vc:globalThis.litHtmlVersions=[]).push("2.2.1");function bd(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function nv(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function We(t){return Array.isArray(t)?t:typeof t!="undefined"?[t]:[]}function le(t){return t[t.length-1]}const Dn="gs-suppress-tooltip";class rv{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=le(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=Yb(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&iv(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&&(Fe("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Fe(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 iv(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const ov="RawCode",sv="Literal",av="Property",cv="Identifier",uv="ArrayExpression",lv="BinaryExpression",fv="CallExpression",hv="ConditionalExpression",dv="LogicalExpression",pv="MemberExpression",gv="ObjectExpression",mv="UnaryExpression";function nt(t){this.type=t}nt.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=yv(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function yv(t){switch(t.type){case uv:return t.elements;case lv:case dv:return[t.left,t.right];case fv:return[t.callee].concat(t.arguments);case hv:return[t.test,t.consequent,t.alternate];case pv:return[t.object,t.property];case gv:return t.properties;case av:return[t.key,t.value];case mv:return[t.argument];case cv:case sv:case ov:default:return[]}}var ft,k,S,ve,W,Ho=1,hi=2,Mn=3,Xt=4,Qo=5,Tn=6,ke=7,di=8,Av=9;ft={},ft[Ho]="Boolean",ft[hi]="<end>",ft[Mn]="Identifier",ft[Xt]="Keyword",ft[Qo]="Null",ft[Tn]="Numeric",ft[ke]="Punctuator",ft[di]="String",ft[Av]="RegularExpression";var bv="ArrayExpression",vv="BinaryExpression",xv="CallExpression",wv="ConditionalExpression",vd="Identifier",Cv="Literal",Sv="LogicalExpression",Ev="MemberExpression",Dv="ObjectExpression",Mv="Property",Tv="UnaryExpression",ge="Unexpected token %0",Iv="Unexpected number",Nv="Unexpected string",kv="Unexpected identifier",Bv="Unexpected reserved word",Lv="Unexpected end of input",xc="Invalid regular expression",wc="Invalid regular expression: missing /",xd="Octal literals are not allowed in strict mode.",Ov="Duplicate data property in object literal not allowed in strict mode",me="ILLEGAL",pi="Disabled.",Pv=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]"),Fv=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 Vo(t,e){if(!t)throw new Error("ASSERT: "+e)}function St(t){return t>=48&&t<=57}function Cc(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function gi(t){return"01234567".indexOf(t)>=0}function zv(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 mi(t){return t===10||t===13||t===8232||t===8233}function yi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&Pv.test(String.fromCharCode(t))}function Yo(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&Fv.test(String.fromCharCode(t))}const Rv={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 wd(){for(;S<ve;){const t=k.charCodeAt(S);if(zv(t)||mi(t))++S;else break}}function Sc(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)S<ve&&Cc(k[S])?(r=k[S++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):U({},ge,me);return String.fromCharCode(i)}function jv(){var t,e,n,r;for(t=k[S],e=0,t==="}"&&U({},ge,me);S<ve&&(t=k[S++],!!Cc(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&U({},ge,me),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function Cd(){var t,e;for(t=k.charCodeAt(S++),e=String.fromCharCode(t),t===92&&(k.charCodeAt(S)!==117&&U({},ge,me),++S,t=Sc("u"),(!t||t==="\\"||!yi(t.charCodeAt(0)))&&U({},ge,me),e=t);S<ve&&(t=k.charCodeAt(S),!!Yo(t));)++S,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),k.charCodeAt(S)!==117&&U({},ge,me),++S,t=Sc("u"),(!t||t==="\\"||!Yo(t.charCodeAt(0)))&&U({},ge,me),e+=t);return e}function Uv(){var t,e;for(t=S++;S<ve;){if(e=k.charCodeAt(S),e===92)return S=t,Cd();if(Yo(e))++S;else break}return k.slice(t,S)}function Gv(){var t,e,n;return t=S,e=k.charCodeAt(S)===92?Cd():Uv(),e.length===1?n=Mn:Rv.hasOwnProperty(e)?n=Xt:e==="null"?n=Qo:e==="true"||e==="false"?n=Ho:n=Mn,{type:n,value:e,start:t,end:S}}function Ec(){var t=S,e=k.charCodeAt(S),n,r=k[S],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++S,{type:ke,value:String.fromCharCode(e),start:t,end:S};default:if(n=k.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:ke,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:S};case 33:case 61:return S+=2,k.charCodeAt(S)===61&&++S,{type:ke,value:k.slice(t,S),start:t,end:S}}}if(s=k.substr(S,4),s===">>>=")return S+=4,{type:ke,value:s,start:t,end:S};if(o=s.substr(0,3),o===">>>"||o==="<<="||o===">>=")return S+=3,{type:ke,value:o,start:t,end:S};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return S+=2,{type:ke,value:i,start:t,end:S};if(i==="//"&&U({},ge,me),"<>=!+-*%&|^/".indexOf(r)>=0)return++S,{type:ke,value:r,start:t,end:S};U({},ge,me)}function Hv(t){let e="";for(;S<ve&&Cc(k[S]);)e+=k[S++];return e.length===0&&U({},ge,me),yi(k.charCodeAt(S))&&U({},ge,me),{type:Tn,value:parseInt("0x"+e,16),start:t,end:S}}function Qv(t){let e="0"+k[S++];for(;S<ve&&gi(k[S]);)e+=k[S++];return(yi(k.charCodeAt(S))||St(k.charCodeAt(S)))&&U({},ge,me),{type:Tn,value:parseInt(e,8),octal:!0,start:t,end:S}}function Sd(){var t,e,n;if(n=k[S],Vo(St(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=S,t="",n!=="."){if(t=k[S++],n=k[S],t==="0"){if(n==="x"||n==="X")return++S,Hv(e);if(gi(n))return Qv(e);n&&St(n.charCodeAt(0))&&U({},ge,me)}for(;St(k.charCodeAt(S));)t+=k[S++];n=k[S]}if(n==="."){for(t+=k[S++];St(k.charCodeAt(S));)t+=k[S++];n=k[S]}if(n==="e"||n==="E")if(t+=k[S++],n=k[S],(n==="+"||n==="-")&&(t+=k[S++]),St(k.charCodeAt(S)))for(;St(k.charCodeAt(S));)t+=k[S++];else U({},ge,me);return yi(k.charCodeAt(S))&&U({},ge,me),{type:Tn,value:parseFloat(t),start:e,end:S}}function Vv(){var t="",e,n,r,i,o=!1;for(e=k[S],Vo(e==="'"||e==='"',"String literal must starts with a quote"),n=S,++S;S<ve;)if(r=k[S++],r===e){e="";break}else if(r==="\\")if(r=k[S++],!r||!mi(r.charCodeAt(0)))switch(r){case"u":case"x":k[S]==="{"?(++S,t+=jv()):t+=Sc(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:
|
12
|
-
`&&++S;else{if(mi(r.charCodeAt(0)))break;t+=r}return e!==""&&U({},ge,me),{type:di,value:t,octal:o,start:n,end:S}}function Yv(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";U({},xc)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{U({},xc)}try{return new RegExp(t,e)}catch{return null}}function Wv(){var t,e,n,r,i;for(t=k[S],Vo(t==="/","Regular expression literal must start with a slash"),e=k[S++],n=!1,r=!1;S<ve;)if(t=k[S++],e+=t,t==="\\")t=k[S++],mi(t.charCodeAt(0))&&U({},wc),e+=t;else if(mi(t.charCodeAt(0)))U({},wc);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||U({},wc),i=e.substr(1,e.length-2),{value:i,literal:e}}function _v(){var t,e,n;for(e="",n="";S<ve&&(t=k[S],!!Yo(t.charCodeAt(0)));)++S,t==="\\"&&S<ve?U({},ge,me):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&U({},xc,n),{value:n,literal:e}}function Xv(){var t,e,n,r;return W=null,wd(),t=S,e=Wv(),n=_v(),r=Yv(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:S}}function Zv(t){return t.type===Mn||t.type===Xt||t.type===Ho||t.type===Qo}function Ed(){if(wd(),S>=ve)return{type:hi,start:S,end:S};const t=k.charCodeAt(S);return yi(t)?Gv():t===40||t===41||t===59?Ec():t===39||t===34?Vv():t===46?St(k.charCodeAt(S+1))?Sd():Ec():St(t)?Sd():Ec()}function Be(){const t=W;return S=t.end,W=Ed(),S=t.end,t}function Dd(){const t=S;W=Ed(),S=t}function qv(t){const e=new nt(bv);return e.elements=t,e}function Md(t,e,n){const r=new nt(t==="||"||t==="&&"?Sv:vv);return r.operator=t,r.left=e,r.right=n,r}function Kv(t,e){const n=new nt(xv);return n.callee=t,n.arguments=e,n}function Jv(t,e,n){const r=new nt(wv);return r.test=t,r.consequent=e,r.alternate=n,r}function Dc(t){const e=new nt(vd);return e.name=t,e}function Ai(t){const e=new nt(Cv);return e.value=t.value,e.raw=k.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function Td(t,e,n){const r=new nt(Ev);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function $v(t){const e=new nt(Dv);return e.properties=t,e}function Id(t,e,n){const r=new nt(Mv);return r.key=e,r.value=n,r.kind=t,r}function ex(t,e){const n=new nt(Tv);return n.operator=t,n.argument=e,n.prefix=!0,n}function U(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,s)=>(Vo(s<r.length,"Message reference must be in range"),r[s]));throw n=new Error(i),n.index=S,n.description=i,n}function Wo(t){t.type===hi&&U(t,Lv),t.type===Tn&&U(t,Iv),t.type===di&&U(t,Nv),t.type===Mn&&U(t,kv),t.type===Xt&&U(t,Bv),U(t,ge,t.value)}function xe(t){const e=Be();(e.type!==ke||e.value!==t)&&Wo(e)}function J(t){return W.type===ke&&W.value===t}function Mc(t){return W.type===Xt&&W.value===t}function tx(){const t=[];for(S=W.start,xe("[");!J("]");)J(",")?(Be(),t.push(null)):(t.push(In()),J("]")||xe(","));return Be(),qv(t)}function Nd(){S=W.start;const t=Be();return t.type===di||t.type===Tn?(t.octal&&U(t,xd),Ai(t)):Dc(t.value)}function nx(){var t,e,n,r;if(S=W.start,t=W,t.type===Mn)return n=Nd(),xe(":"),r=In(),Id("init",n,r);if(t.type===hi||t.type===ke)Wo(t);else return e=Nd(),xe(":"),r=In(),Id("init",e,r)}function rx(){var t=[],e,n,r,i={},o=String;for(S=W.start,xe("{");!J("}");)e=nx(),e.key.type===vd?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?U({},Ov):i[r]=!0,t.push(e),J("}")||xe(",");return xe("}"),$v(t)}function ix(){xe("(");const t=Tc();return xe(")"),t}const ox={if:1};function sx(){var t,e,n;if(J("("))return ix();if(J("["))return tx();if(J("{"))return rx();if(t=W.type,S=W.start,t===Mn||ox[W.value])n=Dc(Be().value);else if(t===di||t===Tn)W.octal&&U(W,xd),n=Ai(Be());else{if(t===Xt)throw new Error(pi);t===Ho?(e=Be(),e.value=e.value==="true",n=Ai(e)):t===Qo?(e=Be(),e.value=null,n=Ai(e)):J("/")||J("/=")?(n=Ai(Xv()),Dd()):Wo(Be())}return n}function ax(){const t=[];if(xe("("),!J(")"))for(;S<ve&&(t.push(In()),!J(")"));)xe(",");return xe(")"),t}function cx(){S=W.start;const t=Be();return Zv(t)||Wo(t),Dc(t.value)}function ux(){return xe("."),cx()}function lx(){xe("[");const t=Tc();return xe("]"),t}function fx(){var t,e,n;for(t=sx();;)if(J("."))n=ux(),t=Td(".",t,n);else if(J("("))e=ax(),t=Kv(t,e);else if(J("["))n=lx(),t=Td("[",t,n);else break;return t}function kd(){const t=fx();if(W.type===ke&&(J("++")||J("--")))throw new Error(pi);return t}function _o(){var t,e;if(W.type!==ke&&W.type!==Xt)e=kd();else{if(J("++")||J("--"))throw new Error(pi);if(J("+")||J("-")||J("~")||J("!"))t=Be(),e=_o(),e=ex(t.value,e);else{if(Mc("delete")||Mc("void")||Mc("typeof"))throw new Error(pi);e=kd()}}return e}function Bd(t){let e=0;if(t.type!==ke&&t.type!==Xt)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 hx(){var t,e,n,r,i,o,s,a,c,u;if(t=W,c=_o(),r=W,i=Bd(r),i===0)return c;for(r.prec=i,Be(),e=[t,W],s=_o(),o=[c,r,s];(i=Bd(W))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)s=o.pop(),a=o.pop().value,c=o.pop(),e.pop(),n=Md(a,c,s),o.push(n);r=Be(),r.prec=i,o.push(r),e.push(W),n=_o(),o.push(n)}for(u=o.length-1,n=o[u],e.pop();u>1;)e.pop(),n=Md(o[u-1].value,o[u-2],n),u-=2;return n}function In(){var t,e,n;return t=hx(),J("?")&&(Be(),e=In(),xe(":"),n=In(),t=Jv(t,e,n)),t}function Tc(){const t=In();if(J(","))throw new Error(pi);return t}function dx(t){k=t,S=0,ve=k.length,W=null,Dd();const e=Tc();if(W.type!==hi)throw new Error("Unexpect token after expression.");return e}var px={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 gx(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 mx(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function yx(t){t=t||{};const e=t.allowed?fo(t.allowed):{},n=t.forbidden?fo(t.forbidden):{},r=t.constants||px,i=(t.functions||gx)(l),o=t.globalvar,s=t.fieldvar,a=Te(o)?o:d=>`${o}["${d}"]`;let c={},u={},f=0;function l(d){if(ie(d))return d;const g=h[d.type];return g==null&&re("Unsupported type: "+d.type),g(d)}const h={Literal:d=>d.raw,Identifier:d=>{const g=d.name;return f>0?g:hn(n,g)?re("Illegal identifier: "+g):hn(r,g)?r[g]:hn(e,g)?g:(c[g]=1,a(g))},MemberExpression:d=>{const g=!d.computed,m=l(d.object);g&&(f+=1);const y=l(d.property);return m===s&&(u[mx(y)]=1),g&&(f-=1),m+(g?"."+y:"["+y+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&re("Illegal callee type: "+d.callee.type);const g=d.callee.name,m=d.arguments,y=hn(i,g)&&i[g];return y||re("Unrecognized function: "+g),Te(y)?y(m):y+"("+m.map(l).join(",")+")"},ArrayExpression:d=>"["+d.elements.map(l).join(",")+"]",BinaryExpression:d=>"("+l(d.left)+" "+d.operator+" "+l(d.right)+")",UnaryExpression:d=>"("+d.operator+l(d.argument)+")",ConditionalExpression:d=>"("+l(d.test)+"?"+l(d.consequent)+":"+l(d.alternate)+")",LogicalExpression:d=>"("+l(d.left)+d.operator+l(d.right)+")",ObjectExpression:d=>"{"+d.properties.map(l).join(",")+"}",Property:d=>{f+=1;const g=l(d.key);return f-=1,g+":"+l(d.value)}};function p(d){const g={code:l(d),globals:Object.keys(c),fields:Object.keys(u)};return c={},u={},g}return p.functions=i,p.constants=r,p}function Ic(t,e={}){const n=yx({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=dx(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 Ax(){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 bx(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(Xe(i)&&i.resolutionChannel||r);n[r]=vx(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function vx(t,e,n,r){let i;if(_e(t)){const o=t.value;i=s=>o,i.constant=!0,i.constantValue=!0,i.accessor=void 0}else if(n)if(r=="text")i=o=>{},i.accessor=n,i.constant=n.constant;else{if(!e)throw new Error(`Missing scale! "${r}": ${JSON.stringify(t)}`);if(i=o=>e(n(o)),Wt(e.type)){const o=Ax();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 _e(t){return t&&"value"in t}function Nn(t){return t&&"field"in t}function bi(t){return t&&"datum"in t}function Xe(t){return Nn(t)||bi(t)||kc(t)||Ld(t)}function Nc(t,e){const n=t.mark.encoding[e];if(Xe(n))return n;throw new Error("Not a channel def with scale!")}function Ld(t){return t&&"chrom"in t}function kc(t){return t&&"expr"in t}const vi=["x","y"],xx=["x2","y2"],wx=[...vi,...xx];function Od(t){return vi.includes(t)}function xi(t){return wx.includes(t)}const Bc={x:"x2",y:"y2"},Pd=Object.fromEntries(Object.entries(Bc).map(t=>[t[1],t[0]]));function wi(t){return t in Pd}function Cx(t){const e=Bc[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function sr(t){var e;return(e=Pd[t])!=null?e:t}function kn(t){return["color","fill","stroke"].includes(sr(t))}function Xo(t){return["shape","squeeze"].includes(t)}function Fd(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function zd(t){if(!Xo(t))throw new Error("Not a discrete channel: "+t);const e=new Map(Fd(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 X(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return _(n,[t],e)}else return ro(t)}class Sx{constructor(){this.accessorCreators=[],this.register(e=>{if(Nn(e))try{const n=X(e.field);return n.constant=!1,n.fields=He(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>kc(e)?Ex(e.expr):void 0),this.register(e=>{if(bi(e)){const r=J1(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 Ex(t){const e=Ic(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
|
10
|
+
*/var gu;const wr=globalThis.trustedTypes,k0=wr?wr.createPolicy("lit-html",{createHTML:t=>t}):void 0,rn=`lit$${(Math.random()+"").slice(9)}$`,N0="?"+rn,nw=`<${N0}>`,Cr=document,Ni=(t="")=>Cr.createComment(t),Li=t=>t===null||typeof t!="object"&&typeof t!="function",L0=Array.isArray,rw=t=>{var e;return L0(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},Bi=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,B0=/-->/g,O0=/>/g,Un=/>|[ \n\r](?:([^\s"'>=/]+)([ \n\r]*=[ \n\r]*(?:[^ \n\r"'`<>=]|("|')|))|$)/g,P0=/'/g,F0=/"/g,z0=/^(?:script|style|textarea|title)$/i,iw=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),D=iw(1),Ee=Symbol.for("lit-noChange"),G=Symbol.for("lit-nothing"),R0=new WeakMap,Ge=(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 Pi(e.insertBefore(Ni(),s),s,void 0,n!=null?n:{})}return a._$AI(t),a},Sr=Cr.createTreeWalker(Cr,129,null,!1),ow=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",a=Bi;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===Bi?l[1]==="!--"?a=B0:l[1]!==void 0?a=O0:l[2]!==void 0?(z0.test(l[2])&&(i=RegExp("</"+l[2],"g")),a=Un):l[3]!==void 0&&(a=Un):a===Un?l[0]===">"?(a=i!=null?i:Bi,d=-1):l[1]===void 0?d=-2:(d=a.lastIndex-l[2].length,f=l[1],a=l[3]===void 0?Un:l[3]==='"'?F0:P0):a===F0||a===P0?a=Un:a===B0||a===O0?a=Bi:(a=Un,i=void 0);const p=a===Un&&t[c+1].startsWith("/>")?" ":"";o+=a===Bi?u+nw: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 Oi{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]=ow(e,n);if(this.el=Oi.createElement(u,r),Sr.currentNode=this.el.content,n===2){const l=this.el.content,d=l.firstChild;d.remove(),l.append(...d.childNodes)}for(;(i=Sr.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]==="."?sw:m[1]==="?"?uw:m[1]==="@"?lw: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=wr?wr.emptyScript:"";for(let h=0;h<d;h++)i.append(l[h],Ni()),Sr.nextNode(),c.push({type:2,index:++o});i.append(l[d],Ni())}}}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=Cr.createElement("template");return r.innerHTML=e,r}}function Er(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=Li(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=Er(t,c._$AS(t,e.values),c,r)),e}class aw{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:Cr).importNode(r,!0);Sr.currentNode=o;let a=Sr.nextNode(),s=0,c=0,u=i[0];for(;u!==void 0;){if(s===u.index){let f;u.type===2?f=new Pi(a,a.nextSibling,this,e):u.type===1?f=new u.ctor(a,u.name,u.strings,this,e):u.type===6&&(f=new fw(a,this,e)),this.v.push(f),u=i[++c]}s!==(u==null?void 0:u.index)&&(a=Sr.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 Pi{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=Er(this,e,n),Li(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):rw(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&&Li(this._$AH)?this._$AA.nextSibling.data=e:this.k(Cr.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=Oi.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 aw(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 Oi(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 Pi(this.M(Ni()),this.M(Ni()),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=Er(this,e,n,0),a=!Li(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=Er(this,s[r+c],n,c),u===Ee&&(u=this._$AH[c]),a||(a=!Li(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 sw extends Ea{constructor(){super(...arguments),this.type=3}C(e){this.element[this.name]=e===G?void 0:e}}const cw=wr?wr.emptyScript:"";class uw extends Ea{constructor(){super(...arguments),this.type=4}C(e){e&&e!==G?this.element.setAttribute(this.name,cw):this.element.removeAttribute(this.name)}}class lw 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=Er(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 fw{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){Er(this,e)}}const j0=window.litHtmlPolyfillSupport;j0==null||j0(Oi,Pi),((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 dw(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function $e(t){return Array.isArray(t)?t:typeof t!="undefined"?[t]:[]}function He(t){return t[t.length-1]}const Gn="gs-suppress-tooltip";class hw{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=He(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=tw(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&pw(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&&(Ge("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Ge(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 pw(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const mw="RawCode",gw="Literal",yw="Property",vw="Identifier",bw="ArrayExpression",Aw="BinaryExpression",xw="CallExpression",ww="ConditionalExpression",Cw="LogicalExpression",Sw="MemberExpression",Ew="ObjectExpression",Dw="UnaryExpression";function st(t){this.type=t}st.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=Mw(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function Mw(t){switch(t.type){case bw:return t.elements;case Aw:case Cw:return[t.left,t.right];case xw:return[t.callee].concat(t.arguments);case ww:return[t.test,t.consequent,t.alternate];case Sw:return[t.object,t.property];case Ew:return t.properties;case yw:return[t.key,t.value];case Dw:return[t.argument];case vw:case gw:case mw:default:return[]}}var yt,B,S,De,K,Da=1,Fi=2,Hn=3,on=4,Ma=5,Qn=6,Fe=7,zi=8,Tw=9;yt={},yt[Da]="Boolean",yt[Fi]="<end>",yt[Hn]="Identifier",yt[on]="Keyword",yt[Ma]="Null",yt[Qn]="Numeric",yt[Fe]="Punctuator",yt[zi]="String",yt[Tw]="RegularExpression";var Iw="ArrayExpression",kw="BinaryExpression",Nw="CallExpression",Lw="ConditionalExpression",G0="Identifier",Bw="Literal",Ow="LogicalExpression",Pw="MemberExpression",Fw="ObjectExpression",zw="Property",Rw="UnaryExpression",be="Unexpected token %0",jw="Unexpected number",Uw="Unexpected string",Gw="Unexpected identifier",Hw="Unexpected reserved word",Qw="Unexpected end of input",yu="Invalid regular expression",vu="Invalid regular expression: missing /",H0="Octal literals are not allowed in strict mode.",Vw="Duplicate data property in object literal not allowed in strict mode",Ce="ILLEGAL",Ri="Disabled.",Yw=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]"),_w=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 ji(t){return"01234567".indexOf(t)>=0}function Ww(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 Ui(t){return t===10||t===13||t===8232||t===8233}function Gi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&Yw.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&&_w.test(String.fromCharCode(t))}const Xw={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(Ww(t)||Ui(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 Zw(){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==="\\"||!Gi(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 qw(){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 Kw(){var t,e,n;return t=S,e=B.charCodeAt(S)===92?V0():qw(),e.length===1?n=Hn:Xw.hasOwnProperty(e)?n=on:e==="null"?n=Ma:e==="true"||e==="false"?n=Da:n=Hn,{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:Fe,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:Fe,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:S};case 33:case 61:return S+=2,B.charCodeAt(S)===61&&++S,{type:Fe,value:B.slice(t,S),start:t,end:S}}}if(a=B.substr(S,4),a===">>>=")return S+=4,{type:Fe,value:a,start:t,end:S};if(o=a.substr(0,3),o===">>>"||o==="<<="||o===">>=")return S+=3,{type:Fe,value:o,start:t,end:S};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return S+=2,{type:Fe,value:i,start:t,end:S};if(i==="//"&&_({},be,Ce),"<>=!+-*%&|^/".indexOf(r)>=0)return++S,{type:Fe,value:r,start:t,end:S};_({},be,Ce)}function Jw(t){let e="";for(;S<De&&bu(B[S]);)e+=B[S++];return e.length===0&&_({},be,Ce),Gi(B.charCodeAt(S))&&_({},be,Ce),{type:Qn,value:parseInt("0x"+e,16),start:t,end:S}}function $w(t){let e="0"+B[S++];for(;S<De&&ji(B[S]);)e+=B[S++];return(Gi(B.charCodeAt(S))||kt(B.charCodeAt(S)))&&_({},be,Ce),{type:Qn,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,Jw(e);if(ji(n))return $w(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 Gi(B.charCodeAt(S))&&_({},be,Ce),{type:Qn,value:parseFloat(t),start:e,end:S}}function e4(){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||!Ui(r.charCodeAt(0)))switch(r){case"u":case"x":B[S]==="{"?(++S,t+=Zw()):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:ji(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),S<De&&ji(B[S])&&(o=!0,i=i*8+"01234567".indexOf(B[S++]),"0123".indexOf(r)>=0&&S<De&&ji(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(Ui(r.charCodeAt(0)))break;t+=r}return e!==""&&_({},be,Ce),{type:zi,value:t,octal:o,start:n,end:S}}function t4(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 n4(){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++],Ui(t.charCodeAt(0))&&_({},vu),e+=t;else if(Ui(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 r4(){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 i4(){var t,e,n,r;return K=null,Q0(),t=S,e=n4(),n=r4(),r=t4(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:S}}function o4(t){return t.type===Hn||t.type===on||t.type===Da||t.type===Ma}function _0(){if(Q0(),S>=De)return{type:Fi,start:S,end:S};const t=B.charCodeAt(S);return Gi(t)?Kw():t===40||t===41||t===59?xu():t===39||t===34?e4():t===46?kt(B.charCodeAt(S+1))?Y0():xu():kt(t)?Y0():xu()}function ze(){const t=K;return S=t.end,K=_0(),S=t.end,t}function W0(){const t=S;K=_0(),S=t}function a4(t){const e=new st(Iw);return e.elements=t,e}function X0(t,e,n){const r=new st(t==="||"||t==="&&"?Ow:kw);return r.operator=t,r.left=e,r.right=n,r}function s4(t,e){const n=new st(Nw);return n.callee=t,n.arguments=e,n}function c4(t,e,n){const r=new st(Lw);return r.test=t,r.consequent=e,r.alternate=n,r}function wu(t){const e=new st(G0);return e.name=t,e}function Hi(t){const e=new st(Bw);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 st(Pw);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function u4(t){const e=new st(Fw);return e.properties=t,e}function q0(t,e,n){const r=new st(zw);return r.key=e,r.value=n,r.kind=t,r}function l4(t,e){const n=new st(Rw);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===Fi&&_(t,Qw),t.type===Qn&&_(t,jw),t.type===zi&&_(t,Uw),t.type===Hn&&_(t,Gw),t.type===on&&_(t,Hw),_(t,be,t.value)}function Me(t){const e=ze();(e.type!==Fe||e.value!==t)&&ka(e)}function ee(t){return K.type===Fe&&K.value===t}function Cu(t){return K.type===on&&K.value===t}function f4(){const t=[];for(S=K.start,Me("[");!ee("]");)ee(",")?(ze(),t.push(null)):(t.push(Vn()),ee("]")||Me(","));return ze(),a4(t)}function K0(){S=K.start;const t=ze();return t.type===zi||t.type===Qn?(t.octal&&_(t,H0),Hi(t)):wu(t.value)}function d4(){var t,e,n,r;if(S=K.start,t=K,t.type===Hn)return n=K0(),Me(":"),r=Vn(),q0("init",n,r);if(t.type===Fi||t.type===Fe)ka(t);else return e=K0(),Me(":"),r=Vn(),q0("init",e,r)}function h4(){var t=[],e,n,r,i={},o=String;for(S=K.start,Me("{");!ee("}");)e=d4(),e.key.type===G0?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?_({},Vw):i[r]=!0,t.push(e),ee("}")||Me(",");return Me("}"),u4(t)}function p4(){Me("(");const t=Su();return Me(")"),t}const m4={if:1};function g4(){var t,e,n;if(ee("("))return p4();if(ee("["))return f4();if(ee("{"))return h4();if(t=K.type,S=K.start,t===Hn||m4[K.value])n=wu(ze().value);else if(t===zi||t===Qn)K.octal&&_(K,H0),n=Hi(ze());else{if(t===on)throw new Error(Ri);t===Da?(e=ze(),e.value=e.value==="true",n=Hi(e)):t===Ma?(e=ze(),e.value=null,n=Hi(e)):ee("/")||ee("/=")?(n=Hi(i4()),W0()):ka(ze())}return n}function y4(){const t=[];if(Me("("),!ee(")"))for(;S<De&&(t.push(Vn()),!ee(")"));)Me(",");return Me(")"),t}function v4(){S=K.start;const t=ze();return o4(t)||ka(t),wu(t.value)}function b4(){return Me("."),v4()}function A4(){Me("[");const t=Su();return Me("]"),t}function x4(){var t,e,n;for(t=g4();;)if(ee("."))n=b4(),t=Z0(".",t,n);else if(ee("("))e=y4(),t=s4(t,e);else if(ee("["))n=A4(),t=Z0("[",t,n);else break;return t}function J0(){const t=x4();if(K.type===Fe&&(ee("++")||ee("--")))throw new Error(Ri);return t}function Na(){var t,e;if(K.type!==Fe&&K.type!==on)e=J0();else{if(ee("++")||ee("--"))throw new Error(Ri);if(ee("+")||ee("-")||ee("~")||ee("!"))t=ze(),e=Na(),e=l4(t.value,e);else{if(Cu("delete")||Cu("void")||Cu("typeof"))throw new Error(Ri);e=J0()}}return e}function $0(t){let e=0;if(t.type!==Fe&&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 w4(){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,ze(),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=ze(),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 Vn(){var t,e,n;return t=w4(),ee("?")&&(ze(),e=Vn(),Me(":"),n=Vn(),t=c4(t,e,n)),t}function Su(){const t=Vn();if(ee(","))throw new Error(Ri);return t}function C4(t){B=t,S=0,De=B.length,K=null,W0();const e=Su();if(K.type!==Fi)throw new Error("Unexpect token after expression.");return e}var S4={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 E4(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 D4(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function M4(t){t=t||{};const e=t.allowed?Zo(t.allowed):{},n=t.forbidden?Zo(t.forbidden):{},r=t.constants||S4,i=(t.functions||E4)(l),o=t.globalvar,a=t.fieldvar,s=Be(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,y=l(p.object);m&&(f+=1);const g=l(p.property);return y===a&&(u[D4(g)]=1),m&&(f-=1),y+(m?"."+g:"["+g+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&ce("Illegal callee type: "+p.callee.type);const m=p.callee.name,y=p.arguments,g=En(i,m)&&i[m];return g||ce("Unrecognized function: "+m),Be(g)?g(y):g+"("+y.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=M4({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=C4(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 T4(){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 I4(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(et(i)&&i.resolutionChannel||r);n[r]=k4(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function k4(t,e,n,r){let i;if(ct(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=T4();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 ct(t){return t&&"value"in t}function Yn(t){return t&&"field"in t}function Qi(t){return t&&"datum"in t}function et(t){return Yn(t)||Qi(t)||Mu(t)||ep(t)}function Du(t,e){const n=t.mark.encoding[e];if(et(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 Vi=["x","y"],N4=["x2","y2"],L4=[...Vi,...N4];function tp(t){return Vi.includes(t)}function Yi(t){return L4.includes(t)}const Tu={x:"x2",y:"y2"},np=Object.fromEntries(Object.entries(Tu).map(t=>[t[1],t[0]]));function _i(t){return t in np}function B4(t){const e=Tu[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function Dr(t){var e;return(e=np[t])!=null?e:t}function _n(t){return["color","fill","stroke"].includes(Dr(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 O4{constructor(){this.accessorCreators=[],this.register(e=>{if(Yn(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)?P4(e.expr):void 0),this.register(e=>{if(Qi(e)){const r=av(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 P4(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 Lc=5120,Ci=5121,Oc=5122,Pc=5123,Fc=5124,zc=5125,Rc=5126,Dx=32819,Mx=32820,Tx=33635,Ix=5131,Nx=33640,kx=35899,Bx=35902,Lx=36269,Ox=34042,Rd={};{const t=Rd;t[Lc]=Int8Array,t[Ci]=Uint8Array,t[Oc]=Int16Array,t[Pc]=Uint16Array,t[Fc]=Int32Array,t[zc]=Uint32Array,t[Rc]=Float32Array,t[Dx]=Uint16Array,t[Mx]=Uint16Array,t[Tx]=Uint16Array,t[Ix]=Uint16Array,t[Nx]=Uint32Array,t[kx]=Uint32Array,t[Bx]=Uint32Array,t[Lx]=Uint32Array,t[Ox]=Uint32Array}function jc(t){if(t instanceof Int8Array)return Lc;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return Ci;if(t instanceof Int16Array)return Oc;if(t instanceof Uint16Array)return Pc;if(t instanceof Int32Array)return Fc;if(t instanceof Uint32Array)return zc;if(t instanceof Float32Array)return Rc;throw new Error("unsupported typed array type")}function Px(t){if(t===Int8Array)return Lc;if(t===Uint8Array||t===Uint8ClampedArray)return Ci;if(t===Int16Array)return Oc;if(t===Uint16Array)return Pc;if(t===Int32Array)return Fc;if(t===Uint32Array)return zc;if(t===Float32Array)return Rc;throw new Error("unsupported typed array type")}function Fx(t){const e=Rd[t];if(!e)throw new Error("unknown gl type");return e}const Zo=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 zx(...t){console.error(...t)}function jd(...t){console.warn(...t)}function Rx(t,e){return typeof WebGLBuffer!="undefined"&&e instanceof WebGLBuffer}function Ud(t,e){return typeof WebGLRenderbuffer!="undefined"&&e instanceof WebGLRenderbuffer}function qo(t,e){return typeof WebGLTexture!="undefined"&&e instanceof WebGLTexture}function jx(t,e){return typeof WebGLSampler!="undefined"&&e instanceof WebGLSampler}const Gd=35044,ht=34962,Ux=34963,Gx=34660,Hx=5120,Qx=5121,Vx=5122,Yx=5123,Wx=5124,_x=5125,Xx=5126,Hd={attribPrefix:""};function Qd(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||Gd)}function Vd(t,e,n,r){if(Rx(t,e))return e;n=n||ht;const i=t.createBuffer();return Qd(t,n,i,e,r),i}function Yd(t){return t==="indices"}function Zx(t){return t instanceof Int8Array||t instanceof Uint8Array}function qx(t){return t===Int8Array||t===Uint8Array}function Kx(t){return t.length?t:t.data}const Jx=/coord|texture/i,$x=/color|colour/i;function Wd(t,e){let n;if(Jx.test(t)?n=2:$x.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 ew(t,e){return t.numComponents||t.size||Wd(e,Kx(t).length)}function Uc(t,e){if(Zo(t))return t;if(Zo(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(Yd(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function tw(t,e){const n={};return Object.keys(e).forEach(function(r){if(!Yd(r)){const i=e[r],o=i.attrib||i.name||i.attribName||Hd.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Zo(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=Px(l),c=i.normalize!==void 0?i.normalize:qx(l),u=i.numComponents||i.size||Wd(r,f),s=t.createBuffer(),t.bindBuffer(ht,s),t.bufferData(ht,h,i.drawType||Gd)}else{const f=Uc(i,r);s=Vd(t,f,void 0,i.drawType),a=jc(f),c=i.normalize!==void 0?i.normalize:Zx(f),u=ew(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(ht,null),n}function nw(t,e,n,r){n=Uc(n),r!==void 0?(t.bindBuffer(ht,e.buffer),t.bufferSubData(ht,r,n)):Qd(t,ht,e.buffer,n,e.drawType)}function rw(t,e){return e===Hx||e===Qx?1:e===Vx||e===Yx?2:e===Wx||e===_x||e===Xx?4:0}const Gc=["position","positions","a_position"];function iw(t,e){let n,r;for(r=0;r<Gc.length&&(n=Gc[r],!(n in e||(n=Hd.attribPrefix+n,n in e)));++r);r===Gc.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(ht,i.buffer);const o=t.getBufferParameter(ht,Gx);t.bindBuffer(ht,null);const s=rw(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 ow(t,e,n){const r=tw(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const s=Uc(o,"indices");i.indices=Vd(t,s,Ux),i.numElements=s.length,i.elementType=jc(s)}else i.numElements||(i.numElements=iw(t,i.attribs));return i}function ar(t){return!!t.texStorage2D}const Hc=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)}}(),Zt={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},cr=Zo,_d=function(){let t;return function(){return t=t||(typeof document!="undefined"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),Xd=6406,dt=6407,ee=6408,Zd=6409,qd=6410,Si=6402,Kd=34041,Ko=33071,sw=9728,aw=9729,Et=3553,Dt=34067,qt=32879,Kt=35866,Jo=34069,cw=34070,uw=34071,lw=34072,fw=34073,hw=34074,Qc=10241,Vc=10240,$o=10242,es=10243,Jd=32882,dw=33082,pw=33083,gw=33084,mw=33085,Yc=3317,$d=3314,e0=32878,t0=3316,n0=3315,r0=32877,yw=37443,Aw=37441,bw=37440,vw=33321,xw=36756,ww=33325,Cw=33326,Sw=33330,Ew=33329,Dw=33338,Mw=33337,Tw=33340,Iw=33339,Nw=33323,kw=36757,Bw=33327,Lw=33328,Ow=33336,Pw=33335,Fw=33332,zw=33331,Rw=33334,jw=33333,Uw=32849,Gw=35905,Hw=36194,Qw=36758,Vw=35898,Yw=35901,Ww=34843,_w=34837,Xw=36221,Zw=36239,qw=36215,Kw=36233,Jw=36209,$w=36227,e4=32856,t4=35907,n4=36759,r4=32855,i4=32854,o4=32857,s4=34842,a4=34836,c4=36220,u4=36238,l4=36975,f4=36214,h4=36232,d4=36226,p4=36208,g4=33189,m4=33190,y4=36012,A4=36013,b4=35056,Jt=5120,te=5121,ts=5122,ur=5123,ns=5124,Bn=5125,we=5126,i0=32819,o0=32820,s0=33635,rt=5131,Ei=36193,Wc=33640,v4=35899,x4=35902,w4=36269,C4=34042,rs=33319,lr=33320,is=6403,fr=36244,hr=36248,Ln=36249;let _c;function os(t){if(!_c){const e={};e[Xd]={textureFormat:Xd,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[te,rt,Ei,we]},e[Zd]={textureFormat:Zd,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[te,rt,Ei,we]},e[qd]={textureFormat:qd,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[te,rt,Ei,we]},e[dt]={textureFormat:dt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[te,rt,Ei,we,s0]},e[ee]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[te,rt,Ei,we,i0,o0]},e[Si]={textureFormat:Si,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Bn,ur]},e[vw]={textureFormat:is,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[te]},e[xw]={textureFormat:is,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[Jt]},e[ww]={textureFormat:is,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[we,rt]},e[Cw]={textureFormat:is,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[we]},e[Sw]={textureFormat:fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[te]},e[Ew]={textureFormat:fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Jt]},e[Fw]={textureFormat:fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ur]},e[zw]={textureFormat:fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ts]},e[Rw]={textureFormat:fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Bn]},e[jw]={textureFormat:fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ns]},e[Nw]={textureFormat:rs,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[te]},e[kw]={textureFormat:rs,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[Jt]},e[Bw]={textureFormat:rs,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[we,rt]},e[Lw]={textureFormat:rs,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[we]},e[Ow]={textureFormat:lr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[te]},e[Pw]={textureFormat:lr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Jt]},e[Dw]={textureFormat:lr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ur]},e[Mw]={textureFormat:lr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ts]},e[Tw]={textureFormat:lr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Bn]},e[Iw]={textureFormat:lr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ns]},e[Uw]={textureFormat:dt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[te]},e[Gw]={textureFormat:dt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[te]},e[Hw]={textureFormat:dt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[te,s0]},e[Qw]={textureFormat:dt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Jt]},e[Vw]={textureFormat:dt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[we,rt,v4]},e[Yw]={textureFormat:dt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[we,rt,x4]},e[Ww]={textureFormat:dt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[we,rt]},e[_w]={textureFormat:dt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[we]},e[Xw]={textureFormat:hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[te]},e[Zw]={textureFormat:hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Jt]},e[qw]={textureFormat:hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[ur]},e[Kw]={textureFormat:hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[ts]},e[Jw]={textureFormat:hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Bn]},e[$w]={textureFormat:hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[ns]},e[e4]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[te]},e[t4]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[te]},e[n4]={textureFormat:ee,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[Jt]},e[r4]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[te,o0,Wc]},e[i4]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[te,i0]},e[o4]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Wc]},e[s4]={textureFormat:ee,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[we,rt]},e[a4]={textureFormat:ee,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[we]},e[c4]={textureFormat:Ln,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[te]},e[u4]={textureFormat:Ln,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Jt]},e[l4]={textureFormat:Ln,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Wc]},e[f4]={textureFormat:Ln,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ur]},e[h4]={textureFormat:Ln,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ts]},e[d4]={textureFormat:Ln,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[ns]},e[p4]={textureFormat:Ln,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Bn]},e[g4]={textureFormat:Si,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[ur,Bn]},e[m4]={textureFormat:Si,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Bn]},e[y4]={textureFormat:Si,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[we]},e[b4]={textureFormat:Kd,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[C4]},e[A4]={textureFormat:Kd,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[w4]},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})}),_c=e}return _c[t]}function S4(t,e){const n=os(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function dr(t){const e=os(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function a0(t){return(t&t-1)===0}function E4(t,e,n,r){if(!ar(t))return a0(e)&&a0(n);const i=os(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function D4(t){const e=os(t);if(!e)throw"unknown internal format";return e.textureFilterable}function c0(t,e,n){return cr(e)?jc(e):n||te}function ss(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===Dt?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 pr(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(yw,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(Aw,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(bw,e.flipY)}function u0(t){t.pixelStorei(Yc,4),ar(t)&&(t.pixelStorei($d,0),t.pixelStorei(e0,0),t.pixelStorei(t0,0),t.pixelStorei(n0,0),t.pixelStorei(r0,0))}function M4(t,e,n,r){r.minMag&&(n.call(t,e,Qc,r.minMag),n.call(t,e,Vc,r.minMag)),r.min&&n.call(t,e,Qc,r.min),r.mag&&n.call(t,e,Vc,r.mag),r.wrap&&(n.call(t,e,$o,r.wrap),n.call(t,e,es,r.wrap),(e===qt||jx(t,e))&&n.call(t,e,Jd,r.wrap)),r.wrapR&&n.call(t,e,Jd,r.wrapR),r.wrapS&&n.call(t,e,$o,r.wrapS),r.wrapT&&n.call(t,e,es,r.wrapT),r.minLod&&n.call(t,e,dw,r.minLod),r.maxLod&&n.call(t,e,pw,r.maxLod),r.baseLevel&&n.call(t,e,gw,r.baseLevel),r.maxLevel&&n.call(t,e,mw,r.maxLevel)}function l0(t,e,n){const r=n.target||Et;t.bindTexture(r,e),M4(t,r,t.texParameteri,n)}function T4(t){return t=t||Zt.textureColor,cr(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Xc(t,e,n,r,i,o){n=n||Zt.textureOptions,o=o||ee;const s=n.target||Et;if(r=r||n.width,i=i||n.height,t.bindTexture(s,e),E4(t,r,i,o))t.generateMipmap(s);else{const a=D4(o)?aw:sw;t.texParameteri(s,Qc,a),t.texParameteri(s,Vc,a),t.texParameteri(s,$o,Ko),t.texParameteri(s,es,Ko)}}function Di(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Zc(t,e){return e=e||{},e.cubeFaceOrder||[Jo,cw,uw,lw,fw,hw]}function qc(t,e){const r=Zc(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function f0(t,e,n,r){r=r||Zt.textureOptions;const i=r.target||Et,o=r.level||0;let s=n.width,a=n.height;const c=r.internalFormat||r.format||ee,u=dr(c),f=r.format||u.format,l=r.type||u.type;if(pr(t,r),t.bindTexture(i,e),i===Dt){const h=n.width,p=n.height;let d,g;if(h/6===p)d=p,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(p/6===h)d=h,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3===p/2)d=h/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2===p/3)d=h/2,g=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can't figure out cube map from element: "+(n.src?n.src:n.nodeName);const m=_d();m?(m.canvas.width=d,m.canvas.height=d,s=d,a=d,qc(t,r).forEach(function(y){const v=g[y.ndx*2+0]*d,w=g[y.ndx*2+1]*d;m.drawImage(n,v,w,d,d,0,0,d,d),t.texImage2D(y.face,o,c,f,l,m.canvas)}),m.canvas.width=1,m.canvas.height=1):typeof createImageBitmap!="undefined"&&(s=d,a=d,qc(t,r).forEach(function(y){const v=g[y.ndx*2+0]*d,w=g[y.ndx*2+1]*d;t.texImage2D(y.face,o,c,d,d,0,f,l,null),createImageBitmap(n,v,w,d,d,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(C){pr(t,r),t.bindTexture(i,e),t.texImage2D(y.face,o,c,f,l,C),Di(r)&&Xc(t,e,r,s,a,c)})}))}else if(i===qt||i===Kt){const h=Math.min(n.width,n.height),p=Math.max(n.width,n.height),d=p/h;if(d%1!==0)throw"can not compute 3D dimensions of element";const g=n.width===p?1:0,m=n.height===p?1:0;t.pixelStorei(Yc,1),t.pixelStorei($d,n.width),t.pixelStorei(e0,0),t.pixelStorei(r0,0),t.texImage3D(i,o,c,h,h,h,0,f,l,null);for(let y=0;y<d;++y){const v=y*h*g,w=y*h*m;t.pixelStorei(t0,v),t.pixelStorei(n0,w),t.texSubImage3D(i,o,0,0,y,h,h,1,f,l,n)}u0(t)}else t.texImage2D(i,o,c,f,l,n);Di(r)&&Xc(t,e,r,s,a,c),l0(t,e,r)}function Mi(){}function I4(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 N4(t,e){return e===void 0&&!I4(t)?"anonymous":e}function k4(t,e,n){n=n||Mi;let r;if(e=e!==void 0?e:Zt.crossOrigin,e=N4(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;zx(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 h0(t){return typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap||typeof ImageData!="undefined"&&t instanceof ImageData||typeof HTMLElement!="undefined"&&t instanceof HTMLElement}function Kc(t,e,n){return h0(t)?(setTimeout(function(){n(null,t)}),t):k4(t,e,n)}function Jc(t,e,n){n=n||Zt.textureOptions;const r=n.target||Et;if(t.bindTexture(r,e),n.color===!1)return;const i=T4(n.color);if(r===Dt)for(let o=0;o<6;++o)t.texImage2D(Jo+o,0,ee,1,1,0,ee,te,i);else r===qt||r===Kt?t.texImage3D(r,0,ee,1,1,1,0,ee,te,i):t.texImage2D(r,0,ee,1,1,0,ee,te,i)}function B4(t,e,n,r){return r=r||Mi,n=n||Zt.textureOptions,Jc(t,e,n),n=Object.assign({},n),Kc(n.src,n.crossOrigin,function(o,s){o?r(o,e,s):(f0(t,e,s,n),r(null,e,s))})}function L4(t,e,n,r){r=r||Mi;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||ee,a=dr(s),c=n.format||a.format,u=n.type||te,f=n.target||Et;if(f!==Dt)throw"target must be TEXTURE_CUBE_MAP";Jc(t,e,n),n=Object.assign({},n);let l=6;const h=[],p=Zc(t,n);let d;function g(m){return function(y,v){--l,y?h.push(y):v.width!==v.height?h.push("cubemap face img is not a square: "+v.src):(pr(t,n),t.bindTexture(f,e),l===5?Zc().forEach(function(w){t.texImage2D(w,o,s,c,u,v)}):t.texImage2D(m,o,s,c,u,v),Di(n)&&t.generateMipmap(f)),l===0&&r(h.length?h:void 0,e,d)}}d=i.map(function(m,y){return Kc(m,n.crossOrigin,g(p[y]))})}function O4(t,e,n,r){r=r||Mi;const i=n.src,o=n.internalFormat||n.format||ee,s=dr(o),a=n.format||s.format,c=n.type||te,u=n.target||Kt;if(u!==qt&&u!==Kt)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Jc(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let h;const p=n.level||0;let d=n.width,g=n.height;const m=i.length;let y=!0;function v(w){return function(C,b){if(--f,C)l.push(C);else{if(pr(t,n),t.bindTexture(u,e),y){y=!1,d=n.width||b.width,g=n.height||b.height,t.texImage3D(u,p,o,d,g,m,0,a,c,null);for(let A=0;A<m;++A)t.texSubImage3D(u,p,0,0,A,d,g,1,a,c,b)}else{let A=b,x;(b.width!==d||b.height!==g)&&(x=_d(),A=x.canvas,x.canvas.width=d,x.canvas.height=g,x.drawImage(b,0,0,d,g)),t.texSubImage3D(u,p,0,0,w,d,g,1,a,c,A),x&&A===x.canvas&&(x.canvas.width=0,x.canvas.height=0)}Di(n)&&t.generateMipmap(u)}f===0&&r(l.length?l:void 0,e,h)}}h=i.map(function(w,C){return Kc(w,n.crossOrigin,v(C))})}function d0(t,e,n,r){r=r||Zt.textureOptions;const i=r.target||Et;t.bindTexture(i,e);let o=r.width,s=r.height,a=r.depth;const c=r.level||0,u=r.internalFormat||r.format||ee,f=dr(u),l=r.format||f.format,h=r.type||c0(t,n,f.type);if(cr(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const m=Fx(h);n=new m(n)}const p=S4(u,h),d=n.byteLength/p;if(d%1)throw"length wrong size for format: "+Hc(t,l);let g;if(i===qt||i===Kt)if(!o&&!s&&!a){const m=Math.cbrt(d);if(m%1!==0)throw"can't guess cube size of array of numElements: "+d;o=m,s=m,a=m}else o&&(!s||!a)?(g=ss(t,i,s,a,d/o),s=g.width,a=g.height):s&&(!o||!a)?(g=ss(t,i,o,a,d/s),o=g.width,a=g.height):(g=ss(t,i,o,s,d/a),o=g.width,s=g.height);else g=ss(t,i,o,s,d),o=g.width,s=g.height;if(u0(t),t.pixelStorei(Yc,r.unpackAlignment||1),pr(t,r),i===Dt){const m=p/n.BYTES_PER_ELEMENT,y=d/6*m;qc(t,r).forEach(v=>{const w=y*v.ndx,C=n.subarray(w,w+y);t.texImage2D(v.face,c,u,o,s,0,l,h,C)})}else i===qt||i===Kt?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 P4(t,e,n){const r=n.target||Et;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||ee,s=dr(o),a=n.format||s.format,c=n.type||s.type;if(pr(t,n),r===Dt)for(let u=0;u<6;++u)t.texImage2D(Jo+u,i,o,n.width,n.height,0,a,c,null);else r===qt||r===Kt?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 Ti(t,e,n){n=n||Mi,e=e||Zt.textureOptions;const r=t.createTexture(),i=e.target||Et;let o=e.width||1,s=e.height||1;const a=e.internalFormat||ee;t.bindTexture(i,r),i===Dt&&(t.texParameteri(i,$o,Ko),t.texParameteri(i,es,Ko));let c=e.src;if(c)if(typeof c=="function"&&(c=c(t,e)),typeof c=="string")B4(t,r,e,n);else if(cr(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||cr(c[0]))){const u=d0(t,r,c,e);o=u.width,s=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||h0(c[0]))?i===Dt?L4(t,r,e,n):O4(t,r,e,n):(f0(t,r,c,e),o=c.width,s=c.height);else P4(t,r,e);return Di(e)&&Xc(t,r,e,o,s,a),l0(t,r,e),r}function F4(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const s=n.target||Et;t.bindTexture(s,e);const a=n.level||0,c=n.internalFormat||n.format||ee,u=dr(c),f=n.format||u.format;let l;const h=n.src;if(h&&(cr(h)||Array.isArray(h)&&typeof h[0]=="number")?l=n.type||c0(t,h,u.type):l=n.type||u.type,s===Dt)for(let p=0;p<6;++p)t.texImage2D(Jo+p,a,c,r,i,0,f,l,null);else s===qt||s===Kt?t.texImage3D(s,a,c,r,i,o,0,f,l,null):t.texImage2D(s,a,c,r,i,0,f,l,null)}const z4=jd,as=33984,R4=35048,cs=34962,j4=34963,$c=35345,p0=35718,U4=35721,G4=35971,H4=35382,Q4=35396,V4=35398,Y4=35392,W4=35395,us=5126,g0=35664,m0=35665,y0=35666,eu=5124,A0=35667,b0=35668,v0=35669,x0=35670,w0=35671,C0=35672,S0=35673,E0=35674,D0=35675,M0=35676,_4=35678,X4=35680,Z4=35679,q4=35682,K4=35685,J4=35686,$4=35687,e3=35688,t3=35689,n3=35690,r3=36289,i3=36292,o3=36293,tu=5125,T0=36294,I0=36295,N0=36296,s3=36298,a3=36299,c3=36300,u3=36303,l3=36306,f3=36307,h3=36308,d3=36311,ls=3553,fs=34067,nu=32879,hs=35866,P={};function k0(t,e){return P[e].bindPoint}function p3(t,e){return function(n){t.uniform1f(e,n)}}function g3(t,e){return function(n){t.uniform1fv(e,n)}}function m3(t,e){return function(n){t.uniform2fv(e,n)}}function y3(t,e){return function(n){t.uniform3fv(e,n)}}function A3(t,e){return function(n){t.uniform4fv(e,n)}}function B0(t,e){return function(n){t.uniform1i(e,n)}}function L0(t,e){return function(n){t.uniform1iv(e,n)}}function O0(t,e){return function(n){t.uniform2iv(e,n)}}function P0(t,e){return function(n){t.uniform3iv(e,n)}}function F0(t,e){return function(n){t.uniform4iv(e,n)}}function b3(t,e){return function(n){t.uniform1ui(e,n)}}function v3(t,e){return function(n){t.uniform1uiv(e,n)}}function x3(t,e){return function(n){t.uniform2uiv(e,n)}}function w3(t,e){return function(n){t.uniform3uiv(e,n)}}function C3(t,e){return function(n){t.uniform4uiv(e,n)}}function S3(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function E3(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function D3(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function M3(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function T3(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function I3(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function N3(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function k3(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function B3(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function Ee(t,e,n,r){const i=k0(t,e);return ar(t)?function(o){let s,a;qo(t,o)?(s=o,a=null):(s=o.texture,a=o.sampler),t.uniform1i(r,n),t.activeTexture(as+n),t.bindTexture(i,s),t.bindSampler(n,a)}:function(o){t.uniform1i(r,n),t.activeTexture(as+n),t.bindTexture(i,o)}}function De(t,e,n,r,i){const o=k0(t,e),s=new Int32Array(i);for(let a=0;a<i;++a)s[a]=n+a;return ar(t)?function(a){t.uniform1iv(r,s),a.forEach(function(c,u){t.activeTexture(as+s[u]);let f,l;qo(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(as+s[u]),t.bindTexture(o,c)})}}P[us]={Type:Float32Array,size:4,setter:p3,arraySetter:g3},P[g0]={Type:Float32Array,size:8,setter:m3,cols:2},P[m0]={Type:Float32Array,size:12,setter:y3,cols:3},P[y0]={Type:Float32Array,size:16,setter:A3,cols:4},P[eu]={Type:Int32Array,size:4,setter:B0,arraySetter:L0},P[A0]={Type:Int32Array,size:8,setter:O0,cols:2},P[b0]={Type:Int32Array,size:12,setter:P0,cols:3},P[v0]={Type:Int32Array,size:16,setter:F0,cols:4},P[tu]={Type:Uint32Array,size:4,setter:b3,arraySetter:v3},P[T0]={Type:Uint32Array,size:8,setter:x3,cols:2},P[I0]={Type:Uint32Array,size:12,setter:w3,cols:3},P[N0]={Type:Uint32Array,size:16,setter:C3,cols:4},P[x0]={Type:Uint32Array,size:4,setter:B0,arraySetter:L0},P[w0]={Type:Uint32Array,size:8,setter:O0,cols:2},P[C0]={Type:Uint32Array,size:12,setter:P0,cols:3},P[S0]={Type:Uint32Array,size:16,setter:F0,cols:4},P[E0]={Type:Float32Array,size:32,setter:S3,rows:2,cols:2},P[D0]={Type:Float32Array,size:48,setter:E3,rows:3,cols:3},P[M0]={Type:Float32Array,size:64,setter:D3,rows:4,cols:4},P[K4]={Type:Float32Array,size:32,setter:M3,rows:2,cols:3},P[J4]={Type:Float32Array,size:32,setter:I3,rows:2,cols:4},P[$4]={Type:Float32Array,size:48,setter:T3,rows:3,cols:2},P[e3]={Type:Float32Array,size:48,setter:k3,rows:3,cols:4},P[t3]={Type:Float32Array,size:64,setter:N3,rows:4,cols:2},P[n3]={Type:Float32Array,size:64,setter:B3,rows:4,cols:3},P[_4]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:ls},P[X4]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:fs},P[Z4]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:nu},P[q4]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:ls},P[r3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:hs},P[i3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:hs},P[o3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:fs},P[s3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:ls},P[a3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:nu},P[c3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:fs},P[u3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:hs},P[l3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:ls},P[f3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:nu},P[h3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:fs},P[d3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:hs};function ds(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(cs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||us,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function $t(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(cs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||eu,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function ps(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(cs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||tu,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function ru(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(cs,o.buffer);const s=o.size||o.numComponents||r,a=s/i,c=o.type||us,f=P[c].size*s,l=o.normalize||!1,h=o.offset||0,p=f/i;for(let d=0;d<i;++d)t.enableVertexAttribArray(e+d),t.vertexAttribPointer(e+d,a,c,l,f,h+p*d),o.divisor!==void 0&&t.vertexAttribDivisor(e+d,o.divisor)}}const ae={};ae[us]={size:4,setter:ds},ae[g0]={size:8,setter:ds},ae[m0]={size:12,setter:ds},ae[y0]={size:16,setter:ds},ae[eu]={size:4,setter:$t},ae[A0]={size:8,setter:$t},ae[b0]={size:12,setter:$t},ae[v0]={size:16,setter:$t},ae[tu]={size:4,setter:ps},ae[T0]={size:8,setter:ps},ae[I0]={size:12,setter:ps},ae[N0]={size:16,setter:ps},ae[x0]={size:4,setter:$t},ae[w0]={size:8,setter:$t},ae[C0]={size:12,setter:$t},ae[S0]={size:16,setter:$t},ae[E0]={size:4,setter:ru,count:2},ae[D0]={size:9,setter:ru,count:3},ae[M0]={size:16,setter:ru,count:4};function z0(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const L3=/(\.|\[|]|\w+)/g,O3=t=>t>="0"&&t<="9";function R0(t,e,n,r){const i=t.split(L3).filter(a=>a!=="");let o=0,s="";for(;;){const a=i[o++];s+=a;const c=O3(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==="[",p=n[u]||(h?[]:{});n[u]=p,n=p,r[s]=r[s]||function(d){return function(g){U0(d,g)}}(p),s+=l}}}function P3(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 p;if(h.bindPoint){const d=n;n+=c.size,f?p=h.arraySetter(t,l,d,u,c.size):p=h.setter(t,l,d,u,c.size)}else h.arraySetter&&f?p=h.arraySetter(t,u):p=h.setter(t,u);return p.location=u,p}const i={},o={},s=t.getProgramParameter(e,p0);for(let a=0;a<s;++a){const c=t.getActiveUniform(e,a);if(z0(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,R0(u,l,o,i)}}return i}function F3(t,e){const n={},r=t.getProgramParameter(e,G4);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 z3(t,e){const n=t.getProgramParameter(e,p0),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,H4);for(let a=0;a<s;++a){const c=t.getActiveUniformBlockName(e,a),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,Q4),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,V4),size:t.getActiveUniformBlockParameter(e,a,Y4),uniformIndices:t.getActiveUniformBlockParameter(e,a,W4)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const j0=/\[\d+\]\.$/,R3=(t,e)=>((t+(e-1))/e|0)*e;function j3(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 U3(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,s=i[r];if(!s)return z4("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(s.size),c=t.createBuffer(),u=s.index;t.bindBuffer($c,c),t.uniformBlockBinding(e,s.index,u);let f=r+".";j0.test(f)&&(f=f.replace(j0,"."));const l={},h={},p={};return s.uniformIndices.forEach(function(d){const g=o[d];let m=g.name;m.startsWith(f)&&(m=m.substr(f.length));const y=m.endsWith("[0]");y&&(m=m.substr(0,m.length-3));const v=P[g.type],w=v.Type,C=y?R3(v.size,16)*g.size:v.size*g.size,b=new w(a,g.offset,C/w.BYTES_PER_ELEMENT);l[m]=b;const A=j3(b,y,v.rows,v.cols);h[m]=A,R0(m,A,p,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:c,uniforms:l,setters:h}}function G3(t,e,n){return U3(t,e.program,e.uniformBlockSpec,n)}function H3(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange($c,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function Q3(t,e,n){H3(t,e,n)&&t.bufferData($c,n.array,R4)}function U0(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):U0(t[n],e[n])}}function Ce(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)Ce(n,o[a])}else for(const s in o){const a=n[s];a&&a(o[s])}}}function V3(t,e){const n={},r=t.getProgramParameter(e,U4);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(z0(o))continue;const s=t.getAttribLocation(e,o.name),a=ae[o.type],c=a.setter(t,s,a);c.location=s,n[o.name]=c}return n}function Y3(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function gr(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(Y3(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(j4,n.indices))}function W3(t,e){const n=P3(t,e),r=V3(t,e),i={program:e,uniformSetters:n,attribSetters:r};return ar(t)&&(i.uniformBlockSpec=z3(t,e),i.transformFeedbackInfo=F3(t,e)),i}const _3=4,G0=5123;function Ii(t,e,n,r,i,o){n=n===void 0?_3: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?G0:e.elementType,i,o):t.drawElements(n,c,a===void 0?G0:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,c,o):t.drawArrays(n,i,c)}const X3=36160,On=36161,Z3=3553,q3=5121,K3=6402,J3=6408,$3=33190,eC=36012,tC=35056,nC=36013,rC=32854,iC=32855,oC=36194,H0=33189,Q0=6401,V0=36168,iu=34041,sC=36064,gs=36096,Y0=36128,ou=33306,su=33071,au=9729,W0=[{format:J3,type:q3,min:au,wrap:su},{format:iu}],it={};it[iu]=ou,it[Q0]=Y0,it[V0]=Y0,it[K3]=gs,it[H0]=gs,it[$3]=gs,it[eC]=gs,it[tC]=ou,it[nC]=ou;function aC(t,e){return it[t]||it[e]}const en={};en[rC]=!0,en[iC]=!0,en[oC]=!0,en[iu]=!0,en[H0]=!0,en[Q0]=!0,en[V0]=!0;function cC(t){return en[t]}function uC(t,e,n,r){const i=X3,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||W0;let s=0;const a={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(c){let u=c.attachment;const f=c.samples,l=c.format;let h=c.attachmentPoint||aC(l,c.internalFormat);if(h||(h=sC+s++),!u)if(f!==void 0||cC(l))u=t.createRenderbuffer(),t.bindRenderbuffer(On,u),f>1?t.renderbufferStorageMultisample(On,f,l,n,r):t.renderbufferStorage(On,l,n,r);else{const p=Object.assign({},c);p.width=n,p.height=r,p.auto===void 0&&(p.auto=!1,p.min=p.min||p.minMag||au,p.mag=p.mag||p.minMag||au,p.wrapS=p.wrapS||p.wrap||su,p.wrapT=p.wrapT||p.wrap||su),u=Ti(t,p)}if(Ud(t,u))t.framebufferRenderbuffer(i,h,On,u);else if(qo(t,u))c.layer!==void 0?t.framebufferTextureLayer(i,h,u,c.level||0,c.layer):t.framebufferTexture2D(i,h,c.target||Z3,u,c.level||0);else throw new Error("unknown attachment type");a.attachments.push(u)}),a}function lC(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||W0,n.forEach(function(o,s){const a=e.attachments[s],c=o.format,u=o.samples;if(u!==void 0||Ud(t,a))t.bindRenderbuffer(On,a),u>1?t.renderbufferStorageMultisample(On,u,c,r,i):t.renderbufferStorage(On,c,r,i);else if(qo(t,a))F4(t,a,o,r,i);else throw new Error("unknown attachment type")})}function fC(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){gr(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const hC=/^(.*?)_/;function dC(t,e){Hc(t,0);const n=t.getExtension(e);if(n){const r={},i=hC.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&&jd(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},Hc(r,0)}return n}const _0=["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 X0(t){for(let e=0;e<_0.length;++e)dC(t,_0[e])}function pC(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){X0(r);break}return r}function gC(t,e){return pC(t,e)}var mC=`/**
|
14
|
+
see: http://github.com/greggman/twgl.js for details */const Iu=5120,Wi=5121,ku=5122,Nu=5123,Lu=5124,Bu=5125,Ou=5126,F4=32819,z4=32820,R4=33635,j4=5131,U4=33640,G4=35899,H4=35902,Q4=36269,V4=34042,op={};{const t=op;t[Iu]=Int8Array,t[Wi]=Uint8Array,t[ku]=Int16Array,t[Nu]=Uint16Array,t[Lu]=Int32Array,t[Bu]=Uint32Array,t[Ou]=Float32Array,t[F4]=Uint16Array,t[z4]=Uint16Array,t[R4]=Uint16Array,t[j4]=Uint16Array,t[U4]=Uint32Array,t[G4]=Uint32Array,t[H4]=Uint32Array,t[Q4]=Uint32Array,t[V4]=Uint32Array}function Pu(t){if(t instanceof Int8Array)return Iu;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return Wi;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 Y4(t){if(t===Int8Array)return Iu;if(t===Uint8Array||t===Uint8ClampedArray)return Wi;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 _4(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 W4(...t){console.error(...t)}function ap(...t){console.warn(...t)}function X4(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 Z4(t,e){return typeof WebGLSampler!="undefined"&&e instanceof WebGLSampler}const cp=35044,vt=34962,q4=34963,K4=34660,J4=5120,$4=5121,e3=5122,t3=5123,n3=5124,r3=5125,i3=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(X4(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 o3(t){return t instanceof Int8Array||t instanceof Uint8Array}function a3(t){return t===Int8Array||t===Uint8Array}function s3(t){return t.length?t:t.data}const c3=/coord|texture/i,u3=/color|colour/i;function hp(t,e){let n;if(c3.test(t)?n=2:u3.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 l3(t,e){return t.numComponents||t.size||hp(e,s3(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 f3(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=Y4(l),c=i.normalize!==void 0?i.normalize:a3(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:o3(f),u=l3(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 d3(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 h3(t,e){return e===J4||e===$4?1:e===e3||e===t3?2:e===n3||e===r3||e===i3?4:0}const zu=["position","positions","a_position"];function p3(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,K4);t.bindBuffer(vt,null);const a=h3(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 m3(t,e,n){const r=f3(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,q4),i.numElements=a.length,i.elementType=Pu(a)}else i.numElements||(i.numElements=p3(t,i.attribs));return i}function Mr(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},Tr=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,Xi=6402,vp=34041,Pa=33071,g3=9728,y3=9729,Nt=3553,Lt=34067,sn=32879,cn=35866,Fa=34069,v3=34070,b3=34071,A3=34072,x3=34073,w3=34074,ju=10241,Uu=10240,za=10242,Ra=10243,bp=32882,C3=33082,S3=33083,E3=33084,D3=33085,Gu=3317,Ap=3314,xp=32878,wp=3316,Cp=3315,Sp=32877,M3=37443,T3=37441,I3=37440,k3=33321,N3=36756,L3=33325,B3=33326,O3=33330,P3=33329,F3=33338,z3=33337,R3=33340,j3=33339,U3=33323,G3=36757,H3=33327,Q3=33328,V3=33336,Y3=33335,_3=33332,W3=33331,X3=33334,Z3=33333,q3=32849,K3=35905,J3=36194,$3=36758,eC=35898,tC=35901,nC=34843,rC=34837,iC=36221,oC=36239,aC=36215,sC=36233,cC=36209,uC=36227,lC=32856,fC=35907,dC=36759,hC=32855,pC=32854,mC=32857,gC=34842,yC=34836,vC=36220,bC=36238,AC=36975,xC=36214,wC=36232,CC=36226,SC=36208,EC=33189,DC=33190,MC=36012,TC=36013,IC=35056,un=5120,oe=5121,ja=5122,Ir=5123,Ua=5124,Wn=5125,Te=5126,Ep=32819,Dp=32820,Mp=33635,ut=5131,Zi=36193,Hu=33640,kC=35899,NC=35902,LC=36269,BC=34042,Ga=33319,kr=33320,Ha=6403,Nr=36244,Lr=36248,Xn=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,ut,Zi,Te]},e[gp]={textureFormat:gp,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[oe,ut,Zi,Te]},e[yp]={textureFormat:yp,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[oe,ut,Zi,Te]},e[bt]={textureFormat:bt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[oe,ut,Zi,Te,Mp]},e[ie]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[oe,ut,Zi,Te,Ep,Dp]},e[Xi]={textureFormat:Xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Wn,Ir]},e[k3]={textureFormat:Ha,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[oe]},e[N3]={textureFormat:Ha,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[un]},e[L3]={textureFormat:Ha,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[Te,ut]},e[B3]={textureFormat:Ha,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[Te]},e[O3]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[oe]},e[P3]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[un]},e[_3]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Ir]},e[W3]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ja]},e[X3]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Wn]},e[Z3]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ua]},e[U3]={textureFormat:Ga,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[oe]},e[G3]={textureFormat:Ga,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[un]},e[H3]={textureFormat:Ga,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[Te,ut]},e[Q3]={textureFormat:Ga,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[Te]},e[V3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[oe]},e[Y3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[un]},e[F3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ir]},e[z3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ja]},e[R3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Wn]},e[j3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Ua]},e[q3]={textureFormat:bt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[oe]},e[K3]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[oe]},e[J3]={textureFormat:bt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[oe,Mp]},e[$3]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[un]},e[eC]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Te,ut,kC]},e[tC]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Te,ut,NC]},e[nC]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[Te,ut]},e[rC]={textureFormat:bt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Te]},e[iC]={textureFormat:Lr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[oe]},e[oC]={textureFormat:Lr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[un]},e[aC]={textureFormat:Lr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Ir]},e[sC]={textureFormat:Lr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[ja]},e[cC]={textureFormat:Lr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Wn]},e[uC]={textureFormat:Lr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Ua]},e[lC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[oe]},e[fC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[oe]},e[dC]={textureFormat:ie,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[un]},e[hC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[oe,Dp,Hu]},e[pC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[oe,Ep]},e[mC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Hu]},e[gC]={textureFormat:ie,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[Te,ut]},e[yC]={textureFormat:ie,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[Te]},e[vC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[oe]},e[bC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[un]},e[AC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Hu]},e[xC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Ir]},e[wC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ja]},e[CC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Ua]},e[SC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Wn]},e[EC]={textureFormat:Xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Ir,Wn]},e[DC]={textureFormat:Xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Wn]},e[MC]={textureFormat:Xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Te]},e[IC]={textureFormat:vp,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[BC]},e[TC]={textureFormat:vp,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[LC]},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 OC(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 Br(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 PC(t,e,n,r){if(!Mr(t))return Tp(e)&&Tp(n);const i=Qa(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function FC(t){const e=Qa(t);if(!e)throw"unknown internal format";return e.textureFilterable}function Ip(t,e,n){return Tr(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 Or(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(M3,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(T3,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(I3,e.flipY)}function kp(t){t.pixelStorei(Gu,4),Mr(t)&&(t.pixelStorei(Ap,0),t.pixelStorei(xp,0),t.pixelStorei(wp,0),t.pixelStorei(Cp,0),t.pixelStorei(Sp,0))}function zC(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||Z4(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,C3,r.minLod),r.maxLod&&n.call(t,e,S3,r.maxLod),r.baseLevel&&n.call(t,e,E3,r.baseLevel),r.maxLevel&&n.call(t,e,D3,r.maxLevel)}function Np(t,e,n){const r=n.target||Nt;t.bindTexture(r,e),zC(t,r,t.texParameteri,n)}function RC(t){return t=t||an.textureColor,Tr(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),PC(t,r,i,o))t.generateMipmap(a);else{const s=FC(o)?y3:g3;t.texParameteri(a,ju,s),t.texParameteri(a,Uu,s),t.texParameteri(a,za,Pa),t.texParameteri(a,Ra,Pa)}}function qi(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Yu(t,e){return e=e||{},e.cubeFaceOrder||[Fa,v3,b3,A3,x3,w3]}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=Br(c),f=r.format||u.format,l=r.type||u.type;if(Or(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 y=pp();y?(y.canvas.width=p,y.canvas.height=p,a=p,s=p,_u(t,r).forEach(function(g){const x=m[g.ndx*2+0]*p,A=m[g.ndx*2+1]*p;y.drawImage(n,x,A,p,p,0,0,p,p),t.texImage2D(g.face,o,c,f,l,y.canvas)}),y.canvas.width=1,y.canvas.height=1):typeof createImageBitmap!="undefined"&&(a=p,s=p,_u(t,r).forEach(function(g){const x=m[g.ndx*2+0]*p,A=m[g.ndx*2+1]*p;t.texImage2D(g.face,o,c,p,p,0,f,l,null),createImageBitmap(n,x,A,p,p,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(C){Or(t,r),t.bindTexture(i,e),t.texImage2D(g.face,o,c,f,l,C),qi(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,y=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 g=0;g<p;++g){const x=g*d*m,A=g*d*y;t.pixelStorei(wp,x),t.pixelStorei(Cp,A),t.texSubImage3D(i,o,0,0,g,d,d,1,f,l,n)}kp(t)}else t.texImage2D(i,o,c,f,l,n);qi(r)&&Vu(t,e,r,a,s,c),Np(t,e,r)}function Ki(){}function jC(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 UC(t,e){return e===void 0&&!jC(t)?"anonymous":e}function GC(t,e,n){n=n||Ki;let r;if(e=e!==void 0?e:an.crossOrigin,e=UC(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;W4(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):GC(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=RC(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 HC(t,e,n,r){return r=r||Ki,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 QC(t,e,n,r){r=r||Ki;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=Br(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(y){return function(g,x){--l,g?d.push(g):x.width!==x.height?d.push("cubemap face img is not a square: "+x.src):(Or(t,n),t.bindTexture(f,e),l===5?Yu().forEach(function(A){t.texImage2D(A,o,a,c,u,x)}):t.texImage2D(y,o,a,c,u,x),qi(n)&&t.generateMipmap(f)),l===0&&r(d.length?d:void 0,e,p)}}p=i.map(function(y,g){return Wu(y,n.crossOrigin,m(h[g]))})}function VC(t,e,n,r){r=r||Ki;const i=n.src,o=n.internalFormat||n.format||ie,a=Br(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 y=i.length;let g=!0;function x(A){return function(C,b){if(--f,C)l.push(C);else{if(Or(t,n),t.bindTexture(u,e),g){g=!1,p=n.width||b.width,m=n.height||b.height,t.texImage3D(u,h,o,p,m,y,0,s,c,null);for(let v=0;v<y;++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)}qi(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=Br(u),l=r.format||f.format,d=r.type||Ip(t,n,f.type);if(Tr(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const y=_4(d);n=new y(n)}const h=OC(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 y=Math.cbrt(p);if(y%1!==0)throw"can't guess cube size of array of numElements: "+p;o=y,a=y,s=y}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),Or(t,r),i===Lt){const y=h/n.BYTES_PER_ELEMENT,g=p/6*y;_u(t,r).forEach(x=>{const A=g*x.ndx,C=n.subarray(A,A+g);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 YC(t,e,n){const r=n.target||Nt;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||ie,a=Br(o),s=n.format||a.format,c=n.type||a.type;if(Or(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 Ji(t,e,n){n=n||Ki,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")HC(t,r,e,n);else if(Tr(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||Tr(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?QC(t,r,e,n):VC(t,r,e,n):(Lp(t,r,c,e),o=c.width,a=c.height);else YC(t,r,e);return qi(e)&&Vu(t,r,e,o,a,s),Np(t,r,e),r}function _C(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=Br(c),f=n.format||u.format;let l;const d=n.src;if(d&&(Tr(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 WC=ap,Ya=33984,XC=35048,_a=34962,ZC=34963,Zu=35345,Pp=35718,qC=35721,KC=35971,JC=35382,$C=35396,eS=35398,tS=35392,nS=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,rS=35678,iS=35680,oS=35679,aS=35682,sS=35685,cS=35686,uS=35687,lS=35688,fS=35689,dS=35690,hS=36289,pS=36292,mS=36293,Ku=5125,Zp=36294,qp=36295,Kp=36296,gS=36298,yS=36299,vS=36300,bS=36303,AS=36306,xS=36307,wS=36308,CS=36311,Xa=3553,Za=34067,Ju=32879,qa=35866,j={};function Jp(t,e){return j[e].bindPoint}function SS(t,e){return function(n){t.uniform1f(e,n)}}function ES(t,e){return function(n){t.uniform1fv(e,n)}}function DS(t,e){return function(n){t.uniform2fv(e,n)}}function MS(t,e){return function(n){t.uniform3fv(e,n)}}function TS(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 IS(t,e){return function(n){t.uniform1ui(e,n)}}function kS(t,e){return function(n){t.uniform1uiv(e,n)}}function NS(t,e){return function(n){t.uniform2uiv(e,n)}}function LS(t,e){return function(n){t.uniform3uiv(e,n)}}function BS(t,e){return function(n){t.uniform4uiv(e,n)}}function OS(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function PS(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function FS(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function zS(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function RS(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function jS(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function US(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function GS(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function HS(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function Ne(t,e,n,r){const i=Jp(t,e);return Mr(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 Le(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 Mr(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:SS,arraySetter:ES},j[Fp]={Type:Float32Array,size:8,setter:DS,cols:2},j[zp]={Type:Float32Array,size:12,setter:MS,cols:3},j[Rp]={Type:Float32Array,size:16,setter:TS,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:IS,arraySetter:kS},j[Zp]={Type:Uint32Array,size:8,setter:NS,cols:2},j[qp]={Type:Uint32Array,size:12,setter:LS,cols:3},j[Kp]={Type:Uint32Array,size:16,setter:BS,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:OS,rows:2,cols:2},j[Wp]={Type:Float32Array,size:48,setter:PS,rows:3,cols:3},j[Xp]={Type:Float32Array,size:64,setter:FS,rows:4,cols:4},j[sS]={Type:Float32Array,size:32,setter:zS,rows:2,cols:3},j[cS]={Type:Float32Array,size:32,setter:jS,rows:2,cols:4},j[uS]={Type:Float32Array,size:48,setter:RS,rows:3,cols:2},j[lS]={Type:Float32Array,size:48,setter:GS,rows:3,cols:4},j[fS]={Type:Float32Array,size:64,setter:US,rows:4,cols:2},j[dS]={Type:Float32Array,size:64,setter:HS,rows:4,cols:3},j[rS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Xa},j[iS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Za},j[oS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Ju},j[aS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Xa},j[hS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:qa},j[pS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:qa},j[mS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Za},j[gS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Xa},j[yS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Ju},j[vS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Za},j[bS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:qa},j[AS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Xa},j[xS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Ju},j[wS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Za},j[CS]={Type:null,size:0,setter:Ne,arraySetter:Le,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 QS=/(\.|\[|]|\w+)/g,VS=t=>t>="0"&&t<="9";function om(t,e,n,r){const i=t.split(QS).filter(s=>s!=="");let o=0,a="";for(;;){const s=i[o++];a+=s;const c=VS(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){lm(p,m)}}(h),a+=l}}}function YS(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 _S(t,e){const n={},r=t.getProgramParameter(e,KC);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 WS(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,JC);for(let s=0;s<a;++s){const c=t.getActiveUniformBlockName(e,s),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,s,$C),usedByFragmentShader:t.getActiveUniformBlockParameter(e,s,eS),size:t.getActiveUniformBlockParameter(e,s,tS),uniformIndices:t.getActiveUniformBlockParameter(e,s,nS)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const am=/\[\d+\]\.$/,XS=(t,e)=>((t+(e-1))/e|0)*e;function ZS(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 qS(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,a=i[r];if(!a)return WC("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 y=m.name;y.startsWith(f)&&(y=y.substr(f.length));const g=y.endsWith("[0]");g&&(y=y.substr(0,y.length-3));const x=j[m.type],A=x.Type,C=g?XS(x.size,16)*m.size:x.size*m.size,b=new A(s,m.offset,C/A.BYTES_PER_ELEMENT);l[y]=b;const v=ZS(b,g,x.rows,x.cols);d[y]=v,om(y,v,h,d)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:l,setters:d}}function sm(t,e,n){return qS(t,e.program,e.uniformBlockSpec,n)}function KS(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 cm(t,e,n){KS(t,e,n)&&t.bufferData(Zu,n.array,XC)}function um(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const o=e[r];i(o)}}}function lm(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):lm(t[n],e[n])}}function Qe(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)Qe(n,o[s])}else for(const a in o){const s=n[a];s&&s(o[a])}}}function JS(t,e){const n={},r=t.getProgramParameter(e,qC);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 $S(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Pr(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):($S(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(ZC,n.indices))}function eE(t,e){const n=YS(t,e),r=JS(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Mr(t)&&(i.uniformBlockSpec=WS(t,e),i.transformFeedbackInfo=_S(t,e)),i}const tE=4,fm=5123;function $i(t,e,n,r,i,o){n=n===void 0?tE: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?fm:e.elementType,i,o):t.drawElements(n,c,s===void 0?fm:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,c,o):t.drawArrays(n,i,c)}const nE=36160,Zn=36161,rE=3553,iE=5121,oE=6402,aE=6408,sE=33190,cE=36012,uE=35056,lE=36013,fE=32854,dE=32855,hE=36194,dm=33189,hm=6401,pm=36168,el=34041,pE=36064,$a=36096,mm=36128,tl=33306,nl=33071,rl=9729,gm=[{format:aE,type:iE,min:rl,wrap:nl},{format:el}],lt={};lt[el]=tl,lt[hm]=mm,lt[pm]=mm,lt[oE]=$a,lt[dm]=$a,lt[sE]=$a,lt[cE]=$a,lt[uE]=tl,lt[lE]=tl;function mE(t,e){return lt[t]||lt[e]}const fn={};fn[fE]=!0,fn[dE]=!0,fn[hE]=!0,fn[el]=!0,fn[dm]=!0,fn[hm]=!0,fn[pm]=!0;function gE(t){return fn[t]}function yE(t,e,n,r){const i=nE,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||gm;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||mE(l,c.internalFormat);if(d||(d=pE+a++),!u)if(f!==void 0||gE(l))u=t.createRenderbuffer(),t.bindRenderbuffer(Zn,u),f>1?t.renderbufferStorageMultisample(Zn,f,l,n,r):t.renderbufferStorage(Zn,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=Ji(t,h)}if(sp(t,u))t.framebufferRenderbuffer(i,d,Zn,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||rE,u,c.level||0);else throw new Error("unknown attachment type");s.attachments.push(u)}),s}function vE(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||gm,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(Zn,s),u>1?t.renderbufferStorageMultisample(Zn,u,c,r,i):t.renderbufferStorage(Zn,c,r,i);else if(Oa(t,s))_C(t,s,o,r,i);else throw new Error("unknown attachment type")})}function bE(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Pr(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const AE=/^(.*?)_/;function xE(t,e){Ru(t,0);const n=t.getExtension(e);if(n){const r={},i=AE.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 ym=["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 vm(t){for(let e=0;e<ym.length;++e)xE(t,ym[e])}function wE(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){vm(r);break}return r}function CE(t,e){return wE(t,e)}var SE=`/**
|
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
|
-
`,
|
128
|
+
`,EE=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
|
129
129
|
in vec2 vPosInPixels;
|
130
130
|
#endif
|
131
131
|
|
@@ -176,20 +176,20 @@ void main(void) {
|
|
176
176
|
fragColor = vPickingColor;
|
177
177
|
}
|
178
178
|
}
|
179
|
-
`;const
|
179
|
+
`;const il="attr_",bm="uDomain_",DE="range_",Am="scale_",xm="getScaled_",ol="uRangeTexture_",wm=3402823466e29;function ME(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 TE(t,e){let n;if(La(t))n=qn(ip(t)(e));else if(re(e))if(_n(t))n=kE(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(_o(e))n=qn(e?1:0);else if(e===null)if(_n(t))n=qn([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=qn(e);return`
|
180
180
|
#define ${t}_DEFINED
|
181
|
-
${n.type} ${
|
181
|
+
${n.type} ${xm}${t}() {
|
182
182
|
// Constant value
|
183
183
|
return ${n};
|
184
|
-
}`}function
|
185
|
-
${
|
186
|
-
${
|
184
|
+
}`}function IE(t,e,n){var w,E;if(ct(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=Dr(t),i=il+t,o=bm+r,a=DE+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}=ME(e.type),h=(k,...L)=>NE.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)||Ue(e.type)&&_n(t)?[0,1]:e.range?e.range():void 0;if(m&&t==r&&m.length&&m.every(le)){const k=Cm(m);l.push(`const ${k.type} ${a} = ${k};`)}const y=_n(t)?"vec3":"float";let g;if(_n(t)){const k=ol+r;if(t==r&&l.push(`uniform sampler2D ${k};`),Ue(e.type))g=`getInterpolatedColor(${k}, transformed)`;else if(nn(e.type)||xr(e.type))g=`getDiscreteColor(${k}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||xr(e.type)){const k=ol+r;t==r&&l.push(`uniform sampler2D ${k};`),g=`getDiscreteColor(${k}, int(transformed)).r`}Qi(n)?l.push(`uniform highp ${c} ${i};`):l.push(`in highp ${c} ${i};`);const x=[],A=Ue(e.type)&&u>2,C=xr(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=Ue(e.type)||xr(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, ${Cm(m)});`),x.push(`return ${g!=null?g:"transformed"};`),l.push(`
|
185
|
+
${y} ${Am}${t}(${c} value) {
|
186
|
+
${x.map(k=>` ${k}
|
187
187
|
`).join("")}
|
188
188
|
}`),l.push(`
|
189
|
-
${
|
190
|
-
return ${
|
191
|
-
}`);const
|
192
|
-
`);if(b&&t==r){const
|
189
|
+
${y} ${xm}${t}() {
|
190
|
+
return ${Am}${t}(${i});
|
191
|
+
}`);const v=l.join(`
|
192
|
+
`);if(b&&t==r){const k=Ue(e.type)||xr(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""+wm;if(t==-1/0)return""+-wm;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function qn(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 kE(t){const e=Pn(t).rgb();return qn([e.r,e.g,e.b].map(n=>n/255))}function Cm(t){return qn([t[0],He(t)])}function NE(t,...e){const n=[];for(const r of e)le(r)?n.push(al(r)):qe(r)?n.push(qn(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 LE(t){return[...sl(t[0]),t[1]-t[0]]}class BE{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}];
|
193
193
|
`,n+=`p${i}();
|
194
194
|
`;const r=new Function("that",`${e}
|
195
195
|
|
@@ -197,21 +197,21 @@ ${m} ${K0}${t}() {
|
|
197
197
|
${n}
|
198
198
|
that.vertexCount++;
|
199
199
|
};
|
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
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
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 Fr=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-Fr*2,l=c.height-Fr*2,d=u.height-s.height+u.yoffset-s.yoffset;function h(p,m=1){let y=0;for(let g=0;g<p.length;g++)y+=i(p.charCodeAt(g)).xadvance;return y/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 Sm=2**31-1,OE=-(2**31);function PE(t,e,n,r=n){const i=new Int32Array(t);i.fill(Sm);let o=OE,a=!1;const s=new Int32Array(t),c=e[0],f=(e[1]-e[0])/t,l=y=>ll(Math.floor((y-c)/f),0,t-1);function d(y,g,x){g>o?o=g:a||(a=!0,console.debug("Items are not ordered properly. Disabling binned index."));const A=n(y),C=l(A);i[C]>g&&(i[C]=g),s[C]<x&&(s[C]=x)}function h(y,g,x){g>o?o=g:a||(a=!0,console.debug("Items are not ordered properly. Disabling binned index."));const A=n(y),C=r(y),b=l(A),v=l(C);for(let w=b;w<=v;w++)i[w]>g&&(i[w]=g),s[w]<x&&(s[w]=x)}const p=(y,g,x=[0,0])=>(x[0]=i[l(y)],x[1]=Math.max(s[l(g)],x[0]),x),m=()=>{for(let g=1;g<s.length;g++)s[g]<s[g-1]&&(s[g]=s[g-1]);let y=!0;for(let g=i.length-1;g>0;g--)y&&i[g]==Sm?(i[g]=s[g],y=!1):i[g-1]>i[g]&&(i[g-1]=i[g]);return p};if(d.getIndex=m,h.getIndex=m,!a)return n==r?d:h}class eo{constructor({encoders:e,numVertices:n=void 0,attributes:r=[]}){this.encoders=e,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([i,o])=>r.includes(i)&&o&&o.scale&&!o.constant)),this.allocatedVertices=n,this.variableBuilder=new BE(n);for(const[i,o]of Object.entries(this.variableEncoders)){const a=o.accessor,s=[0,0],c=es(o.scale.type),u=o.indexer,f=u?l=>u(a(l)):c?l=>sl(a(l),s):a;this.variableBuilder.addConverter(i,{f,numComponents:c?2:1,arrayReference:c?s:void 0})}this.lastOffset=0,this.rangeMap=new Mn([],JSON.stringify)}registerBatch(e){var o;const n=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-n;i&&this.rangeMap.set(e,{offset:n,count:i,xIndex:(o=this.xIndexer)==null?void 0:o.getIndex()}),this.lastOffset=r}addBatches(e){for(const[n,r]of e)this.addBatch(n,r)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const a=n[o];this.variableBuilder.pushFromDatum(a),this.addToXIndex(a)}this.registerBatch(e)}prepareXIndexer(e,n=0,r=n+e.length){if(!e.length||r-n<0){this.addToXIndex=s=>{};return}const i=s=>{var c;return s&&Ue((c=s.scale)==null?void 0:c.type)&&s},o=i(this.variableEncoders.x),a=i(this.variableEncoders.x2);if(o){const s=o.accessor,c=a?a.accessor:s;this.xIndexer=PE(50,[s(e[n]),c(e[r-1])],s,c);let u=this.variableBuilder.vertexCount;this.addToXIndex=f=>{let l=this.variableBuilder.vertexCount;this.xIndexer(f,u,l),u=l}}else this.xIndexer=void 0,this.addToXIndex=s=>{}}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class FE extends eo{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateFrac=this.variableBuilder.createUpdater("frac",2)}addBatch(e,n,r=0,i=n.length){if(i<=r)return;const o=this.encoders,[a,s]=this.visibleRange,c=d=>d.accessor||(h=>0),u=c(o.x),f=c(o.x2);this.prepareXIndexer(n,r,i);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 y=1;this.variableBuilder.pushAll();for(let g=0;g<=y;g++)l[0]=g/y,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(h)}this.registerBatch(e)}}class zE extends eo{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateSide=this.variableBuilder.createUpdater("side",1),this.updatePos=this.variableBuilder.createUpdater("pos",1)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const 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 RE extends eo{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class jE extends eo{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 UE extends eo{constructor({encoders:e,attributes:n,fontMetrics:r,properties:i,numCharacters:o=void 0}){super({encoders:e,attributes:n,numVertices:o*6}),this.metadata=r,this.metrics=r,this.properties=i;const s=e.text.channelDef;this.numberFormat=!ct(s)&&s.format?he(s.format):c=>c,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=-Fr;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,r,i);for(let p=r;p<i;p++){const m=n[p],y=this.numberFormat(f(m)),g=re(y)?y:y===null?"":""+y;if(g.length==0)continue;this.variableBuilder.updateFromDatum(m);const x=a?g.length:this.metrics.measureWidth(g);this.updateWidth(x);let A=o=="right"?-x:o=="center"?-x/2:0;if(!a){const w=this.metrics.getCharByCode(g.charCodeAt(0));A-=(w.width-w.xadvance)/s/2}let C=-.5,b=1,v=1;for(let w=0;w<g.length;w++){const E=this.metrics.getCharByCode(g.charCodeAt(w)),k=a?1:E.xadvance/s;if(E.id==32){A+=k;continue}a?(v=(E.width+Fr*2)/E.width,A=-v/2,b=(E.height+Fr*2)/E.height,C=-.5-Fr/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(m)}this.registerBatch(e)}}var Em=`#define PI 3.141593
|
201
|
+
|
202
|
+
uniform View {
|
203
|
+
/** Offset in "unit" units */
|
204
|
+
mediump vec2 uViewOffset;
|
205
|
+
mediump vec2 uViewScale;
|
206
|
+
/** Size of the logical viewport in pixels, i.e., the view */
|
207
|
+
mediump vec2 uViewportSize;
|
208
|
+
lowp float uDevicePixelRatio;
|
209
|
+
// TODO: Views with opacity less than 1.0 should be rendered into a texture
|
210
|
+
// that is rendered with the specified opacity.
|
211
|
+
lowp float uViewOpacity;
|
212
|
+
bool uPickingEnabled;
|
213
|
+
};
|
211
214
|
|
212
|
-
// TODO: Views with opacity less than 1.0 should be rendered into a texture
|
213
|
-
// that is rendered with the specified opacity.
|
214
|
-
uniform lowp float uViewOpacity;
|
215
215
|
|
216
216
|
/**
|
217
217
|
* Maps a coordinate on the unit scale to a normalized device coordinate.
|
@@ -260,7 +260,7 @@ vec4 distanceToColor(float d, vec4 fill, vec4 stroke, float halfStrokeWidth) {
|
|
260
260
|
return fill * distanceToRatio(-d);
|
261
261
|
}
|
262
262
|
}
|
263
|
-
`,
|
263
|
+
`,GE=`const float inf = 1.0 / 0.0;
|
264
264
|
|
265
265
|
// Utils ------------
|
266
266
|
|
@@ -372,7 +372,7 @@ float scaleBandHp(vec2 value, vec3 domainExtent, vec2 range,
|
|
372
372
|
|
373
373
|
return dot(vec4(start, hi, lo, bandwidth), vec4(1.0, step, step, band));
|
374
374
|
}
|
375
|
-
`,
|
375
|
+
`,HE=`
|
376
376
|
/**
|
377
377
|
* Describes where a sample facet should be shown. Interpolating between the
|
378
378
|
* current and target positions/heights allows for transitioning between facet
|
@@ -479,14 +479,12 @@ float getSampleFacetHeight(vec2 pos) {
|
|
479
479
|
return facetPos.height;
|
480
480
|
}
|
481
481
|
}
|
482
|
-
`,
|
482
|
+
`,QE=`/*
|
483
483
|
* Based on concepts presented at:
|
484
484
|
* https://webglfundamentals.org/webgl/lessons/webgl-picking.html
|
485
485
|
* https://deck.gl/docs/developer-guide/custom-layers/picking
|
486
486
|
*/
|
487
487
|
|
488
|
-
uniform bool uPickingEnabled;
|
489
|
-
|
490
488
|
flat out highp vec4 vPickingColor;
|
491
489
|
|
492
490
|
/**
|
@@ -508,24 +506,22 @@ bool setupPicking() {
|
|
508
506
|
}
|
509
507
|
return false;
|
510
508
|
}
|
511
|
-
`,
|
509
|
+
`,VE=`flat in highp vec4 vPickingColor;
|
510
|
+
`;const ts=Symbol("cacheMap");function zr(t,e,n){let r=no(t).get(e);return r===void 0&&(r=n(e),no(t).set(e,r)),r}function Dm(t,e){no(t).delete(e)}function to(t,e){const n=no(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);no(t).delete(e)}function Mm(t){t[ts]=new Map}function no(t){return t[ts]||Mm(t),t[ts]}function YE(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(Be(a)){const s=Im(a,{extent:o,count:n});return ro(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},s,r)}else{if(qe(a))return Tm(a,e);throw new Error("Unknown scheme: "+i)}}}function _E(t,e="rgb",n,r){const i=Sa(t,re(e)?e:e.type,re(e)?void 0:e.gamma),o=Im(i);return ro(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function WE(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 ro(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function Tm(t,e,n,r){const i=km(t,n);return ro(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function Im(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=He(e)-i,a=_t(r).map(s=>s/(r-1)).map(s=>i+s/o).map(t);return n&&a.reverse(),km(a)}function km(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=Pn(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 XE{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=CE(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(!Mr(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");vm(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=yE(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;";qe(n)&&(n=n.join(`
|
512
511
|
|
513
|
-
|
514
|
-
`;const ys=Symbol("cacheMap");function yr(t,e,n){let r=Bi(t).get(e);return r===void 0&&(r=n(e),Bi(t).set(e,r)),r}function tp(t,e){Bi(t).delete(e)}function ki(t,e){const n=Bi(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Bi(t).delete(e)}function np(t){t[ys]=new Map}function Bi(t){return t[ys]||np(t),t[ys]}function zC(t,e,n,r){const i=ie(t)?t:t.name,o=!ie(t)&&t.extent||[0,1];if(n===void 0&&!ie(t)&&(n=t.count),i){const s=bc(i);if(Te(s)){const a=ip(s,{extent:o,count:n});return Li(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},a,r)}else{if(Qe(s))return rp(s,e);throw new Error("Unknown scheme: "+i)}}}function RC(t,e="rgb",n,r){const i=Uo(t,ie(e)?e:e.type,ie(e)?void 0:e.gamma),o=ip(i);return Li(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function jC(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 Li(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function rp(t,e,n,r){const i=op(t,n);return Li(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function ip(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=le(e)-i,s=Ft(r).map(a=>a/(r-1)).map(a=>i+a/o).map(t);return n&&s.reverse(),op(s)}function op(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=vn(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 UC{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=gC(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(!ar(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");X0(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=uC(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;";Qe(n)&&(n=n.join(`
|
512
|
+
`));const o=this.gl,a=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let s=this._shaderCache.get(a);if(!s){const c=[r,i,n].join(`
|
515
513
|
|
516
|
-
`));const
|
517
|
-
|
518
|
-
`);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,lC(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 Wt(a.type)?a.domain().length:a.type=="threshold"?a.domain().length+1:a.type=="quantize"||a.type=="quantile"?s!=null?s:4:s}const o=e.channel;if(kn(o)){const s=e.getScaleProps(),a=e.getScale();let c;if(s.scheme){let u=ie(s.scheme)?void 0:s.scheme.count;u=i(u,a),c=zC(s.scheme,this.gl,u,r)}else{const u=a.range();jo(a.type)?c=RC(u,s.interpolate,this.gl,r):c=rp(u,this.gl,a.domain().length,r)}this.rangeTextures.set(e,c)}else{const s=e.getScale();if(s.type==="ordinal"||tr(s.type)){const a=Xo(o)?zd(o):u=>u,c=e.getScale().range();this.rangeTextures.set(e,jC(c.map(a),this.gl,s.domain().length,r))}}}}function GC(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(`
|
519
|
-
`).map((s,a)=>{const c=o.get(a);return`${a+1+n}: ${s}${c?`
|
514
|
+
`);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,vE(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(_n(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=YE(a.scheme,this.gl,u,r)}else{const u=s.range();Ca(s.type)?c=_E(u,a.interpolate,this.gl,r):c=Tm(u,this.gl,s.domain().length,r)}this.rangeTextures.set(e,c)}else{const a=e.getScale();if(a.type==="ordinal"||xr(a.type)){const s=La(o)?ip(o):u=>u,c=e.getScale().range();this.rangeTextures.set(e,WE(c.map(s),this.gl,a.domain().length,r))}}}}function ZE(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(`
|
515
|
+
`).map((a,s)=>{const c=o.get(s);return`${s+1+n}: ${a}${c?`
|
520
516
|
|
521
517
|
^^^ ${c}`:""}`}).join(`
|
522
|
-
`)}function
|
523
|
-
Error compiling: ${o}`,t.deleteShader(c));t.deleteProgram(r)}if(o)return{message:o,detail:
|
524
|
-
`+this.domainUniforms.map(
|
518
|
+
`)}function qE(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=ZE(t.getShaderSource(c),o,0)+`
|
519
|
+
Error compiling: ${o}`,t.deleteShader(c));t.deleteProgram(r)}if(o)return{message:o,detail:a}}return{program:r,getProgramErrors:i}}function ro(t,e,n,r){return r?Op(t,r,n,e):r=Ji(t,U(T({},e),{src:n})),r}function KE(...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 JE(t){return re(t)||le(t)||_o(t)}const $E="SAMPLE_FACET_UNIFORM",Nm="SAMPLE_FACET_TEXTURE";class io{constructor(e){this.unitView=e,this.encoders=void 0,this.bufferInfo=void 0,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.domainUniformInfo=void 0,this.viewUniformInfo=void 0,this.rangeMap=new eD,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=KE(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 zr(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=a=>{const s=this.properties[a];return JE(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=I4(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return Nm;if(this.unitView.getFacetAccessor())return $E}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(ct(p))o.push(TE(h,p.value));else{const m=et(p)&&p.resolutionChannel||h,y=this.unitView.getScaleResolution(m).getScale(),g=IE(h,y,p);o.push(g.glsl),g.domainUniform&&this.domainUniforms.push(g.domainUniform)}}const s=this.domainUniforms.length?`layout(std140) uniform Domains {
|
520
|
+
`+this.domainUniforms.map(d=>` ${d}
|
525
521
|
`).join("")+`};
|
526
522
|
|
527
523
|
`:"",u=[`precision highp float;
|
528
|
-
`,...r,
|
524
|
+
`,...r,Em,GE,s,...o,HE,QE,e],f=[...r,Em,VE,n],l=this.gl;this.programStatus=qE(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=eE(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=sm(this.gl,this.programInfo,"Domains")),this.viewUniformInfo=sm(this.gl,this.programInfo,"View"),this.gl.useProgram(this.programInfo.program),this._setDatums(),Qe(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0})}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(Qi(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):es(r.scale.type)?sl(+n.datum):+n.datum;Qe(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&&d3(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=m3(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 a;const n=this.glHelper,r=this.gl,i=[];if(i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=bE(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)}),this.domainUniformInfo){for(const[s,c]of Object.entries(this.domainUniformInfo.setters)){const u=s.substring(bm.length),f=this.encoding[u],l=et(f)&&f.resolutionChannel||u,d=this.unitView.getScaleResolution(l);if(d){const h=d.getScale();i.push(()=>{const p=nn(h.type)?[0,h.domain().length]:h.domain();c(es(h.type)?LE(p):p)})}}i.push(()=>cm(r,this.programInfo,this.domainUniformInfo))}for(const[s,c]of Object.entries(this.encoding))if(et(c)){const u=et(c)&&c.resolutionChannel||s,f=this.unitView.getScaleResolution(u),l=n.rangeTextures.get(f);l&&i.push(()=>Qe(this.programInfo,{[ol+s]:l}))}this.getSampleFacetMode()==Nm&&i.push(()=>{let s;for(const c of this.unitView.getAncestors())if(s=c.getSampleFacetTexture(),s)break;if(!s)throw new Error("No facet texture available. This is bug.");Qe(this.programInfo,{uSampleFacetTexture:s})});const o=((a=e.picking)!=null?a:!1)&&this.isPickingParticipant();return i.push(()=>um(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:o})),this.opaque||e.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}prepareSampleFacetRendering(e){const n=e.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(n&&r){const i=n.locSize?n.locSize.location:0,o=n.locSize?n.locSize.size:1;if(i>1||i+o<0)return!1;const 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){var f;const r=this;let i;const o=(f=this.unitView.getScaleResolution("x"))==null?void 0:f.getScale(),a=o&&Ue(o.type),s=["index","locus"].includes(o==null?void 0:o.type)?-1:0,c=[0,0];i=l=>{if(a&&l.xIndex){const d=o.domain(),h=l.xIndex(d[0]+s,d[1],c),p=h[0],m=h[1]-p;m>0&&e(p,m)}else e(l.offset,l.count)};const u=this.rangeMap.get(n.facetId);return n.sampleFacetRenderingOptions?function(){u.count&&r.prepareSampleFacetRendering(n)&&i(u)}:function(){u.count&&i(u)}}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),y=m.map(A=>Math.floor(A)),[g,x]=m.map((A,C)=>A-y[C]);i.viewport(...y),i.scissor(...y),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(c+d+g)/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 um(this.viewUniformInfo,U(T({},f),{uViewportSize:[e.width,e.height],uDevicePixelRatio:this.glHelper.dpr})),cm(this.gl,this.programInfo,this.viewUniformInfo),l.height>0&&l.width>0}findDatumAt(e,n){}}class eD extends Mn{constructor(){super([],JSON.stringify)}get(e){let n=super.get(e);return n===void 0&&(n={offset:0,count:0,xIndex:void 0},super.set(e,n)),n}migrateEntries(e){for(const[n,r]of e.entries())Object.assign(this.get(n),r)}}function fl(t,e){var o;const n=B4(e);let r=t[e]&&T({},t[e]),i=t[n]&&T({},t[n]);if(!(ct(r)||ct(i))){if(r){if(!et(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 Lm(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke=T({resolutionChannel:"color"},t.color)),ct(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity=T({resolutionChannel:"opacity"},t.opacity))}function Bm(t,e){ct(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 tD extends io{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 zr(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&ct(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"),Lm(e,this.properties.filled),Bm(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!(ct(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(SE,EE,e.map(n=>"#define "+n))}finalizeGraphicsInitialization(){var n,r,i,o;super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Qe(this.programInfo,{uMinSize:[e.minWidth,e.minHeight],uMinOpacity:e.minOpacity,uCornerRadii:[(n=e.cornerRadiusTopRight)!=null?n:e.cornerRadius,(r=e.cornerRadiusBottomRight)!=null?r:e.cornerRadius,(i=e.cornerRadiusTopLeft)!=null?i:e.cornerRadius,(o=e.cornerRadiusBottomLeft)!=null?o:e.cornerRadius]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new FE({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Pr(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{$i(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e)}findDatumAt(e,n){e=$e(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 nD=`/**
|
529
525
|
* The stroke should only grow inwards, e.g, the diameter/outline is not affected by the stroke width.
|
530
526
|
* Thus, a point that has a zero size has no visible stroke. This allows strokes to be used with
|
531
527
|
* geometric zoom, etc.
|
@@ -651,7 +647,7 @@ void main(void) {
|
|
651
647
|
|
652
648
|
setupPicking();
|
653
649
|
}
|
654
|
-
`,
|
650
|
+
`,rD=`const lowp vec4 white = vec4(1.0);
|
655
651
|
const lowp vec4 black = vec4(0.0, 0.0, 0.0, 1.0);
|
656
652
|
|
657
653
|
uniform bool uInwardStroke;
|
@@ -774,10 +770,10 @@ void main() {
|
|
774
770
|
}
|
775
771
|
}
|
776
772
|
|
777
|
-
`;const
|
778
|
-
`)+`return function propagate(datum) {${
|
773
|
+
`;const Bt=1<<0,dn=1<<1,iD={};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(`
|
774
|
+
`)+`return function propagate(datum) {${_t(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
|
779
775
|
`)}}`)(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])+`
|
780
|
-
`+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():
|
776
|
+
`+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():iD}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 Om(t){return t.type=="file"}function oD(t){return t.type=="facet"}class Pm 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 Fm(t,e,n){const r=new Pm({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const aD={};class sD extends io{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()),aD)}fixEncoding(e){return Lm(e,this.properties.filled),Bm(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(Fm(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(nD,rD)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Qe(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new RE({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}_getGeometricScaleFactor(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)}_getMaxPointSize(){const e=this.encoders.size;return e.constant?e(null):e.scale.range().reduce((n,r)=>Math.max(n,r))}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-this.properties.semanticZoomFraction*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const n=this.sampledSemanticScores;return sc(n,e)}}else return-1}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Qe(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>Pr(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&$i(n,this.vertexArrayInfo,n.POINTS,i,r)},e)}}var cD=`// Line caps
|
781
777
|
const int BUTT = 0;
|
782
778
|
const int SQUARE = 1;
|
783
779
|
const int ROUND = 2;
|
@@ -866,7 +862,7 @@ void main(void) {
|
|
866
862
|
|
867
863
|
setupPicking();
|
868
864
|
}
|
869
|
-
`,
|
865
|
+
`,uD=`// Line ending
|
870
866
|
const int BUTT = 0;
|
871
867
|
const int SQUARE = 1;
|
872
868
|
const int ROUND = 2;
|
@@ -918,7 +914,7 @@ void main(void) {
|
|
918
914
|
fragColor = vPickingColor;
|
919
915
|
}
|
920
916
|
}
|
921
|
-
`;class
|
917
|
+
`;class lD extends io{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&&et(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&et(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=fD(this.properties.strokeDash);this.dashTexture=Ji(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(cD,uD)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Qe(this.programInfo,{uMinLength:e.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(e.strokeCap)})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new zE({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return this.dashTexture&&n.push(()=>Qe(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>Pr(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>$i(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e)}}function fD(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 dD=`uniform float uSagittaScaleFactor;
|
922
918
|
|
923
919
|
/** Make very small arcs visible */
|
924
920
|
uniform float uMinSagittaLength;
|
@@ -1029,7 +1025,7 @@ void main(void) {
|
|
1029
1025
|
|
1030
1026
|
setupPicking();
|
1031
1027
|
}
|
1032
|
-
`,
|
1028
|
+
`,hD=`in lowp vec4 vColor;
|
1033
1029
|
in float vSize;
|
1034
1030
|
in float vNormalLengthInPixels;
|
1035
1031
|
|
@@ -1047,7 +1043,7 @@ void main(void) {
|
|
1047
1043
|
fragColor = vPickingColor;
|
1048
1044
|
}
|
1049
1045
|
}
|
1050
|
-
`;class
|
1046
|
+
`;class pD extends io{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(dD,hD)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Qe(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new jE({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:mD(this.properties.segments),numComponents:2},this.rangeMap.migrateEntries(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)}Pr(n,this.programInfo,this.bufferInfo),$i(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e)}}function mD(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}var gD=`uniform float uSdfNumerator;
|
1051
1047
|
|
1052
1048
|
uniform vec2 uD; // dx & dy
|
1053
1049
|
|
@@ -1293,7 +1289,7 @@ void main(void) {
|
|
1293
1289
|
|
1294
1290
|
setupPicking();
|
1295
1291
|
}
|
1296
|
-
`,
|
1292
|
+
`,yD=`uniform sampler2D uTexture;
|
1297
1293
|
|
1298
1294
|
in vec2 vTexCoord;
|
1299
1295
|
in float vEdgeFadeOpacity;
|
@@ -1324,7 +1320,7 @@ void main() {
|
|
1324
1320
|
fragColor = vPickingColor;
|
1325
1321
|
}
|
1326
1322
|
}
|
1327
|
-
`;const uS={left:-1,center:0,right:1},lS={top:-1,middle:0,bottom:1,alphabetic:1};class fS extends Oi{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 vi)this.properties.fitToBand&&gu(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(aS,cS)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ce(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[uS[e.align],lS[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?ce(r.text.format):u=>u;for(const u of n){const f=s(i(u)),l=ie(f)?f:f===null?"":""+f;o+=l&&l.length||0}const a=new BC({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),Ce(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/n)}),gr(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Ii(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e,()=>this.rangeMap)}}function As(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let s=0,a=0;for(const d of t)s+=Pi(d.px)+(bs(d)?0:n),a+=Pi(d.grow);s-=n;const c=Math.max(0,e-s),u=r!==void 0?d=>Math.round(d*r)/r:d=>d,f=[],l=[],h=d=>{const g=f.length;if(!g)return;const m=(d?n:0)*(o?-1:1);p-=m;for(let y=0;y<g;y++)l.push({location:p+(y+1)/(g+1)*m,size:0});p+=m,f.length=0};let p=o?Math.max(e,s):0+i;if(t.length==1&&bs(t[0]))return[{location:p,size:0}];for(let d=0;d<t.length;d++){const g=t[d];if(bs(g))f.push(g);else{h(l.length>0);const m=Pi(g.px)+(a?Pi(g.grow)/a*c:0);o&&(p-=m),l.push({location:u(p),size:u(m)}),o?p-=n:p+=m+n}}return p+=o?n:-n,h(!1),l}function hS(t,{spacing:e}={spacing:0}){let n=0;for(const r of t)n+=Pi(r.px)+(bs(r)?0:e);return Math.max(0,n-e)}class nn{constructor(e,n){this.width=e,this.height=n}addPadding(e){return new nn({px:(this.width.px||0)+e.width,grow:this.width.grow},{px:(this.height.px||0)+e.height,grow:this.height.grow})}}const hp=Object.freeze({px:0,grow:0}),dp=new nn(hp,hp);function bs(t){return!t.px&&!t.grow}function Pi(t){return t||0}function dS(t){return t&&(se(t.px)||se(t.grow))}function mu(t){if(yp(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(dS(t))return t;if(se(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 pS(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 gS(t,e){const n=se(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function mS(t,e){const n=se(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function pp(t,e){return e>=t.location&&e<t.location+t.size}class Ze{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 Ze(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new Ze(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):yu}static createFromRecord(e){return new Ze(e.top,e.right,e.bottom,e.left)}static zero(){return yu}static createUniformPadding(e){return new Ze(e,e,e,e)}}const yu=Ze.createUniformPadding(0);Object.freeze(yu);const yS=/^([A-Za-z]+:)?\/\//;function AS(t,e){if(e&&yS.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const Ar="VISIT_SKIP",Fn="VISIT_STOP",gp=t=>t;class mp{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={},np(this),this.opacityFunction=gp}getPadding(){return this._cache("size/padding",()=>Ze.createFromConfig(this.spec.padding))}getEffectivePadding(){return this.getPadding()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):dp)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(yp(r)){const s=r.step,a=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(a){let c=0;if(Wt(a.type))c=a.domain().length;else if(["locus","index"].includes(a.type)){const f=a.domain();c=le(f)-f[0]}else throw new Error(`Cannot use step-based size with "${a.type}" scale!`);const u=a;return c=dc(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&&mu(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new nn(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!==Fn)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===gp)&&(this.opacityFunction=vS(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 Nn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=sr(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 AS(()=>{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 yr(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 bS(t){return"unitsPerPixel"in t}function vS(t){const e=t.spec.opacity;if(e!==void 0){if(se(e))return n=>n*e;if(bS(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=oc().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const a=uo(r.domain())/1e3;return i(a)*o}}}return n=>n}const yp=t=>!!(t!=null&&t.step);class pt extends mp{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===Fn)return n;if(n!==Ar){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Fn)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 pt)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 vs(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||br(s)&&br(a)||br(s)&&a===!0||s===!0&&Pe(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(br(u))br(c)&&(r[a]=vs([u,c],a));else if(br(c)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[a]=vs([{},c],a)}else r[a]=c}}};for(const s of t)o(s);return r}function br(t){return Pe(t)&&!Array.isArray(t)}/*!
|
1323
|
+
`;const vD={left:-1,center:0,right:1},bD={top:-1,middle:0,bottom:1,alphabetic:1};class AD extends io{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 Vi)this.properties.fitToBand&&fl(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(gD,yD)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Qe(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[vD[e.align],bD[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 UE({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0)});s.addBatches(e.facetBatches);const c=s.toArrays();this.rangeMap.migrateEntries(c.rangeMap),this.updateBufferInfo(c)}prepareRender(e){const n=super.prepareRender(e);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>Qe(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Pr(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>$i(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function oo(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 y=(p?n:0)*(o?-1:1);h-=y;for(let g=0;g<m;g++)l.push({location:h+(g+1)/(m+1)*y,size:0});h+=y,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 y=ns(m.px)+(s?ns(m.grow)/s*c:0);o&&(h-=y),l.push({location:u(h),size:u(y)}),o?h-=n:h+=y+n}}return h+=o?n:-n,d(!1),l}function xD(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){ke(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 Kn=$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 ao=Object.freeze({px:0,grow:0}),wD=new Kn(ao,ao);function dl(t){return!t.px&&!t.grow}function ns(t){return t||0}function CD(t){return t&&(le(t.px)||le(t.grow))}function SD(t){if(Um(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(CD(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 ED(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 DD(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function MD(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function zm(t,e){return e>=t.location&&e<t.location+t.size}class tt{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 tt(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new tt(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new tt(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 tt(e.top,e.right,e.bottom,e.left)}static zero(){return hl}static createUniformPadding(e){return new tt(e,e,e,e)}}const hl=tt.createUniformPadding(0);Object.freeze(hl);const TD=/^([A-Za-z]+:)?\/\//;function ID(t,e){if(e&&TD.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const rs="VISIT_SKIP",Jn="VISIT_STOP",Rm=t=>t;class jm{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={},Mm(this),this.opacityFunction=Rm,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>tt.createFromConfig(this.spec.padding))}getOverhang(){return tt.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):wD)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(Um(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=He(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&&SD(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new Kn(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!==Jn)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===Rm)&&(this.opacityFunction=ND(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 Yn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=Dr(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 ID(()=>{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 zr(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":to(this,e);break;case"ancestors":for(const r of this.getAncestors())to(r,e);break;case"progeny":this.visit(r=>to(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function kD(t){return"unitsPerPixel"in t}function ND(t){const e=t.spec.opacity;if(e!==void 0){if(le(e))return n=>n*e;if(kD(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=Wo(r.domain())/1e3;return i(s)*o}}}return n=>n}const Um=t=>!!(t!=null&&t.step);class $n extends jm{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===Jn)return n;if(n!==rs){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Jn)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 $n)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return n}findDescendantByName(e){let n;return this.visit(r=>{if(r.name==e)return n=r,Jn}),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&&je(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 je(t)&&!Array.isArray(t)}/*!
|
1328
1324
|
* Adapted from vega-encode:
|
1329
1325
|
* https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
|
1330
1326
|
*
|
@@ -1332,7 +1328,7 @@ void main() {
|
|
1332
1328
|
* All rights reserved.
|
1333
1329
|
*
|
1334
1330
|
* BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
|
1335
|
-
*/function
|
1331
|
+
*/function Gm(t,e,n){return le(e)&&n!=null&&(e=Math.min(e,~~(Wo(t.domain())/n)||1)),je(e)&&(e=e.interval),e}function Hm(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(it(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],it(e)];e.length>n&&e.length>=3;)e=e.filter(function(s,c){return!(c%2)});e.length<3&&(e=a)}return e}function LD(t,e){return t.bins?Hm(t,BD(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function BD(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function OD(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?he(n):String;if(E0(t.type)){var i=FD(n);r=t.bins?i:PD(r,i)}return r}function PD(t,e){return function(n){return t(n)?e(n):""}}function FD(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 zD(he(e),he(".1f")(1)[1])}else return he(e)}function zD(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,a;if(i<0)return r;for(o=RD(r,i),a=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function RD(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}/*!
|
1336
1332
|
* Adapted from vega-encode:
|
1337
1333
|
* https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
|
1338
1334
|
*
|
@@ -1340,130 +1336,96 @@ void main() {
|
|
1340
1336
|
* All rights reserved.
|
1341
1337
|
*
|
1342
1338
|
* BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
|
1343
|
-
*/const TS="locus",IS="index";var NS=5;function kS(t){const e=t.type;return!t.bins&&(e===$n||e===ni||e===ri)}function vp(t){return tt(t)&&![lt,IS,TS].includes(t)}function xp(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var BS=fo(["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 wp(t,e,n){n=xp(n);for(const r in t)if(!BS[r]){if(r==="padding"&&vp(e.type))continue;Te(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}US(e,t,jS(e,t,FS(e,t,n)))}function LS(t,e){const n=OS(t),r=V(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return wp(t,i,e),i}function OS(t){var e=t.type,n="",r;return e===lt?lt+"-"+$n:(PS(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?lt+"-":r===3?er+"-":""),(n+e||$n).toLowerCase())}function PS(t){const e=t.type;return tt(e)&&e!==qh&&e!==Kh&&(t.scheme||t.range&&t.range.length&&t.range.every(ie))}function FS(t,e,n){if(!t.domain)return 0;n=xp(n);var r=zS(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,s=e.zero||e.zero===void 0&&kS(t),a,c;return i?(vp(o)&&e.padding&&i[0]!==Je(i)&&(i=RS(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(Cp(o,i,n)),o===gc&&t.unknown(e.domainImplicit?Fa:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&Ap(t,e.nice)||null),i.length):0}function zS(t,e,n){return e?(t.domain(Cp(t.type,e,n)),e.length):-1}function RS(t,e,n,r,i,o){var s=Math.abs(Je(n)-n[0]),a=s/(s-2*r),c=t===Yt?Hl(e,null,a):t===ri?$s(e,null,a,.5):t===ni?$s(e,null,a,i||1):t===zo?W1(e,null,a,o||1):ao(e,null,a);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function Cp(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: "+lo(e))}return e}function jS(t,e,n){let r=e.bins;if(r&&!Qe(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,s=r.stop==null?Je(i):r.stop,a=r.step;a||re("Scale bins parameter missing step property."),r=Ft(o,s+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===yc&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function US(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=GS(r,e,n);else if(e.scheme&&(o=HS(r,e,n),Te(o))){if(t.interpolator)return t.interpolator(o);re(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&jo(r))return t.interpolator(Uo(Au(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(od(e.interpolate,e.interpolateGamma)):Te(t.round)?t.round(i):Te(t.rangeRound)&&t.interpolate(i?ei:Qt),o&&t.range(Au(o,e.reverse))}function GS(t,e,n){t!==ed&&t!==mc&&re("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===mc?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*dc(n,i,r)]}function HS(t,e,n){var r=e.schemeExtent,i,o;return Qe(e.scheme)?o=Uo(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=bc(i),o||re(`Unrecognized scheme name: ${e.scheme}`)),n=t===$h?n+1:t===yc?n-1:t===pc||t===Jh?+e.schemeCount||NS:n,jo(t)?Sp(o,r,e.reverse):Te(o)?Gb(Sp(o,r),n):t===gc?o:o.slice(0,n)}function Sp(t,e,n){return Te(t)&&(e||n)?Ub(t,Au(e||[0,1],n)):t}function Au(t,e){return e?t.slice().reverse():t}const bu=ce(",d");function QS(t){return t.chrom+":"+bu(Math.floor(t.pos+1))}function VS(t,e){return t.chrom+":"+bu(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+bu(Math.ceil(e.pos))}const YS="https://genomespy.app/data/genomes/";class WS{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=YS;try{this.setChromSizes(_S(await qr({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=Yn(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 VS(...this.toChromosomalInterval(e))}toChromosomalInterval(e){const n=this.toChromosomal(e[0]+.5),r=this.toChromosomal(e[1]-.5);return r.pos+=1,[n,r]}toContinuousInterval(e){var i,o,s;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,(i=n.pos)!=null?i:0),this.toContinuous(r.chrom,(s=r.pos)!=null?s:(o=this.chromosomesByName.get(r.chrom))==null?void 0:o.size)]}parseInterval(e){const n=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(n){const r=n[1];if(n.slice(2).every(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),s=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):o;return[this.toContinuous(r,o-1),this.toContinuous(i,s)]}}}function _S(t){return fy(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function Ep(t){return Pe(t)&&"chrom"in t}function XS(t){return t.every(Ep)}class Fi extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof Fi&&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 vu extends Fi{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 Dp extends Fi{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 Mp extends Dp{constructor(){super(),this.type="nominal"}}class ZS extends Fi{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 Tp={quantitative:vu,index:vu,locus:vu,nominal:Mp,ordinal:Dp};function Ip(t,e){if(t=="quantitative"&&qS(e)){const n=new ZS(e);return n.type=t,n}else if(Tp[t]){const n=new Tp[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function qS(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function Np(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function KS(t){return--t*t*t+1}function JS(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function $S(t){return 1-JS(t)}const kp="quantitative",xu="ordinal",wu="nominal",Bp="locus",eE="index";class tE{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=Nc(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&&!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 yr(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Nc(n.view,n.channel).scale).filter(n=>n!==void 0);return vs(e,"scale",["domain"])})}getScaleProps(){return yr(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=nE(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Wt(n.type)&&(n.domain=new Mp),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),this.channel=="y"&&Wt(n.type)&&n.reverse==null&&(n.reverse=!0),n.range&&n.scheme&&delete n.scheme,!("zoom"in n)&&["index","locus"].includes(n.type)&&(n.zoom=!0),rE(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==Bp?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"){tp(this,"scaleProps");const e=this.getScaleProps();wp(e,this._scale),tt(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=LS(e);return this._scale=n,T2(n)&&n.genome(this.getGenome()),tt(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()&&bd(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!Od(this.channel))return!1;const e=this.getScale().type;return["linear","locus","index","log","pow","sqrt"].includes(e)?!!this.getScaleProps().zoom:!1}zoom(e,n,r){if(!this.isZoomable())return!1;const i=this.getScale(),o=i.domain();let s=[...o],a=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(a+=i.align()),i.type){case"linear":case"index":case"locus":s=Q1(s,r||0),s=ao(s,a,e);break;case"log":s=V1(s,r||0),s=Hl(s,a,e);break;case"pow":case"sqrt":{const c=i;s=Y1(s,r||0,c.exponent()),s=$s(s,a,e,c.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(s=_1(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(co(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=Eh([u,0,c],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*h.duration,easingFunction:Np,onUpdate:p=>{const[d,,g]=h(p);o.domain([d-g/2,d+g/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}getZoomLevel(){return this.isZoomable()?uo(this._zoomExtent)/uo(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(iE(n)&&Qe(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),xi(n)?r.nice=!this.isExplicitDomain():kn(n)?r.scheme=e==wu?"tableau10":e==xu?"blues":"viridis":Xo(n)?r.range=Fd(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 Ep(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&XS(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 nE(t,e){if(e==eE||e==Bp){if(Od(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][[wu,xu,kp].indexOf(e)]:e==kp?"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 rE(t,e){xi(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&tt(t.type)&&(t.clamp=!0)}function iE(t){return Pe(t)}function Cu(...t){for(const e of t)if(e!==void 0)return e}class oE{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=le(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 yr(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:vs(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var a;const s=Nc(o.view,o.channel);if(!_e(s))return{member:o,explicitTitle:Cu((a=s.axis)==null?void 0:a.title,s.title),implicitTitle:Cu(Nn(s)?s.field:void 0,kc(s)?s.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var s;if(wi(o.member.channel)&&!o.explicitTitle){const a=sr(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=>Cu(o.explicitTitle,o.implicitTitle)).filter(ie));return i.size?[...i].join(", "):null}}class Lp extends mp{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class zi extends pt{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,s)=>{if(Eu(o)||Su(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 Tt(t){return()=>t}class gt{static create(e,n,r,i){return new gt(Tt(e),Tt(n),Tt(r),Tt(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"?Tt(i):typeof i=="function"?i:this._passThrough(r)};return new gt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new gt(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 gt(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 gt(()=>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 gt(Tt(this.x),Tt(this.y),Tt(this.width),Tt(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 vr extends pt{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,"spacing"in this.spec||(this.spec.spacing=10),this.mainDimension=Du(e)?"width":"height",this.secondaryDimension=this.mainDimension=="width"?"height":"width";const o=Du(e)?e.hconcat:Fp(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=Op(n),i=this.mainDimension=="height"?new Ze(e[0].getEffectivePadding().top,r[1],le(e).getEffectivePadding().bottom,r[0]):new Ze(r[0],e[0].getEffectivePadding().left,r[1],le(e).getEffectivePadding().right);return this.getPadding().add(i)})}getSize(){return this._cache("size",()=>{let e;if(this.spec[this.mainDimension])e=mu(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:hS(r,{spacing:this.spec.spacing})}}const n=this.spec[this.secondaryDimension]&&mu(this.spec[this.secondaryDimension])||{grow:1};return(this.mainDimension=="height"?new nn(n,e):new nn(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=As(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=Op(a);for(let u=0;u<i.length;u++){const f=i[u],l=s[u],h=c[0]-a[u][0],p=c[1]-a[u][1],d=n[this.secondaryDimension]-h-p,g=this.mainDimension=="height"?new gt(()=>n.x+h,()=>n.y+l.location,()=>d,()=>l.size):new gt(()=>n.x+l.location,()=>n.y+h,()=>l.size,()=>d);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 Op(t){return[0,1].map(e=>t.map(n=>n[e]).reduce((n,r)=>Math.max(n,r),0))}class sE{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(aE,e(Lp)),this.addViewType(Eu,e(zi)),this.addViewType(Su,e(Le)),this.addViewType(Fp,e(vr)),this.addViewType(Du,e(vr)),this.addViewType(cE,e(vr))}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 Su(t){return"mark"in t&&(ie(t.mark)||Pe(t.mark))}function Eu(t){return"layer"in t&&Pe(t.layer)}function Pp(t){return t&&(Su(t)||Eu(t))&&"aggregateSamples"in t}function aE(t){return"import"in t}function Fp(t){return"vconcat"in t&&Qe(t.vconcat)}function Du(t){return"hconcat"in t&&Qe(t.hconcat)}function cE(t){return"concat"in t&&Qe(t.concat)}const uE={point:JC,rect:WC,rule:tS,link:oS,text:fS};class Le extends pt{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=uE[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(!Xe(o))continue;let s=sr((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!xi(s))continue;let a=this;for(;a.parent instanceof pt&&["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 tE(s):new oE(s)),xi(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(wi(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Xe(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 Ip((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=Ip(r),l.constant)u.extend(l({}));else{const h=this.getCollector();h!=null&&h.completed&&h.visitData(p=>u.extend(l(p)))}}return u};let o=i(e);const s=Bc[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 vi.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(Pp(this.spec))for(const r of this.spec.aggregateSamples){const i=(e=r.transform)!=null?e:[];i.length&&le(i).type!="collect"&&i.push({type:"collect"}),i.push({type:"mergeFacets"}),r.transform=i,r.encoding=F(T({},(n=r.encoding)!=null?n:{}),{sample:null});const o=this.context.createView(r,this,"summaryView");o.getFacetFields=s=>{},this.sampleAggregateViews.push(o)}}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function zp(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class zn extends oe{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function Rp(t){var n,r;const e=T({},t.format);if((n=e.type)!=null||(e.type=dE(t)&&lE(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 lE(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const xs=t=>typeof t!="object"?fE:hE,fE=t=>({data:t}),hE=t=>t;function dE(t){return"url"in t}function pE(t){return"dynamicCallbackSource"in t}class jp extends zn{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=xs(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const Up="chromosome_ticks_and_labels",Gp={x:"width",y:"height"};function Mu(t){return t=="x"?"y":"x"}const Hp=Object.fromEntries(Object.entries({x:["bottom","top"],y:["left","right"]}).map(([t,e])=>e.map(n=>[n,t])).flat(1));function Rn(t){return Hp[t]}class Tu extends zi{constructor(e,n,r,i){const o=n=="locus",s=T(T(T({},o?yE:Qp),mE(n,e)),e);if(super(o?AE(s):Vp(s),r,i,`axis_${e.orient}`),this.axisProps=s,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new jp(()=>this.ticks),o){const a=Rn(this.axisProps.orient),c=this.getScaleResolution(a).getGenome();this.findChildByName(Up).getDynamicDataSource=()=>new jp(()=>c.chromosomes)}}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return Hp[this.axisProps.orient]=="x"?new nn(n,e):new nn(e,n)}getPerpendicularSize(){return Iu(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=Rn(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(bd(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=gE(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[Gp[Rn(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function Iu(t){const e=Rn(t.orient);let n=t.ticks&&t.tickSize||0;return t.labels&&(n+=t.labelPadding,e=="x"?n+=t.labelFontSize:n+=30),t.title&&(n+=t.titlePadding+t.titleFontSize),n=Math.min(t.maxExtent||1/0,Math.max(t.minExtent||0,n)),n}function gE(t,e,n,r=[]){const i=a=>25+60*zp(100,700,a);let o=se(t.tickCount)?t.tickCount:Math.round(n/i(n));o=Ap(e,o,t.tickMinStep);const s=t.values?bp(e,t.values,o):xS(e,o);if(nv(s,r,a=>a,a=>a.value))return r;{const a=CS(e,o,t.format);return s.map(c=>({value:c,label:a(c)}))}}const Qp={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 mE(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 Vp(t){const e=F(T({},t),{extent:Iu(t)}),n=Rn(e.orient),r=Mu(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={[Gp[Mu(Rn(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(s()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(u()),l}const yE=F(T({},Qp),{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 AE(t){const e=F(T({},t),{extent:Iu(t)}),n=Rn(e.orient),r=Mu(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=Vp(T(T({},t),a));if(t.chromTicks||t.chromLabels){const u={name:Up,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 bE={x:["bottom","top"],y:["left","right"]};class Nu extends pt{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(bE).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 Le(vE(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 Ze.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 Ze.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()):dp)}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(),...sD(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 Tu(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 Tu(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 vE(t){return{configurableVisibility:!1,data:{values:[{}]},mark:F(T({fill:null,strokeWidth:1},t),{type:"rect",clip:!1,tooltip:null})}}function*ku(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of ku(r,[...e,n]))yield i;else yield[[...e,n],r]}class xr extends oe{constructor(e){super(),this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new Wn([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){qC(e)&&(this._data=[],this.facetBatches.set(We(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?Ql(e.field,e.order):void 0,r=s=>{n&&s.sort(n)};if((o=this.params.groupby)!=null&&o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const s=this.params.groupby.map(c=>X(c)),a=Pr(this._data,...s);this.facetBatches.clear();for(const[c,u]of ku(a))this.facetBatches.set(c,u)}for(const s of this.facetBatches.values())r(s);if(this.children.length)for(const[s,a]of this.facetBatches.entries()){if(s){const c={type:"facet",facetId:s};for(const u of this.children)u.beginBatch(c)}for(const c of a)this._propagate(c)}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 Ri{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 xE extends oe{get behavior(){return Mt}constructor(e){super(),this.params=e,this.startAccessor=X(e.start),this.endAccessor=X(e.end),this.chromAccessor=e.chrom?X(e.chrom):n=>{},this.weightAccessor=e.weight?X(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 Ri}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 p=this.ends;p.clear();const d=(m,y,v)=>{if(m==y)return;let w=!1;c&&(c[e]===v?(c[n]=y,w=!0):c[e]!=0&&this._propagate(c)),w||(c=this.createSegment(m,y,v,f))},g=()=>{let m;for(;(m=p.peekValue())!==void 0;)d(h,m,l),h=m,l-=p.pop();h=void 0,c&&(this._propagate(c),c=void 0)};this.handle=m=>{const y=i(m);let v;for(;(v=p.peekValue())!==void 0&&v<y;)d(h,v,l),h=v,l-=p.pop();if(r){let C=s(m);C!==u&&(g(),f=C,u=f)}h!==void 0&&d(h,y,l),h=y;const w=a(m);l+=w,p.push(w,o(m))},this.complete=()=>{g(),super.complete()}}}function wE(t,e,n=0,r=t.length){const i=new Ri,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 CE{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 SE extends oe{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=X(this.params.pos),this.posBisector=Or(this.posAccessor),this.scoreAccessor=X(this.params.score),this.widthAccessor=X(this.params.width),this.laneAccessor=this.params.lane?X(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 CE(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=wE(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 EE extends oe{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=Ic(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const DE="0".charCodeAt(0);function*ME(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-DE}yield r}class TE extends oe{get behavior(){return Mt}constructor(e){var s,a;super();const n=X((s=e.exons)!=null?s:"exons"),r=X((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 p of ME(h)){if(l)f=u+p;else{u=f+p;const d=Object.assign({},c);d[i]=f,d[o]=u,this._propagate(d)}l=!l}}}}class IE extends oe{get behavior(){return Mt}constructor(e){super();const n=We(e.field).map(o=>X(o)),r=We(e.separator),i=We(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]));NE(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 NE(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 kE extends oe{get behavior(){return tn}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=Ic(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class Yp extends oe{get behavior(){return tn}constructor(e,n){var d;super();const r=(d=e.channel)!=null?d:"x";if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=n.getScaleResolution(r).getGenome();if(!i)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=X(e.chrom),s=We(e.pos).map(g=>X(g)),a=We(e.as);if(s.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=We(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(`
|
1344
|
-
`));let l,h=0;const p=g=>{if(g!==l){if(h=i.cumulativeChromPositions.get(g),h===void 0)throw new Error("Unknown chromosome/contig: "+g);l=g}return h};this.handle=g=>{f(g,p(o(g)),s),this._propagate(g)}}}var Wp={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 BE extends oe{get behavior(){return tn}constructor(e){super();const n=du(Wp),r=X(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 LE=65536;class OE extends oe{get behavior(){return tn}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=se(e.spacing)?e.spacing:1,i=X(e.start),o=X(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const s=new Float64Array(LE),a=X(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 p=-1;if(h>=0&&s[h]<l)p=h;else{const d=i(f);for(p=0;p<s.length&&!(s[p]<d);p++);if(p>=s.length)throw new Error("Out of lanes!")}s[p]=o(f)+r,f[n]=p,this._propagate(f)}}else{const s=new Ri,a=new Ri;let c=-1/0,u=0;this.handle=f=>{const l=i(f);for(;s.length&&(s.peekValue()<=l||l<c);){const p=s.pop();a.push(p,p)}c=l;let h=a.pop();h===void 0&&(h=u++),f[n]=h,this._propagate(f),s.push(h,o(f)+r)}}}}class PE extends oe{get behavior(){return Mt}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=>X(i)),r=e.as?e.as:n.map(Ae);this.handle=i=>{const o={};for(let s=0;s<n.length;s++)o[r[s]]=n[s](i);this._propagate(o)}}}class FE extends oe{get behavior(){return tn}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=X(e.field);this.handle=o=>{const s=i(o);if(ie(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 zE extends oe{get behavior(){return Mt}constructor(e){super();const n=We(e.columnRegex).map(h=>new RegExp(h)),r=We(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 p=Object.keys(h),d=new Map;for(const[y,v]of n.entries())for(const w of p){const C=(m=v.exec(w))==null?void 0:m[1];if(C!==void 0){let b=d.get(C);b||(b=[],d.set(C,b)),b[y]=w}}s=[...d.entries()],a=p.filter(y=>!n.some(v=>v.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 {
|
1345
|
-
`+
|
1339
|
+
*/const jD="locus",UD="index";var GD=5;function HD(t){const e=t.type;return!t.bins&&(e===br||e===Di||e===Mi)}function Qm(t){return Ue(t)&&![gt,UD,jD].includes(t)}function Vm(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var QD=Zo(["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 Ym(t,e,n){n=Vm(n);for(const r in t)if(!QD[r]){if(r==="padding"&&Qm(e.type))continue;Be(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}KD(e,t,qD(e,t,WD(e,t,n)))}function VD(t,e){const n=YD(t),r=q(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return Ym(t,i,e),i}function YD(t){var e=t.type,n="",r;return e===gt?gt+"-"+br:(_D(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?gt+"-":r===3?Ar+"-":""),(n+e||br).toLowerCase())}function _D(t){const e=t.type;return Ue(e)&&e!==y0&&e!==v0&&(t.scheme||t.range&&t.range.length&&t.range.every(re))}function WD(t,e,n){if(!t.domain)return 0;n=Vm(n);var r=XD(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,a=e.zero||e.zero===void 0&&HD(t),s,c;return i?(Qm(o)&&e.padding&&i[0]!==it(i)&&(i=ZD(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(_m(o,i,n)),o===fu&&t.unknown(e.domainImplicit?Lc:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&Gm(t,e.nice)||null),i.length):0}function XD(t,e,n){return e?(t.domain(_m(t.type,e,n)),e.length):-1}function ZD(t,e,n,r,i,o){var a=Math.abs(it(n)-n[0]),s=a/(a-2*r),c=t===tn?ld(e,null,s):t===Mi?Zs(e,null,s,.5):t===Di?Zs(e,null,s,i||1):t===xa?ev(e,null,s,o||1):Xs(e,null,s);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function _m(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: "+Xo(e))}return e}function qD(t,e,n){let r=e.bins;if(r&&!qe(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,a=r.stop==null?it(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 KD(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=JD(r,e,n);else if(e.scheme&&(o=$D(r,e,n),Be(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)):Be(t.round)?t.round(i):Be(t.rangeRound)&&t.interpolate(i?Si:$t),o&&t.range(pl(o,e.reverse))}function JD(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 $D(t,e,n){var r=e.schemeExtent,i,o;return qe(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||GD:n,Ca(t)?Wm(o,r,e.reverse):Be(o)?Kx(Wm(o,r),n):t===fu?o:o.slice(0,n)}function Wm(t,e,n){return Be(t)&&(e||n)?qx(t,pl(e||[0,1],n)):t}function pl(t,e){return e?t.slice().reverse():t}const ml=he(",d");function eM(t){return t.chrom+":"+ml(Math.floor(t.pos+1))}function tM(t,e){return t.chrom+":"+ml(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+ml(Math.ceil(e.pos))}const nM="https://genomespy.app/data/genomes/";class rM{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=nM;try{this.setChromSizes(iM(await Ai({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=dr(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 tM(...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 iM(t){return bv(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function Xm(t){return je(t)&&"chrom"in t}function oM(t){return t.every(Xm)}class so extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof so&&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 so{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 Zm extends so{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 qm extends Zm{constructor(){super(),this.type="nominal"}}class aM extends so{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 Km={quantitative:gl,index:gl,locus:gl,nominal:qm,ordinal:Zm};function Jm(t,e){if(t=="quantitative"&&sM(e)){const n=new aM(e);return n.type=t,n}else if(Km[t]){const n=new Km[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function sM(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function $m(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function cM(t){return--t*t*t+1}function uM(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function lM(t){return 1-uM(t)}const eg="quantitative",yl="ordinal",vl="nominal",tg="locus",fM="index";class dM{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&&!_i(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 zr(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 zr(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=hM(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:nn(n.type)&&(n.domain=new qm),!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),pM(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==tg?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>_i(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>_i(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){Dm(this,"scaleProps");const e=this.getScaleProps();Ym(e,this._scale),Ue(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=VD(e);return this._scale=n,RA(n)&&n.genome(this.getGenome()),Ue(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=K2(a,r||0),a=Xs(a,s,e);break;case"log":a=J2(a,r||0),a=ld(a,s,e);break;case"pow":case"sqrt":{const c=i;a=$2(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=tv(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(_o(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:$m,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()?Wo(this._zoomExtent)/Wo(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(mM(n)&&qe(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():_n(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 Xm(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&oM(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 hM(t,e){if(e==fM||e==tg){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,eg].indexOf(e)]:e==eg?"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 pM(t,e){Yi(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Ue(t.type)&&(t.clamp=!0)}function mM(t){return je(t)}function bl(...t){for(const e of t)if(e!==void 0)return e}class gM{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=He(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 zr(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(!ct(a))return{member:o,explicitTitle:bl((s=a.axis)==null?void 0:s.title,a.title),implicitTitle:bl(Yn(a)?a.field:void 0,Mu(a)?a.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var a;if(_i(o.member.channel)&&!o.explicitTitle){const s=Dr(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 ng extends jm{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class Ot extends $n{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 rg{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;U2(hn,"ZERO",Yt.create(0,0,0,0));function ig(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class er extends ue{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function og(t){var n,r;const e=T({},t.format);if((n=e.type)!=null||(e.type=AM(t)&&yM(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 yM(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"?vM:bM,vM=t=>({data:t}),bM=t=>t;function AM(t){return"url"in t}function xM(t){return"dynamicCallbackSource"in t}class ag extends er{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 sg="chromosome_ticks_and_labels",cg={x:"width",y:"height"};function Al(t){return t=="x"?"y":"x"}const xl={x:["bottom","top"],y:["left","right"]},ug=Object.fromEntries(Object.entries(xl).map(([t,e])=>e.map(n=>[n,t])).flat(1));function tr(t){return ug[t]}class lg extends Ot{constructor(e,n,r,i){const o=n=="locus",a=T(T(T({},o?SM:fg),CM(n,e)),e);if(super(o?EM(a):dg(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 ag(()=>this.ticks),o){const s=tr(this.axisProps.orient),c=this.getScaleResolution(s).getGenome();this.findChildByName(sg).getDynamicDataSource=()=>new ag(()=>c.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return ug[this.axisProps.orient]=="x"?new Kn(n,e):new Kn(e,n)}getPerpendicularSize(){return wl(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=tr(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=wM(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[cg[tr(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function wl(t){const e=tr(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 wM(t,e,n,r=[]){const i=s=>25+60*ig(100,700,s);let o=le(t.tickCount)?t.tickCount:Math.round(n/i(n));o=Gm(e,o,t.tickMinStep);const a=t.values?Hm(e,t.values,o):LD(e,o);if(dw(a,r,s=>s,s=>s.value))return r;{const s=OD(e,o,t.format);return a.map(c=>({value:c,label:s(c)}))}}const fg={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 CM(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 dg(t){const e=U(T({},t),{extent:wl(t)}),n=tr(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},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},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={[cg[Al(tr(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 SM=U(T({},fg),{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 EM(t){const e=U(T({},t),{extent:wl(t)}),n=tr(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}}),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},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=dg(T(T({},t),s));if(t.chromTicks||t.chromLabels){const u={name:sg,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 hg={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"},DM={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},MM={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},TM={start:0,middle:.5,end:1},IM={start:"left",middle:"center",end:"right"};function kM(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":DM,overlay:MM}[e.style])!=null?u:{},r=T(T(T({},hg),n),e);let i={},o={x:0,y:0};const a=TM[(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({},hg),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:IM[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 pg(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 mg extends $n{constructor(n,r,i,o,a){var s;super(n,r,i,o);ke(this,Oo);ke(this,Dt);ke(this,Us);ke(this,Gs);ke(this,lr);ke(this,Po);ke(this,Fo);ke(this,zo);ke(this,Hs);ke(this,ei,1/0);ke(this,ti,10);ke(this,rt,[]);ke(this,ni,0);this.spec=n,Uo(this,ti,(s=n.spacing)!=null?s:10),Uo(this,ei,a),Uo(this,rt,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){var r;(r=n.parent)!=null||(n.parent=this),se(this,rt).push(xe(this,Oo,id).call(this,n)),G2(this,ni)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=se(this,rt).findIndex(o=>o.view==n);if(i>=0)se(this,rt)[i]=xe(this,Oo,id).call(this,r);else throw new Error("Not my child view!")}get children(){return se(this,rt).map(n=>n.view)}get childCount(){return se(this,rt).length}onScalesResolved(){super.onScalesResolved(),xe(this,Gs,Q2).call(this)}*[Symbol.iterator](){for(const n of se(this,rt)){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,lr,Go).call(this,"column"),r=xe(this,lr,Go).call(this,"row");return!n.length||!r.length?tt.zero():new tt(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new Kn(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=oo(xe(this,Po,od).call(this,"column"),r.width,o),s=oo(xe(this,Po,od).call(this,"row"),r.height,o),c=new rg(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,[y,g]=c.getCellCoords(f),x=a[xe(this,zo,sd).call(this,"column",y)],A=s[xe(this,zo,sd).call(this,"row",g)],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=BM(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)&&pg(n,r.coords,o=>xe(this,Hs,V2).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,rt=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(NM(o),this.context,n,"background"+se(this,ni));s.blockEncodingInheritance=!0,r.background=s}const a=kM(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,rt).filter(n=>n.view.isVisible())},Us=new WeakSet,H2=function(){var n;return new rg(se(this,Dt,Sn).length,(n=se(this,ei))!=null?n:1/0)},Gs=new WeakSet,Q2=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of se(this,rt)){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 lg(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)}}}},lr=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,Us,H2)[n=="column"?"colIndices":"rowIndices"].map(a=>({axisBefore:o(a,0),axisAfter:o(a,1),view:xD(a.map(s=>se(this,Dt,Sn)[s].view.getSize()[i]))}))},Po=new WeakSet,od=function(n){const r=xe(this,lr,Go).call(this,n),i=[];i.push(ao);for(const[o,a]of r.entries())o>0&&i.push({px:se(this,ti),grow:0}),(o==0||this.wrappingFacet)&&i.push(ao),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(ao);return i},Fo=new WeakSet,ad=function(n){var a,s;let r=0,i=0;const o=xe(this,lr,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},Hs=new WeakSet,V2=function(n,r,i){for(const[o,a]of Object.entries(LM(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 NM(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 LM(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 BM(t){let e=!0;return t.visit(n=>{n instanceof Ae&&e&&(e=n.mark.properties.clip)}),e}class jr extends mg{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 OM{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(PM,e(ng)),this.addViewType(Sl,e(Ot)),this.addViewType(Cl,e(Ae)),this.addViewType(El,e(jr)),this.addViewType(FM,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)||je(t.mark))}function Sl(t){return"layer"in t&&je(t.layer)}function gg(t){return t&&(Cl(t)||Sl(t))&&"aggregateSamples"in t}function PM(t){return"import"in t}function El(t){return"vconcat"in t&&qe(t.vconcat)}function FM(t){return"hconcat"in t&&qe(t.hconcat)}function Dl(t){return"concat"in t&&qe(t.concat)}const zM={point:sD,rect:tD,rule:lD,link:pD,text:AD};class Ae extends $n{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=zM[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(!et(o))continue;let a=Dr((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!Yi(a))continue;let s=this;for(;s.parent instanceof $n&&["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 dM(a):new gM(a)),Yi(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(_i(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!et(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 Jm((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=Jm(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 Vi.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(gg(this.spec))for(const r of this.spec.aggregateSamples){const i=(e=r.transform)!=null?e:[];i.length&&He(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 Mn([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){oD(e)&&(this._data=[],this.facetBatches.set($e(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=oi(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 co{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 RM 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 co}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=(y,g,x)=>{if(y==g)return;let A=!1;c&&(c[e]===x?(c[n]=g,A=!0):c[e]!=0&&this._propagate(c)),A||(c=this.createSegment(y,g,x,f))},m=()=>{let y;for(;(y=h.peekValue())!==void 0;)p(d,y,l),d=y,l-=h.pop();d=void 0,c&&(this._propagate(c),c=void 0)};this.handle=y=>{const g=i(y);let x;for(;(x=h.peekValue())!==void 0&&x<g;)p(d,x,l),d=x,l-=h.pop();if(r){let C=a(y);C!==u&&(m(),f=C,u=f)}d!==void 0&&p(d,g,l),d=g;const A=s(y);l+=A,h.push(A,o(y))},this.complete=()=>{m(),super.complete()}}}function jM(t,e,n=0,r=t.length){const i=new co,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 UM{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 GM 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=qo(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 UM(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=jM(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 HM 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 QM="0".charCodeAt(0);function*VM(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-QM}yield r}class YM 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 VM(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 _M extends ue{get behavior(){return Bt}constructor(e){super();const n=$e(e.field).map(o=>J(o)),r=$e(e.separator),i=$e(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]));WM(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 WM(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 XM 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 yg 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=$e(e.pos).map(m=>J(m)),s=$e(e.as);if(a.length!=s.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=$e(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,y)=>`datum[${JSON.stringify(m)}] = chromOffset + +posAccessors[${y}](datum) - ${u[y]};`).join(`
|
1340
|
+
`));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 vg={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 ZM extends ue{get behavior(){return dn}constructor(e){super();const n=ul(vg),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 qM=65536;class KM 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(qM),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 co,s=new co;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 JM 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 $M 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 e8 extends ue{get behavior(){return Bt}constructor(e){super();const n=$e(e.columnRegex).map(d=>new RegExp(d)),r=$e(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 y;const h=Object.keys(d),p=new Map;for(const[g,x]of n.entries())for(const A of h){const C=(y=x.exec(A))==null?void 0:y[1];if(C!==void 0){let b=p.get(C);b||(b=[],p.set(C,b)),b[g]=A}}a=[...p.entries()],s=h.filter(g=>!n.some(x=>x.test(g))&&!(i&&i.test(g)));const m=[...s.map(g=>JSON.stringify(g)+": datum["+JSON.stringify(g)+"]"),JSON.stringify(o)+": sampleId",...r.map(g=>JSON.stringify(g)+": null")];c=new Function("datum","sampleId",`return {
|
1341
|
+
`+m.join(`,
|
1346
1342
|
`)+`
|
1347
|
-
};`)},f=
|
1348
|
-
`)+" };");return n.properties=e,n}class
|
1349
|
-
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 rg(t){const e=[];t.visit(n=>{if(n instanceof Lp)return e.push(n),Ar});for(const n of e){const r=n.context,i=await lD(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await rg(o)}}function fD(t){const e=[],n=r=>t(r,e);return n.beforeChildren=r=>{e.push(r)},n.afterChildren=r=>{e.pop()},n}function hD(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...Ey(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const dD=t=>!/^(layer|concat)\d+$/.test(t);class Lu{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class ig extends Lu{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=Pr(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 pD extends Lu{constructor(e){super(e),this.root=void 0,this.stack=[],this.lastAddition=void 0}pushView(e,n){const r=new gD(e,n);this.root?le(this.stack).addChild(r):this.root=r,this.stack.push(r)}popView(e){this.stack.pop()}getLayout(){return this.root}}class gD{constructor(e,n){this.view=e,this.coords=n,this.children=[]}addChild(e){const n=le(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 mD extends Lu{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 yD{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 AD{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 bD=t=>new Promise(e=>setTimeout(e,t));function ws(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n!=null&&n.aborted)return o("aborted");const s=performance.now(),a=s+(t.duration||1e3),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,p=g=>Math.max(0,Math.min(1,g)),d=g=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(h(f(p(l(g))))),g<a?e(d):(t.onUpdate(h(f(1))),i()))};e(d)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):bD(t.delay).then(r):r()}class vD{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 ws(T({requestAnimationFrame:n=>this.requestTransition(n)},e))}}function og(){const t=e=>e;return t.invert=e=>e,t.copy=og,t.invertRange=()=>{},t}class xD{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new WS(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 wD="data:image/png;base64,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";const CD={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class SD{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Wn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:du(Wp),texture:this._createTextureNow(wD)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(ie(r)&&(r=CD[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=DD(r,n),o=this.fontRepository+sg(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=>du(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=sg(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=>ED(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)=>{Ti(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=Ti(n,{src:e,min:n.LINEAR},(a,c,u)=>{a?s(a):o(c)})});return this._promises.push(i),r}}function sg(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function ED(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
|
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 TD{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=ny([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 ID(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 Cs(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 ag=new Map;async function ND(t,e,n){var o;const r=t.symbol;let i=(o=ag.get(r))!=null?o:await LD(t.symbol);return i?(ag.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 kD(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 BD=Cs(kD,500);function LD(t){return BD(t)}const OD=ce(".4~r"),PD=ce(".4~e");function cg(t){return t===null?D`<span class="na">NA</span>`:ie(t)?t.substring(0,30):Number.isInteger(t)?""+t:se(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?PD(t):OD(t):co(t)?t?"True":"False":"?"+typeof t+" "+t}async function FD(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&&c.fields.includes(s))switch(u){case"color":case"fill":case"stroke":return D`<span class="color-legend" style="${`background-color: ${f(a)}`}"></span>`}return""},i=D`<table class="attributes">${Object.entries(t).filter(([s,a])=>!s.startsWith("_")).map(([s,a])=>D`<tr><th>${s}</th><td>${cg(a)} ${r(s,t)}</td></tr>`)}</table>`,o=e.unitView.spec.title?D`<div class="title"><strong>${e.unitView.spec.title}</strong></div>`:"";return D`${o}${i}`}V("index",Pa,["continuous"]),V("locus",M2,["continuous"]),V("null",og,[]),Uf("fasta",MD);class ug{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new Sx,this.viewFactory=new sE,this.namedDataProviders=[],this.animator=new vD(()=>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 TD(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=T({default:FD,refseqgene:ND},(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 UC(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 rv(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 xD(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new $p,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new SD(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 rg(this.viewRoot),ng(this.viewRoot),aD(this.viewRoot),this.viewRoot=cD(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof Le&&i.push(a)});const o=eg(this.viewRoot,n.dataFlow);oD(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),zD(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 AD(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=c=>{this.layout.dispatchInteractionEvent(new yD(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=ID(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 Le){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 Fn}}),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 ig({picking:!1},this._glHelper),this._pickingContext=new ig({picking:!0},this._glHelper);const r=new pD({});e.render(new mD(this._renderingContext,this._pickingContext,r),gt.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 Le&&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 zD(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 AT="",RD="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
|
1343
|
+
};`)},f=d=>{a||u(d);for(const[h,p]of a){const m=c(d,h);for(let y=0;y<p.length;y++)m[r[y]]=d[p[y]];this._propagate(m)}},l=d=>{u(d),f(d),this.handle=f};this.handle=l,this.beginBatch=d=>{Om(d)&&(this.handle=l),super.beginBatch(d)}}}class t8 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=Ov(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)),y=$o(d,h),g=y-m;let x=0;for(let A=0;A<d.length;A++){const C=d[A];if(s(C)){const b=h(C)/g;x-=b*Math.log2(b)}}return g/(l-(x+0))*(g/y)}}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 n8 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 r8 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=oi(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 i8="_uniqueId",bg=1e4,Ag=[null];class xg extends ue{get behavior(){return dn}constructor(e){var n;super(),this.params=e,this.as=(n=e.as)!=null?n:i8,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%bg==0&&(this._id=this._getBlock()*bg),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Ag.length;return Ag[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const wg={aggregate:r8,collect:Ur,coverage:RM,filterScoredLabels:GM,filter:HM,flattenCompressedExons:YM,flattenDelimited:_M,flattenSequence:n8,formula:XM,identifier:xg,linearizeGenomicCoordinate:yg,measureText:ZM,pileup:KM,project:JM,regexExtract:$M,regexFold:e8,sample:Pm,stack:t8};function o8(t,e){const n=wg[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function a8(t){return"values"in t}class s8 extends er{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,og(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 c8(t){return"url"in t}class u8 extends er{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=>Ai({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,og(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 l8(t){return"sequence"in t}class f8 extends er{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 d8(t){return"dynamicSource"in t}class h8 extends er{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 Cg(t,e){if(a8(t))return new s8(t);if(c8(t))return new u8(t,e);if(l8(t))return new f8(t);if(d8(t))return new h8;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function p8(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(`,
|
1344
|
+
`)+" };");return n.properties=e,n}class Sg extends ue{get behavior(){return Bt}constructor(){super();const e=n=>{const r=p8(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{Om(n)&&(this.handle=e),super.beginBatch(n)}}}class Eg{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 m8(t){return"name"in t}class g8 extends er{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 Dg(t,e){const n=[];let r;const i=e!=null?e:new Eg,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=o8(d,l)}catch(p){throw console.warn(p),new Error(`Cannot initialize "${d.type}" transform: ${p}`)}h.behavior&dn&&s(new Sg),s(h)}}const u=f=>{if(n.push(r),f.spec.data){const l=xM(f.spec.data)?f.getDynamicDataSource():m8(f.spec.data)?new g8(f.spec.data,f.context.getNamedData):Cg(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=y8(f);if(l){o.push(l.rewrite);for(const h of l.transforms)s(h)}f.mark.isPickingParticipant()&&s(new xg({type:"identifier"}));const d=new Ur({type:"collect",groupby:f.getFacetFields(),sort:v8(f,l==null?void 0:l.rewrittenEncoding)});a(d),i.addCollector(d,f)}gg(f.spec)};return u.postOrder=f=>{r=n.pop()},t.visit(u),o.forEach(f=>f()),i}function y8(t){var o,a,s,c;const e=[],n={},r=[];for(const[u,f]of Object.entries(t.getEncoding())){const l=u;Yi(l)&&ep(f)&&r.push({channel:l,chromPosDef:f})}const i=oi(r,u=>Dr(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:y,chromPosDef:g}of d){const x=b=>b.replace(/[^A-Za-z0-9_]/g,""),A=["_linearized_",x(g.chrom),"_",x(g.pos)].join(""),C=U(T({},(s=(a=(o=t.spec.encoding)==null?void 0:o[y])!=null?a:t.getEncoding()[y])!=null?s:{}),{field:A});delete C.chrom,delete C.pos,!C.type&&g.type&&(C.type=g.type),n[y]=C,h.push(g.pos),m.push((c=g.offset)!=null?c:0),p.push(A)}e.push(new yg({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),Dm(t.mark,"encoding")}}:void 0}function v8(t,e){var r;const n=T(T({},t.getEncoding()),e).x;if(et(n)&&(r=t.getScaleResolution("x"))!=null&&r.isZoomable()){if(Yn(n))return{field:n.field};if(!Qi(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function b8(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 er?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 Mg(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!Mg(n,t))return!1;return!0}function Tl(t,e=!1){if(t instanceof Ur&&(e=!0),t instanceof Sg)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 A8(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 x8(t){if(Tl(t),!Mg(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function w8(t){for(const e of t.dataSources)x8(e);A8(t)}function Tg(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 C8(t){for(const e of Vi){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}function S8(t){const e=[];return t.visit(n=>{if(n instanceof Ae){const r=n.getEncoding();for(const[i,o]of Object.entries(r))Yn(o)&&"type"in o&&e.push({view:n,channel:i,field:o.field,type:o.type});return rs}}),e}async function E8(t,e,n){var a;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=Ai({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}
|
1345
|
+
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 Ig(t){const e=[];t.visit(n=>{if(n instanceof ng)return e.push(n),rs});for(const n of e){const r=n.context,i=await E8(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await Ig(o)}}function kg(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...Pv(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const D8=t=>!/^(layer|concat)\d+$/.test(t);class Ng{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Lg extends Ng{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=oi(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(...a.prepareRender(this.globalOptions).map(u=>r(u)));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 M8 extends Ng{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 T8{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 I8{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 k8=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"):k8(t.delay).then(r):r()}class N8{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 Bg(){const t=e=>e;return t.invert=e=>e,t.copy=Bg,t.invertRange=()=>{},t}class L8{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new rM(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 B8="data:image/png;base64,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";const O8={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class P8{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Mn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:ul(vg),texture:this._createTextureNow(B8)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(re(r)&&(r=O8[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=z8(r,n),o=this.fontRepository+Og(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=Og(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=>F8(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)=>{Ji(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=Ji(n,{src:e,min:n.LINEAR},(s,c,u)=>{s?a(s):o(c)})});return this._promises.push(i),r}}function Og(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function F8(t){const e=t.split(`
|
1346
|
+
`),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 z8(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 R8(t,e){const n=[];let r;for(const i of t.split(`
|
1347
|
+
`))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 j8{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=lv([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 U8(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 Pg=new Map;async function G8(t,e,n){var o;const r=t.symbol;let i=(o=Pg.get(r))!=null?o:await V8(t.symbol);return i?(Pg.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 H8(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 Q8=ss(H8,500);function V8(t){return Q8(t)}const Y8=he(".4~r"),_8=he(".4~e");function Fg(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)?_8(t):Y8(t):_o(t)?t?"True":"False":"?"+typeof t+" "+t}async function W8(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>${Fg(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 X8 extends mg{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}q("index",Nc,["continuous"]),q("locus",zA,["continuous"]),q("null",Bg,[]),sh("fasta",R8);class zg{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new O4,this.viewFactory=new OM,this.namedDataProviders=[],this.animator=new N8(()=>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 j8(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=T({default:W8,refseqgene:G8},(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 XE(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 hw(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 L8(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Eg,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new P8(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 Ig(this.viewRoot),(this.viewRoot instanceof Ae||this.viewRoot instanceof Ot)&&(this.viewRoot=new X8(n,this.viewRoot)),Tg(this.viewRoot),C8(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(s=>{s instanceof Ae&&i.push(s)});const o=Dg(this.viewRoot,n.dataFlow);w8(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=>to(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),Z8(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 I8(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),s=c=>{this.viewRoot.propagateInteractionEvent(new T8(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=U8(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 Jn}}),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 Lg({picking:!1},this._glHelper),this._pickingContext=new Lg({picking:!0},this._glHelper),e.render(new M8(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 Z8(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 Vk="",q8="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
|
1352
1348
|
* @license
|
1353
1349
|
* Copyright 2019 Google LLC
|
1354
1350
|
* SPDX-License-Identifier: BSD-3-Clause
|
1355
|
-
*/const
|
1351
|
+
*/const Il=window.ShadowRoot&&(window.ShadyCSS===void 0||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Rg=Symbol(),jg=new Map;class K8{constructor(e,n){if(this._$cssResult$=!0,n!==Rg)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e}get styleSheet(){let e=jg.get(this.cssText);return Il&&e===void 0&&(jg.set(this.cssText,e=new CSSStyleSheet),e.replaceSync(this.cssText)),e}toString(){return this.cssText}}const J8=t=>new K8(typeof t=="string"?t:t+"",Rg),$8=(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)})},Ug=Il?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let n="";for(const r of e.cssRules)n+=r.cssText;return J8(n)})(t):t;/**
|
1356
1352
|
* @license
|
1357
1353
|
* Copyright 2017 Google LLC
|
1358
1354
|
* SPDX-License-Identifier: BSD-3-Clause
|
1359
|
-
*/var
|
1355
|
+
*/var kl;const Gg=window.trustedTypes,e5=Gg?Gg.emptyScript:"",Hg=window.reactiveElementPolyfillSupport,Nl={toAttribute(t,e){switch(e){case Boolean:t=t?e5: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}},Qg=(t,e)=>e!==t&&(e==e||t==t),Ll={attribute:!0,type:String,converter:Nl,reflect:!1,hasChanged:Qg};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(Ug(i))}else e!==void 0&&n.push(Ug(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 $8(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||Qg)(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"},Hg==null||Hg({ReactiveElement:Gr}),((kl=globalThis.reactiveElementVersions)!==null&&kl!==void 0?kl:globalThis.reactiveElementVersions=[]).push("1.3.2");/**
|
1360
1356
|
* @license
|
1361
1357
|
* Copyright 2017 Google LLC
|
1362
1358
|
* SPDX-License-Identifier: BSD-3-Clause
|
1363
|
-
*/var
|
1359
|
+
*/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=Ge(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 Vg=globalThis.litElementPolyfillSupport;Vg==null||Vg({LitElement:Ft}),((Ol=globalThis.litElementVersions)!==null&&Ol!==void 0?Ol:globalThis.litElementVersions=[]).push("3.2.0");/**
|
1364
1360
|
* @license
|
1365
1361
|
* Copyright 2017 Google LLC
|
1366
1362
|
* SPDX-License-Identifier: BSD-3-Clause
|
1367
|
-
*/const
|
1363
|
+
*/const zt={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Hr=t=>(...e)=>({_$litDirective$:t,values:e});class uo{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)}}/**
|
1368
1364
|
* @license
|
1369
1365
|
* Copyright 2018 Google LLC
|
1370
1366
|
* SPDX-License-Identifier: BSD-3-Clause
|
1371
|
-
*/const
|
1372
|
-
* Font Awesome Free
|
1367
|
+
*/const t5=Hr(class extends uo{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}});/*!
|
1368
|
+
* Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com
|
1373
1369
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
1374
|
-
*/var VD={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"]},yg={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"]},YD={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"]},WD={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"]},Ag={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"]},_D={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"]},XD={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"]},ZD={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"]},qD={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"]},Ui={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"]},bg={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"]},KD={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"]},Gi={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"]},JD={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"]},$D={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"]},eM={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"]},Uu={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"]},tM={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"]},nM={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"]},rM={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"]},iM={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"]},oM={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"]},Gu={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"]},sM={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"]};/*!
|
1375
|
-
* Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
|
1370
|
+
* Copyright 2022 Fonticons, Inc.
|
1371
|
+
*/var n5={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"]},r5=n5,i5={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"]},o5=i5,a5={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"]},s5=a5,c5={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"]},u5=c5,Yg={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"]},l5={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"]},f5={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"]},_g={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"]},d5={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"]},h5=d5,p5={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"]},Wg=p5,m5={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"]},g5=m5,y5={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"]},v5=y5,b5={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"]},A5=b5,lo={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"]},x5={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"]},w5=x5,C5={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"]},S5=C5,E5={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"]},fo={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"]},D5={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"]},M5={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"]},T5=M5,I5={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"]},k5={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=k5,N5={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"]},L5=N5;/*!
|
1372
|
+
* Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com
|
1376
1373
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
1377
|
-
*/function aM(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 cM(t,e,n){return e&&vg(t.prototype,e),n&&vg(t,n),t}function uM(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Q(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){uM(t,i,n[i])})}return t}function xg(t,e){return lM(t)||fM(t,e)||hM()}function lM(t){if(Array.isArray(t))return t}function fM(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 hM(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}var wg=function(){},Hu={},Cg={},dM=null,Sg={mark:wg,measure:wg};try{typeof window!="undefined"&&(Hu=window),typeof document!="undefined"&&(Cg=document),typeof MutationObserver!="undefined"&&(dM=MutationObserver),typeof performance!="undefined"&&(Sg=performance)}catch{}var pM=Hu.navigator||{},Eg=pM.userAgent,Dg=Eg===void 0?"":Eg,Ss=Hu,Me=Cg,Es=Sg;Ss.document;var Qu=!!Me.documentElement&&!!Me.head&&typeof Me.addEventListener=="function"&&typeof Me.createElement=="function";~Dg.indexOf("MSIE")||~Dg.indexOf("Trident/");var kt="___FONT_AWESOME___",Mg="fa",Tg="svg-inline--fa",gM="data-fa-i2svg";(function(){try{return!0}catch{return!1}})();var Vu={GROUP:"group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},Ig=Ss.FontAwesomeConfig||{};function mM(t){var e=Me.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}function yM(t){return t===""?!0:t==="false"?!1:t==="true"?!0:t}if(Me&&typeof Me.querySelector=="function"){var AM=[["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"]];AM.forEach(function(t){var e=xg(t,2),n=e[0],r=e[1],i=yM(mM(n));i!=null&&(Ig[r]=i)})}var bM={familyPrefix:Mg,replacementClass:Tg,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},Yu=Q({},bM,Ig);Yu.autoReplaceSvg||(Yu.observeMutations=!1);var ze=Q({},Yu);Ss.FontAwesomeConfig=ze;var Bt=Ss||{};Bt[kt]||(Bt[kt]={}),Bt[kt].styles||(Bt[kt].styles={}),Bt[kt].hooks||(Bt[kt].hooks={}),Bt[kt].shims||(Bt[kt].shims=[]);var mt=Bt[kt],vM=[],xM=function t(){Me.removeEventListener("DOMContentLoaded",t),Wu=1,vM.map(function(e){return e()})},Wu=!1;Qu&&(Wu=(Me.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(Me.readyState),Wu||Me.addEventListener("DOMContentLoaded",xM)),typeof global!="undefined"&&typeof global.process!="undefined"&&global.process.emit,typeof setImmediate=="undefined"||setImmediate;var Sr={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function wM(t){if(!(!t||!Qu)){var e=Me.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=Me.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 Me.head.insertBefore(e,r),t}}var CM="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function Ds(){for(var t=12,e="";t-- >0;)e+=CM[Math.random()*62|0];return e}function Ng(t){return"".concat(t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function SM(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,'="').concat(Ng(t[n]),'" ')},"").trim()}function kg(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,": ").concat(t[n],";")},"")}function Bg(t){return t.size!==Sr.size||t.x!==Sr.x||t.y!==Sr.y||t.rotate!==Sr.rotate||t.flipX||t.flipY}function Lg(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 _u={x:0,y:0,width:"100%",height:"100%"};function Og(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 EM(t){return t.tag==="g"?t.children:[t]}function DM(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=Lg({transform:s,containerWidth:u,iconWidth:a}),h={tag:"rect",attributes:Q({},_u,{fill:"white"})},p=c.children?{children:c.children.map(Og)}:{},d={tag:"g",attributes:Q({},l.inner),children:[Og(Q({tag:c.tag,attributes:Q({},c.attributes,l.path)},p))]},g={tag:"g",attributes:Q({},l.outer),children:[d]},m="mask-".concat(o||Ds()),y="clip-".concat(o||Ds()),v={tag:"mask",attributes:Q({},_u,{id:m,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[h,g]},w={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:EM(f)},v]};return e.push(w,{tag:"rect",attributes:Q({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(m,")")},_u)}),{children:e,attributes:n}}function MM(t){var e=t.children,n=t.attributes,r=t.main,i=t.transform,o=t.styles,s=kg(o);if(s.length>0&&(n.style=s),Bg(i)){var a=Lg({transform:i,containerWidth:r.width,iconWidth:r.width});e.push({tag:"g",attributes:Q({},a.outer),children:[{tag:"g",attributes:Q({},a.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:Q({},r.icon.attributes,a.path)}]}]})}else e.push(r.icon);return{children:e,attributes:n}}function TM(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,s=t.transform;if(Bg(s)&&n.found&&!r.found){var a=n.width,c=n.height,u={x:a/c/2,y:.5};i.style=kg(Q({},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 IM(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,o=t.symbol,s=o===!0?"".concat(e,"-").concat(ze.familyPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:Q({},i,{id:s}),children:r}]}]}function NM(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,p=h===void 0?!1:h,d=r.found?r:n,g=d.width,m=d.height,y=i==="fak",v=y?"":"fa-w-".concat(Math.ceil(g/m*16)),w=[ze.replacementClass,o?"".concat(ze.familyPrefix,"-").concat(o):"",v].filter(function(L){return l.classes.indexOf(L)===-1}).filter(function(L){return L!==""||!!L}).concat(l.classes).join(" "),C={children:[],attributes:Q({},l.attributes,{"data-prefix":i,"data-icon":o,class:w,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")}:{};p&&(C.attributes[gM]=""),c&&C.children.push({tag:"title",attributes:{id:C.attributes["aria-labelledby"]||"title-".concat(f||Ds())},children:[c]});var A=Q({},C,{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:s,symbol:a,styles:Q({},b,l.styles)}),x=r.found&&n.found?DM(A):MM(A),E=x.children,N=x.attributes;return A.children=E,A.attributes=N,a?IM(A):TM(A)}var Pg=function(){};ze.measurePerformance&&Es&&Es.mark&&Es.measure;var kM=function(e,n){return function(r,i,o,s){return e.call(n,r,i,o,s)}},Xu=function(e,n,r,i){var o=Object.keys(e),s=o.length,a=i!==void 0?kM(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 Fg(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 mt.hooks.addPack=="function"&&!i?mt.hooks.addPack(t,o):mt.styles[t]=Q({},mt.styles[t]||{},o),t==="fas"&&Fg("fa",e)}var zg=mt.styles,BM=mt.shims,Rg=function(){var e=function(i){return Xu(zg,function(o,s,a){return o[a]=Xu(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 zg;Xu(BM,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},{})};Rg(),mt.styles;function jg(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}function Ug(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"?Ng(t):"<".concat(e," ").concat(SM(r),">").concat(o.map(Ug).join(""),"</").concat(e,">")}function Zu(t){this.name="MissingIcon",this.message=t||"Icon unavailable",this.stack=new Error().stack}Zu.prototype=Object.create(Error.prototype),Zu.prototype.constructor=Zu;var Ms={fill:"currentColor"},Gg={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};Q({},Ms,{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 qu=Q({},Gg,{attributeName:"opacity"});Q({},Ms,{cx:"256",cy:"364",r:"28"}),Q({},Gg,{attributeName:"r",values:"28;14;28;28;14;28;"}),Q({},qu,{values:"1;0;1;1;0;1;"}),Q({},Ms,{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"}),Q({},qu,{values:"1;0;0;0;0;1;"}),Q({},Ms,{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"}),Q({},qu,{values:"0;0;1;1;0;0;"}),mt.styles;function Hg(t){var e=t[0],n=t[1],r=t.slice(4),i=xg(r,1),o=i[0],s=null;return Array.isArray(o)?s={tag:"g",attributes:{class:"".concat(ze.familyPrefix,"-").concat(Vu.GROUP)},children:[{tag:"path",attributes:{class:"".concat(ze.familyPrefix,"-").concat(Vu.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(ze.familyPrefix,"-").concat(Vu.PRIMARY),fill:"currentColor",d:o[1]}}]}:s={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:s}}mt.styles;var LM=`svg:not(:root).svg-inline--fa {
|
1374
|
+
* Copyright 2022 Fonticons, Inc.
|
1375
|
+
*/function Xg(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?Xg(Object(n),!0).forEach(function(r){P5(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Xg(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 B5(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Zg(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 O5(t,e,n){return e&&Zg(t.prototype,e),n&&Zg(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}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 zl(t,e){return z5(t)||j5(t,e)||qg(t,e)||G5()}function us(t){return F5(t)||R5(t)||qg(t)||U5()}function F5(t){if(Array.isArray(t))return Rl(t)}function z5(t){if(Array.isArray(t))return t}function R5(t){if(typeof Symbol!="undefined"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function j5(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 qg(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 U5(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
1376
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function G5(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
1377
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var Kg=function(){},jl={},Jg={},$g=null,e1={mark:Kg,measure:Kg};try{typeof window!="undefined"&&(jl=window),typeof document!="undefined"&&(Jg=document),typeof MutationObserver!="undefined"&&($g=MutationObserver),typeof performance!="undefined"&&(e1=performance)}catch{}var H5=jl.navigator||{},t1=H5.userAgent,n1=t1===void 0?"":t1,pn=jl,te=Jg,r1=$g,ls=e1;pn.document;var Rt=!!te.documentElement&&!!te.head&&typeof te.addEventListener=="function"&&typeof te.createElement=="function",i1=~n1.indexOf("MSIE")||~n1.indexOf("Trident/"),jt="___FONT_AWESOME___",Ul=16,o1="fa",a1="svg-inline--fa",nr="data-fa-i2svg",Gl="data-fa-pseudo-element",Q5="data-fa-pseudo-element-pending",Hl="data-prefix",Ql="data-icon",s1="fontawesome-i2svg",V5="async",Y5=["HTML","HEAD","STYLE","SCRIPT"],c1=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"},u1={fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},_5={"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},W5=/fa[srltdbk\-\ ]/,l1="fa-layers-text",X5=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Kit)?.*/i,Z5={"900":"fas","400":"far",normal:"far","300":"fal","100":"fat"},f1=[1,2,3,4,5,6,7,8,9,10],q5=f1.concat([11,12,13,14,15,16,17,18,19,20]),K5=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],rr={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},J5=[].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",rr.GROUP,rr.SWAP_OPACITY,rr.PRIMARY,rr.SECONDARY]).concat(f1.map(function(t){return"".concat(t,"x")})).concat(q5.map(function(t){return"w-".concat(t)})),d1=pn.FontAwesomeConfig||{};function $5(t){var e=te.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}function eT(t){return t===""?!0:t==="false"?!1:t==="true"?!0:t}if(te&&typeof te.querySelector=="function"){var tT=[["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"]];tT.forEach(function(t){var e=zl(t,2),n=e[0],r=e[1],i=eT($5(n));i!=null&&(d1[r]=i)})}var nT={familyPrefix:o1,styleDefault:"solid",replacementClass:a1,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},ho=N(N({},nT),d1);ho.autoReplaceSvg||(ho.observeMutations=!1);var F={};Object.keys(ho).forEach(function(t){Object.defineProperty(F,t,{enumerable:!0,set:function(n){ho[t]=n,ds.forEach(function(r){return r(F)})},get:function(){return ho[t]}})}),pn.FontAwesomeConfig=F;var ds=[];function rT(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 iT(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 oT="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function po(){for(var t=12,e="";t-- >0;)e+=oT[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 h1(t){return"".concat(t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function aT(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,'="').concat(h1(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 sT(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 cT(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&&i1?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 uT=`:root, :host {
|
1378
|
+
--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";
|
1379
|
+
--fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";
|
1380
|
+
--fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";
|
1381
|
+
--fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin";
|
1382
|
+
--fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone";
|
1383
|
+
--fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";
|
1384
|
+
}
|
1385
|
+
|
1386
|
+
svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
|
1378
1387
|
overflow: visible;
|
1388
|
+
box-sizing: content-box;
|
1379
1389
|
}
|
1380
1390
|
|
1381
1391
|
.svg-inline--fa {
|
1382
|
-
display: inline-block;
|
1383
|
-
font-size: inherit;
|
1392
|
+
display: var(--fa-display, inline-block);
|
1384
1393
|
height: 1em;
|
1385
1394
|
overflow: visible;
|
1386
1395
|
vertical-align: -0.125em;
|
1387
1396
|
}
|
1388
|
-
.svg-inline--fa.fa-
|
1389
|
-
vertical-align:
|
1390
|
-
}
|
1391
|
-
.svg-inline--fa.fa-w-1 {
|
1392
|
-
width: 0.0625em;
|
1393
|
-
}
|
1394
|
-
.svg-inline--fa.fa-w-2 {
|
1395
|
-
width: 0.125em;
|
1396
|
-
}
|
1397
|
-
.svg-inline--fa.fa-w-3 {
|
1398
|
-
width: 0.1875em;
|
1399
|
-
}
|
1400
|
-
.svg-inline--fa.fa-w-4 {
|
1401
|
-
width: 0.25em;
|
1402
|
-
}
|
1403
|
-
.svg-inline--fa.fa-w-5 {
|
1404
|
-
width: 0.3125em;
|
1405
|
-
}
|
1406
|
-
.svg-inline--fa.fa-w-6 {
|
1407
|
-
width: 0.375em;
|
1408
|
-
}
|
1409
|
-
.svg-inline--fa.fa-w-7 {
|
1410
|
-
width: 0.4375em;
|
1411
|
-
}
|
1412
|
-
.svg-inline--fa.fa-w-8 {
|
1413
|
-
width: 0.5em;
|
1414
|
-
}
|
1415
|
-
.svg-inline--fa.fa-w-9 {
|
1416
|
-
width: 0.5625em;
|
1417
|
-
}
|
1418
|
-
.svg-inline--fa.fa-w-10 {
|
1419
|
-
width: 0.625em;
|
1420
|
-
}
|
1421
|
-
.svg-inline--fa.fa-w-11 {
|
1422
|
-
width: 0.6875em;
|
1423
|
-
}
|
1424
|
-
.svg-inline--fa.fa-w-12 {
|
1425
|
-
width: 0.75em;
|
1397
|
+
.svg-inline--fa.fa-2xs {
|
1398
|
+
vertical-align: 0.1em;
|
1426
1399
|
}
|
1427
|
-
.svg-inline--fa.fa-
|
1428
|
-
|
1400
|
+
.svg-inline--fa.fa-xs {
|
1401
|
+
vertical-align: 0em;
|
1429
1402
|
}
|
1430
|
-
.svg-inline--fa.fa-
|
1431
|
-
|
1403
|
+
.svg-inline--fa.fa-sm {
|
1404
|
+
vertical-align: -0.0714285705em;
|
1432
1405
|
}
|
1433
|
-
.svg-inline--fa.fa-
|
1434
|
-
|
1435
|
-
}
|
1436
|
-
.svg-inline--fa.fa-w-16 {
|
1437
|
-
width: 1em;
|
1438
|
-
}
|
1439
|
-
.svg-inline--fa.fa-w-17 {
|
1440
|
-
width: 1.0625em;
|
1441
|
-
}
|
1442
|
-
.svg-inline--fa.fa-w-18 {
|
1443
|
-
width: 1.125em;
|
1406
|
+
.svg-inline--fa.fa-lg {
|
1407
|
+
vertical-align: -0.2em;
|
1444
1408
|
}
|
1445
|
-
.svg-inline--fa.fa-
|
1446
|
-
|
1409
|
+
.svg-inline--fa.fa-xl {
|
1410
|
+
vertical-align: -0.25em;
|
1447
1411
|
}
|
1448
|
-
.svg-inline--fa.fa-
|
1449
|
-
|
1412
|
+
.svg-inline--fa.fa-2xl {
|
1413
|
+
vertical-align: -0.3125em;
|
1450
1414
|
}
|
1451
1415
|
.svg-inline--fa.fa-pull-left {
|
1452
|
-
margin-right: 0.3em;
|
1416
|
+
margin-right: var(--fa-pull-margin, 0.3em);
|
1453
1417
|
width: auto;
|
1454
1418
|
}
|
1455
1419
|
.svg-inline--fa.fa-pull-right {
|
1456
|
-
margin-left: 0.3em;
|
1420
|
+
margin-left: var(--fa-pull-margin, 0.3em);
|
1457
1421
|
width: auto;
|
1458
1422
|
}
|
1459
|
-
.svg-inline--fa.fa-border {
|
1460
|
-
height: 1.5em;
|
1461
|
-
}
|
1462
1423
|
.svg-inline--fa.fa-li {
|
1463
|
-
width: 2em;
|
1424
|
+
width: var(--fa-li-width, 2em);
|
1425
|
+
top: 0.25em;
|
1464
1426
|
}
|
1465
1427
|
.svg-inline--fa.fa-fw {
|
1466
|
-
width: 1.25em;
|
1428
|
+
width: var(--fa-fw-width, 1.25em);
|
1467
1429
|
}
|
1468
1430
|
|
1469
1431
|
.fa-layers svg.svg-inline--fa {
|
@@ -1475,6 +1437,12 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
|
|
1475
1437
|
top: 0;
|
1476
1438
|
}
|
1477
1439
|
|
1440
|
+
.fa-layers-counter, .fa-layers-text {
|
1441
|
+
display: inline-block;
|
1442
|
+
position: absolute;
|
1443
|
+
text-align: center;
|
1444
|
+
}
|
1445
|
+
|
1478
1446
|
.fa-layers {
|
1479
1447
|
display: inline-block;
|
1480
1448
|
height: 1em;
|
@@ -1488,12 +1456,6 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
|
|
1488
1456
|
transform-origin: center center;
|
1489
1457
|
}
|
1490
1458
|
|
1491
|
-
.fa-layers-counter, .fa-layers-text {
|
1492
|
-
display: inline-block;
|
1493
|
-
position: absolute;
|
1494
|
-
text-align: center;
|
1495
|
-
}
|
1496
|
-
|
1497
1459
|
.fa-layers-text {
|
1498
1460
|
left: 50%;
|
1499
1461
|
top: 50%;
|
@@ -1504,80 +1466,64 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
|
|
1504
1466
|
}
|
1505
1467
|
|
1506
1468
|
.fa-layers-counter {
|
1507
|
-
background-color: #ff253a;
|
1508
|
-
border-radius: 1em;
|
1509
|
-
|
1510
|
-
|
1511
|
-
|
1512
|
-
|
1513
|
-
|
1514
|
-
max-width: 5em;
|
1515
|
-
min-width: 1.5em;
|
1469
|
+
background-color: var(--fa-counter-background-color, #ff253a);
|
1470
|
+
border-radius: var(--fa-counter-border-radius, 1em);
|
1471
|
+
box-sizing: border-box;
|
1472
|
+
color: var(--fa-inverse, #fff);
|
1473
|
+
line-height: var(--fa-counter-line-height, 1);
|
1474
|
+
max-width: var(--fa-counter-max-width, 5em);
|
1475
|
+
min-width: var(--fa-counter-min-width, 1.5em);
|
1516
1476
|
overflow: hidden;
|
1517
|
-
padding: 0.25em;
|
1518
|
-
right: 0;
|
1477
|
+
padding: var(--fa-counter-padding, 0.25em 0.5em);
|
1478
|
+
right: var(--fa-right, 0);
|
1519
1479
|
text-overflow: ellipsis;
|
1520
|
-
top: 0;
|
1521
|
-
-webkit-transform: scale(0.25);
|
1522
|
-
transform: scale(0.25);
|
1480
|
+
top: var(--fa-top, 0);
|
1481
|
+
-webkit-transform: scale(var(--fa-counter-scale, 0.25));
|
1482
|
+
transform: scale(var(--fa-counter-scale, 0.25));
|
1523
1483
|
-webkit-transform-origin: top right;
|
1524
1484
|
transform-origin: top right;
|
1525
1485
|
}
|
1526
1486
|
|
1527
1487
|
.fa-layers-bottom-right {
|
1528
|
-
bottom: 0;
|
1529
|
-
right: 0;
|
1488
|
+
bottom: var(--fa-bottom, 0);
|
1489
|
+
right: var(--fa-right, 0);
|
1530
1490
|
top: auto;
|
1531
|
-
-webkit-transform: scale(0.25);
|
1532
|
-
transform: scale(0.25);
|
1491
|
+
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
1492
|
+
transform: scale(var(--fa-layers-scale, 0.25));
|
1533
1493
|
-webkit-transform-origin: bottom right;
|
1534
1494
|
transform-origin: bottom right;
|
1535
1495
|
}
|
1536
1496
|
|
1537
1497
|
.fa-layers-bottom-left {
|
1538
|
-
bottom: 0;
|
1539
|
-
left: 0;
|
1498
|
+
bottom: var(--fa-bottom, 0);
|
1499
|
+
left: var(--fa-left, 0);
|
1540
1500
|
right: auto;
|
1541
1501
|
top: auto;
|
1542
|
-
-webkit-transform: scale(0.25);
|
1543
|
-
transform: scale(0.25);
|
1502
|
+
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
1503
|
+
transform: scale(var(--fa-layers-scale, 0.25));
|
1544
1504
|
-webkit-transform-origin: bottom left;
|
1545
1505
|
transform-origin: bottom left;
|
1546
1506
|
}
|
1547
1507
|
|
1548
1508
|
.fa-layers-top-right {
|
1549
|
-
|
1550
|
-
|
1551
|
-
-webkit-transform: scale(0.25);
|
1552
|
-
transform: scale(0.25);
|
1509
|
+
top: var(--fa-top, 0);
|
1510
|
+
right: var(--fa-right, 0);
|
1511
|
+
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
1512
|
+
transform: scale(var(--fa-layers-scale, 0.25));
|
1553
1513
|
-webkit-transform-origin: top right;
|
1554
1514
|
transform-origin: top right;
|
1555
1515
|
}
|
1556
1516
|
|
1557
1517
|
.fa-layers-top-left {
|
1558
|
-
left: 0;
|
1518
|
+
left: var(--fa-left, 0);
|
1559
1519
|
right: auto;
|
1560
|
-
top: 0;
|
1561
|
-
-webkit-transform: scale(0.25);
|
1562
|
-
transform: scale(0.25);
|
1520
|
+
top: var(--fa-top, 0);
|
1521
|
+
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
1522
|
+
transform: scale(var(--fa-layers-scale, 0.25));
|
1563
1523
|
-webkit-transform-origin: top left;
|
1564
1524
|
transform-origin: top left;
|
1565
1525
|
}
|
1566
1526
|
|
1567
|
-
.fa-lg {
|
1568
|
-
font-size: 1.3333333333em;
|
1569
|
-
line-height: 0.75em;
|
1570
|
-
vertical-align: -0.0667em;
|
1571
|
-
}
|
1572
|
-
|
1573
|
-
.fa-xs {
|
1574
|
-
font-size: 0.75em;
|
1575
|
-
}
|
1576
|
-
|
1577
|
-
.fa-sm {
|
1578
|
-
font-size: 0.875em;
|
1579
|
-
}
|
1580
|
-
|
1581
1527
|
.fa-1x {
|
1582
1528
|
font-size: 1em;
|
1583
1529
|
}
|
@@ -1618,6 +1564,42 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
|
|
1618
1564
|
font-size: 10em;
|
1619
1565
|
}
|
1620
1566
|
|
1567
|
+
.fa-2xs {
|
1568
|
+
font-size: 0.625em;
|
1569
|
+
line-height: 0.1em;
|
1570
|
+
vertical-align: 0.225em;
|
1571
|
+
}
|
1572
|
+
|
1573
|
+
.fa-xs {
|
1574
|
+
font-size: 0.75em;
|
1575
|
+
line-height: 0.0833333337em;
|
1576
|
+
vertical-align: 0.125em;
|
1577
|
+
}
|
1578
|
+
|
1579
|
+
.fa-sm {
|
1580
|
+
font-size: 0.875em;
|
1581
|
+
line-height: 0.0714285718em;
|
1582
|
+
vertical-align: 0.0535714295em;
|
1583
|
+
}
|
1584
|
+
|
1585
|
+
.fa-lg {
|
1586
|
+
font-size: 1.25em;
|
1587
|
+
line-height: 0.05em;
|
1588
|
+
vertical-align: -0.075em;
|
1589
|
+
}
|
1590
|
+
|
1591
|
+
.fa-xl {
|
1592
|
+
font-size: 1.5em;
|
1593
|
+
line-height: 0.0416666682em;
|
1594
|
+
vertical-align: -0.125em;
|
1595
|
+
}
|
1596
|
+
|
1597
|
+
.fa-2xl {
|
1598
|
+
font-size: 2em;
|
1599
|
+
line-height: 0.03125em;
|
1600
|
+
vertical-align: -0.1875em;
|
1601
|
+
}
|
1602
|
+
|
1621
1603
|
.fa-fw {
|
1622
1604
|
text-align: center;
|
1623
1605
|
width: 1.25em;
|
@@ -1625,7 +1607,7 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
|
|
1625
1607
|
|
1626
1608
|
.fa-ul {
|
1627
1609
|
list-style-type: none;
|
1628
|
-
margin-left: 2.5em;
|
1610
|
+
margin-left: var(--fa-li-margin, 2.5em);
|
1629
1611
|
padding-left: 0;
|
1630
1612
|
}
|
1631
1613
|
.fa-ul > li {
|
@@ -1633,52 +1615,376 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
|
|
1633
1615
|
}
|
1634
1616
|
|
1635
1617
|
.fa-li {
|
1636
|
-
left: -2em;
|
1618
|
+
left: calc(var(--fa-li-width, 2em) * -1);
|
1637
1619
|
position: absolute;
|
1638
1620
|
text-align: center;
|
1639
|
-
width: 2em;
|
1621
|
+
width: var(--fa-li-width, 2em);
|
1640
1622
|
line-height: inherit;
|
1641
1623
|
}
|
1642
1624
|
|
1643
1625
|
.fa-border {
|
1644
|
-
border:
|
1645
|
-
border-radius: 0.1em;
|
1646
|
-
|
1626
|
+
border-color: var(--fa-border-color, #eee);
|
1627
|
+
border-radius: var(--fa-border-radius, 0.1em);
|
1628
|
+
border-style: var(--fa-border-style, solid);
|
1629
|
+
border-width: var(--fa-border-width, 0.08em);
|
1630
|
+
padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);
|
1647
1631
|
}
|
1648
1632
|
|
1649
1633
|
.fa-pull-left {
|
1650
1634
|
float: left;
|
1635
|
+
margin-right: var(--fa-pull-margin, 0.3em);
|
1651
1636
|
}
|
1652
1637
|
|
1653
1638
|
.fa-pull-right {
|
1654
1639
|
float: right;
|
1640
|
+
margin-left: var(--fa-pull-margin, 0.3em);
|
1641
|
+
}
|
1642
|
+
|
1643
|
+
.fa-beat {
|
1644
|
+
-webkit-animation-name: fa-beat;
|
1645
|
+
animation-name: fa-beat;
|
1646
|
+
-webkit-animation-delay: var(--fa-animation-delay, 0);
|
1647
|
+
animation-delay: var(--fa-animation-delay, 0);
|
1648
|
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
1649
|
+
animation-direction: var(--fa-animation-direction, normal);
|
1650
|
+
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
1651
|
+
animation-duration: var(--fa-animation-duration, 1s);
|
1652
|
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1653
|
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1654
|
+
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
1655
|
+
animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
1656
|
+
}
|
1657
|
+
|
1658
|
+
.fa-bounce {
|
1659
|
+
-webkit-animation-name: fa-bounce;
|
1660
|
+
animation-name: fa-bounce;
|
1661
|
+
-webkit-animation-delay: var(--fa-animation-delay, 0);
|
1662
|
+
animation-delay: var(--fa-animation-delay, 0);
|
1663
|
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
1664
|
+
animation-direction: var(--fa-animation-direction, normal);
|
1665
|
+
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
1666
|
+
animation-duration: var(--fa-animation-duration, 1s);
|
1667
|
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1668
|
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1669
|
+
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
|
1670
|
+
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
|
1671
|
+
}
|
1672
|
+
|
1673
|
+
.fa-fade {
|
1674
|
+
-webkit-animation-name: fa-fade;
|
1675
|
+
animation-name: fa-fade;
|
1676
|
+
-webkit-animation-delay: var(--fa-animation-delay, 0);
|
1677
|
+
animation-delay: var(--fa-animation-delay, 0);
|
1678
|
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
1679
|
+
animation-direction: var(--fa-animation-direction, normal);
|
1680
|
+
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
1681
|
+
animation-duration: var(--fa-animation-duration, 1s);
|
1682
|
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1683
|
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1684
|
+
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
1685
|
+
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
1686
|
+
}
|
1687
|
+
|
1688
|
+
.fa-beat-fade {
|
1689
|
+
-webkit-animation-name: fa-beat-fade;
|
1690
|
+
animation-name: fa-beat-fade;
|
1691
|
+
-webkit-animation-delay: var(--fa-animation-delay, 0);
|
1692
|
+
animation-delay: var(--fa-animation-delay, 0);
|
1693
|
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
1694
|
+
animation-direction: var(--fa-animation-direction, normal);
|
1695
|
+
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
1696
|
+
animation-duration: var(--fa-animation-duration, 1s);
|
1697
|
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1698
|
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1699
|
+
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
1700
|
+
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
1701
|
+
}
|
1702
|
+
|
1703
|
+
.fa-flip {
|
1704
|
+
-webkit-animation-name: fa-flip;
|
1705
|
+
animation-name: fa-flip;
|
1706
|
+
-webkit-animation-delay: var(--fa-animation-delay, 0);
|
1707
|
+
animation-delay: var(--fa-animation-delay, 0);
|
1708
|
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
1709
|
+
animation-direction: var(--fa-animation-direction, normal);
|
1710
|
+
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
1711
|
+
animation-duration: var(--fa-animation-duration, 1s);
|
1712
|
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1713
|
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1714
|
+
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
1715
|
+
animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
1716
|
+
}
|
1717
|
+
|
1718
|
+
.fa-shake {
|
1719
|
+
-webkit-animation-name: fa-shake;
|
1720
|
+
animation-name: fa-shake;
|
1721
|
+
-webkit-animation-delay: var(--fa-animation-delay, 0);
|
1722
|
+
animation-delay: var(--fa-animation-delay, 0);
|
1723
|
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
1724
|
+
animation-direction: var(--fa-animation-direction, normal);
|
1725
|
+
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
1726
|
+
animation-duration: var(--fa-animation-duration, 1s);
|
1727
|
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1728
|
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1729
|
+
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
1730
|
+
animation-timing-function: var(--fa-animation-timing, linear);
|
1655
1731
|
}
|
1656
1732
|
|
1657
|
-
.fa
|
1658
|
-
|
1659
|
-
|
1660
|
-
|
1661
|
-
|
1662
|
-
|
1733
|
+
.fa-spin {
|
1734
|
+
-webkit-animation-name: fa-spin;
|
1735
|
+
animation-name: fa-spin;
|
1736
|
+
-webkit-animation-delay: var(--fa-animation-delay, 0);
|
1737
|
+
animation-delay: var(--fa-animation-delay, 0);
|
1738
|
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
1739
|
+
animation-direction: var(--fa-animation-direction, normal);
|
1740
|
+
-webkit-animation-duration: var(--fa-animation-duration, 2s);
|
1741
|
+
animation-duration: var(--fa-animation-duration, 2s);
|
1742
|
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1743
|
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1744
|
+
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
1745
|
+
animation-timing-function: var(--fa-animation-timing, linear);
|
1746
|
+
}
|
1747
|
+
|
1748
|
+
.fa-spin-reverse {
|
1749
|
+
--fa-animation-direction: reverse;
|
1750
|
+
}
|
1751
|
+
|
1752
|
+
.fa-pulse,
|
1753
|
+
.fa-spin-pulse {
|
1754
|
+
-webkit-animation-name: fa-spin;
|
1755
|
+
animation-name: fa-spin;
|
1756
|
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
1757
|
+
animation-direction: var(--fa-animation-direction, normal);
|
1758
|
+
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
1759
|
+
animation-duration: var(--fa-animation-duration, 1s);
|
1760
|
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1761
|
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
1762
|
+
-webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
|
1763
|
+
animation-timing-function: var(--fa-animation-timing, steps(8));
|
1764
|
+
}
|
1765
|
+
|
1766
|
+
@media (prefers-reduced-motion: reduce) {
|
1767
|
+
.fa-beat,
|
1768
|
+
.fa-bounce,
|
1769
|
+
.fa-fade,
|
1770
|
+
.fa-beat-fade,
|
1771
|
+
.fa-flip,
|
1772
|
+
.fa-pulse,
|
1773
|
+
.fa-shake,
|
1774
|
+
.fa-spin,
|
1775
|
+
.fa-spin-pulse {
|
1776
|
+
-webkit-animation-delay: -1ms;
|
1777
|
+
animation-delay: -1ms;
|
1778
|
+
-webkit-animation-duration: 1ms;
|
1779
|
+
animation-duration: 1ms;
|
1780
|
+
-webkit-animation-iteration-count: 1;
|
1781
|
+
animation-iteration-count: 1;
|
1782
|
+
transition-delay: 0s;
|
1783
|
+
transition-duration: 0s;
|
1784
|
+
}
|
1785
|
+
}
|
1786
|
+
@-webkit-keyframes fa-beat {
|
1787
|
+
0%, 90% {
|
1788
|
+
-webkit-transform: scale(1);
|
1789
|
+
transform: scale(1);
|
1790
|
+
}
|
1791
|
+
45% {
|
1792
|
+
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
1793
|
+
transform: scale(var(--fa-beat-scale, 1.25));
|
1794
|
+
}
|
1663
1795
|
}
|
1664
|
-
|
1665
|
-
|
1666
|
-
|
1667
|
-
|
1668
|
-
|
1669
|
-
|
1796
|
+
@keyframes fa-beat {
|
1797
|
+
0%, 90% {
|
1798
|
+
-webkit-transform: scale(1);
|
1799
|
+
transform: scale(1);
|
1800
|
+
}
|
1801
|
+
45% {
|
1802
|
+
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
1803
|
+
transform: scale(var(--fa-beat-scale, 1.25));
|
1804
|
+
}
|
1670
1805
|
}
|
1671
|
-
|
1672
|
-
|
1673
|
-
|
1674
|
-
|
1806
|
+
@-webkit-keyframes fa-bounce {
|
1807
|
+
0% {
|
1808
|
+
-webkit-transform: scale(1, 1) translateY(0);
|
1809
|
+
transform: scale(1, 1) translateY(0);
|
1810
|
+
}
|
1811
|
+
10% {
|
1812
|
+
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
1813
|
+
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
1814
|
+
}
|
1815
|
+
30% {
|
1816
|
+
-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));
|
1817
|
+
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));
|
1818
|
+
}
|
1819
|
+
50% {
|
1820
|
+
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
1821
|
+
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
1822
|
+
}
|
1823
|
+
57% {
|
1824
|
+
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
1825
|
+
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
1826
|
+
}
|
1827
|
+
64% {
|
1828
|
+
-webkit-transform: scale(1, 1) translateY(0);
|
1829
|
+
transform: scale(1, 1) translateY(0);
|
1830
|
+
}
|
1831
|
+
100% {
|
1832
|
+
-webkit-transform: scale(1, 1) translateY(0);
|
1833
|
+
transform: scale(1, 1) translateY(0);
|
1834
|
+
}
|
1675
1835
|
}
|
1676
|
-
|
1677
|
-
|
1678
|
-
|
1679
|
-
|
1836
|
+
@keyframes fa-bounce {
|
1837
|
+
0% {
|
1838
|
+
-webkit-transform: scale(1, 1) translateY(0);
|
1839
|
+
transform: scale(1, 1) translateY(0);
|
1840
|
+
}
|
1841
|
+
10% {
|
1842
|
+
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
1843
|
+
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
1844
|
+
}
|
1845
|
+
30% {
|
1846
|
+
-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));
|
1847
|
+
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));
|
1848
|
+
}
|
1849
|
+
50% {
|
1850
|
+
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
1851
|
+
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
1852
|
+
}
|
1853
|
+
57% {
|
1854
|
+
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
1855
|
+
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
1856
|
+
}
|
1857
|
+
64% {
|
1858
|
+
-webkit-transform: scale(1, 1) translateY(0);
|
1859
|
+
transform: scale(1, 1) translateY(0);
|
1860
|
+
}
|
1861
|
+
100% {
|
1862
|
+
-webkit-transform: scale(1, 1) translateY(0);
|
1863
|
+
transform: scale(1, 1) translateY(0);
|
1864
|
+
}
|
1865
|
+
}
|
1866
|
+
@-webkit-keyframes fa-fade {
|
1867
|
+
50% {
|
1868
|
+
opacity: var(--fa-fade-opacity, 0.4);
|
1869
|
+
}
|
1870
|
+
}
|
1871
|
+
@keyframes fa-fade {
|
1872
|
+
50% {
|
1873
|
+
opacity: var(--fa-fade-opacity, 0.4);
|
1874
|
+
}
|
1875
|
+
}
|
1876
|
+
@-webkit-keyframes fa-beat-fade {
|
1877
|
+
0%, 100% {
|
1878
|
+
opacity: var(--fa-beat-fade-opacity, 0.4);
|
1879
|
+
-webkit-transform: scale(1);
|
1880
|
+
transform: scale(1);
|
1881
|
+
}
|
1882
|
+
50% {
|
1883
|
+
opacity: 1;
|
1884
|
+
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
1885
|
+
transform: scale(var(--fa-beat-fade-scale, 1.125));
|
1886
|
+
}
|
1887
|
+
}
|
1888
|
+
@keyframes fa-beat-fade {
|
1889
|
+
0%, 100% {
|
1890
|
+
opacity: var(--fa-beat-fade-opacity, 0.4);
|
1891
|
+
-webkit-transform: scale(1);
|
1892
|
+
transform: scale(1);
|
1893
|
+
}
|
1894
|
+
50% {
|
1895
|
+
opacity: 1;
|
1896
|
+
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
1897
|
+
transform: scale(var(--fa-beat-fade-scale, 1.125));
|
1898
|
+
}
|
1899
|
+
}
|
1900
|
+
@-webkit-keyframes fa-flip {
|
1901
|
+
50% {
|
1902
|
+
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
1903
|
+
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
1904
|
+
}
|
1905
|
+
}
|
1906
|
+
@keyframes fa-flip {
|
1907
|
+
50% {
|
1908
|
+
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
1909
|
+
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
1910
|
+
}
|
1911
|
+
}
|
1912
|
+
@-webkit-keyframes fa-shake {
|
1913
|
+
0% {
|
1914
|
+
-webkit-transform: rotate(-15deg);
|
1915
|
+
transform: rotate(-15deg);
|
1916
|
+
}
|
1917
|
+
4% {
|
1918
|
+
-webkit-transform: rotate(15deg);
|
1919
|
+
transform: rotate(15deg);
|
1920
|
+
}
|
1921
|
+
8%, 24% {
|
1922
|
+
-webkit-transform: rotate(-18deg);
|
1923
|
+
transform: rotate(-18deg);
|
1924
|
+
}
|
1925
|
+
12%, 28% {
|
1926
|
+
-webkit-transform: rotate(18deg);
|
1927
|
+
transform: rotate(18deg);
|
1928
|
+
}
|
1929
|
+
16% {
|
1930
|
+
-webkit-transform: rotate(-22deg);
|
1931
|
+
transform: rotate(-22deg);
|
1932
|
+
}
|
1933
|
+
20% {
|
1934
|
+
-webkit-transform: rotate(22deg);
|
1935
|
+
transform: rotate(22deg);
|
1936
|
+
}
|
1937
|
+
32% {
|
1938
|
+
-webkit-transform: rotate(-12deg);
|
1939
|
+
transform: rotate(-12deg);
|
1940
|
+
}
|
1941
|
+
36% {
|
1942
|
+
-webkit-transform: rotate(12deg);
|
1943
|
+
transform: rotate(12deg);
|
1944
|
+
}
|
1945
|
+
40%, 100% {
|
1946
|
+
-webkit-transform: rotate(0deg);
|
1947
|
+
transform: rotate(0deg);
|
1948
|
+
}
|
1949
|
+
}
|
1950
|
+
@keyframes fa-shake {
|
1951
|
+
0% {
|
1952
|
+
-webkit-transform: rotate(-15deg);
|
1953
|
+
transform: rotate(-15deg);
|
1954
|
+
}
|
1955
|
+
4% {
|
1956
|
+
-webkit-transform: rotate(15deg);
|
1957
|
+
transform: rotate(15deg);
|
1958
|
+
}
|
1959
|
+
8%, 24% {
|
1960
|
+
-webkit-transform: rotate(-18deg);
|
1961
|
+
transform: rotate(-18deg);
|
1962
|
+
}
|
1963
|
+
12%, 28% {
|
1964
|
+
-webkit-transform: rotate(18deg);
|
1965
|
+
transform: rotate(18deg);
|
1966
|
+
}
|
1967
|
+
16% {
|
1968
|
+
-webkit-transform: rotate(-22deg);
|
1969
|
+
transform: rotate(-22deg);
|
1970
|
+
}
|
1971
|
+
20% {
|
1972
|
+
-webkit-transform: rotate(22deg);
|
1973
|
+
transform: rotate(22deg);
|
1974
|
+
}
|
1975
|
+
32% {
|
1976
|
+
-webkit-transform: rotate(-12deg);
|
1977
|
+
transform: rotate(-12deg);
|
1978
|
+
}
|
1979
|
+
36% {
|
1980
|
+
-webkit-transform: rotate(12deg);
|
1981
|
+
transform: rotate(12deg);
|
1982
|
+
}
|
1983
|
+
40%, 100% {
|
1984
|
+
-webkit-transform: rotate(0deg);
|
1985
|
+
transform: rotate(0deg);
|
1986
|
+
}
|
1680
1987
|
}
|
1681
|
-
|
1682
1988
|
@-webkit-keyframes fa-spin {
|
1683
1989
|
0% {
|
1684
1990
|
-webkit-transform: rotate(0deg);
|
@@ -1689,7 +1995,6 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
|
|
1689
1995
|
transform: rotate(360deg);
|
1690
1996
|
}
|
1691
1997
|
}
|
1692
|
-
|
1693
1998
|
@keyframes fa-spin {
|
1694
1999
|
0% {
|
1695
2000
|
-webkit-transform: rotate(0deg);
|
@@ -1701,53 +2006,44 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
|
|
1701
2006
|
}
|
1702
2007
|
}
|
1703
2008
|
.fa-rotate-90 {
|
1704
|
-
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
|
1705
2009
|
-webkit-transform: rotate(90deg);
|
1706
2010
|
transform: rotate(90deg);
|
1707
2011
|
}
|
1708
2012
|
|
1709
2013
|
.fa-rotate-180 {
|
1710
|
-
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
|
1711
2014
|
-webkit-transform: rotate(180deg);
|
1712
2015
|
transform: rotate(180deg);
|
1713
2016
|
}
|
1714
2017
|
|
1715
2018
|
.fa-rotate-270 {
|
1716
|
-
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
|
1717
2019
|
-webkit-transform: rotate(270deg);
|
1718
2020
|
transform: rotate(270deg);
|
1719
2021
|
}
|
1720
2022
|
|
1721
2023
|
.fa-flip-horizontal {
|
1722
|
-
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
|
1723
2024
|
-webkit-transform: scale(-1, 1);
|
1724
2025
|
transform: scale(-1, 1);
|
1725
2026
|
}
|
1726
2027
|
|
1727
2028
|
.fa-flip-vertical {
|
1728
|
-
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
|
1729
2029
|
-webkit-transform: scale(1, -1);
|
1730
2030
|
transform: scale(1, -1);
|
1731
2031
|
}
|
1732
2032
|
|
1733
|
-
.fa-flip-both,
|
1734
|
-
|
2033
|
+
.fa-flip-both,
|
2034
|
+
.fa-flip-horizontal.fa-flip-vertical {
|
1735
2035
|
-webkit-transform: scale(-1, -1);
|
1736
2036
|
transform: scale(-1, -1);
|
1737
2037
|
}
|
1738
2038
|
|
1739
|
-
|
1740
|
-
:
|
1741
|
-
:
|
1742
|
-
:root .fa-flip-horizontal,
|
1743
|
-
:root .fa-flip-vertical,
|
1744
|
-
:root .fa-flip-both {
|
1745
|
-
-webkit-filter: none;
|
1746
|
-
filter: none;
|
2039
|
+
.fa-rotate-by {
|
2040
|
+
-webkit-transform: rotate(var(--fa-rotate-angle, none));
|
2041
|
+
transform: rotate(var(--fa-rotate-angle, none));
|
1747
2042
|
}
|
1748
2043
|
|
1749
2044
|
.fa-stack {
|
1750
2045
|
display: inline-block;
|
2046
|
+
vertical-align: middle;
|
1751
2047
|
height: 2em;
|
1752
2048
|
position: relative;
|
1753
2049
|
width: 2.5em;
|
@@ -1761,6 +2057,7 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
|
|
1761
2057
|
position: absolute;
|
1762
2058
|
right: 0;
|
1763
2059
|
top: 0;
|
2060
|
+
z-index: var(--fa-stack-z-index, auto);
|
1764
2061
|
}
|
1765
2062
|
|
1766
2063
|
.svg-inline--fa.fa-stack-1x {
|
@@ -1773,48 +2070,50 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
|
|
1773
2070
|
}
|
1774
2071
|
|
1775
2072
|
.fa-inverse {
|
1776
|
-
color: #fff;
|
2073
|
+
color: var(--fa-inverse, #fff);
|
1777
2074
|
}
|
1778
2075
|
|
1779
|
-
.sr-only
|
1780
|
-
|
1781
|
-
|
2076
|
+
.sr-only,
|
2077
|
+
.fa-sr-only {
|
2078
|
+
position: absolute;
|
2079
|
+
width: 1px;
|
1782
2080
|
height: 1px;
|
2081
|
+
padding: 0;
|
1783
2082
|
margin: -1px;
|
1784
2083
|
overflow: hidden;
|
1785
|
-
|
1786
|
-
|
1787
|
-
width:
|
2084
|
+
clip: rect(0, 0, 0, 0);
|
2085
|
+
white-space: nowrap;
|
2086
|
+
border-width: 0;
|
1788
2087
|
}
|
1789
2088
|
|
1790
|
-
.sr-only-focusable:
|
1791
|
-
|
1792
|
-
|
1793
|
-
|
1794
|
-
|
1795
|
-
|
1796
|
-
|
2089
|
+
.sr-only-focusable:not(:focus),
|
2090
|
+
.fa-sr-only-focusable:not(:focus) {
|
2091
|
+
position: absolute;
|
2092
|
+
width: 1px;
|
2093
|
+
height: 1px;
|
2094
|
+
padding: 0;
|
2095
|
+
margin: -1px;
|
2096
|
+
overflow: hidden;
|
2097
|
+
clip: rect(0, 0, 0, 0);
|
2098
|
+
white-space: nowrap;
|
2099
|
+
border-width: 0;
|
1797
2100
|
}
|
1798
2101
|
|
1799
2102
|
.svg-inline--fa .fa-primary {
|
1800
2103
|
fill: var(--fa-primary-color, currentColor);
|
1801
|
-
opacity: 1;
|
1802
2104
|
opacity: var(--fa-primary-opacity, 1);
|
1803
2105
|
}
|
1804
2106
|
|
1805
2107
|
.svg-inline--fa .fa-secondary {
|
1806
2108
|
fill: var(--fa-secondary-color, currentColor);
|
1807
|
-
opacity: 0.4;
|
1808
2109
|
opacity: var(--fa-secondary-opacity, 0.4);
|
1809
2110
|
}
|
1810
2111
|
|
1811
2112
|
.svg-inline--fa.fa-swap-opacity .fa-primary {
|
1812
|
-
opacity: 0.4;
|
1813
2113
|
opacity: var(--fa-secondary-opacity, 0.4);
|
1814
2114
|
}
|
1815
2115
|
|
1816
2116
|
.svg-inline--fa.fa-swap-opacity .fa-secondary {
|
1817
|
-
opacity: 1;
|
1818
2117
|
opacity: var(--fa-primary-opacity, 1);
|
1819
2118
|
}
|
1820
2119
|
|
@@ -1823,40 +2122,43 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
|
|
1823
2122
|
fill: black;
|
1824
2123
|
}
|
1825
2124
|
|
1826
|
-
.fad.fa-inverse
|
1827
|
-
|
1828
|
-
|
2125
|
+
.fad.fa-inverse,
|
2126
|
+
.fa-duotone.fa-inverse {
|
2127
|
+
color: var(--fa-inverse, #fff);
|
2128
|
+
}`;function p1(){var t=o1,e=a1,n=F.familyPrefix,r=F.replacementClass,i=uT;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 m1=!1;function Wl(){F.autoAddCss&&!m1&&(iT(p1()),m1=!0)}var lT={mixout:function(){return{dom:{css:p1,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 ft=Ut[jt],g1=[],fT=function t(){te.removeEventListener("DOMContentLoaded",t),ps=1,g1.map(function(e){return e()})},ps=!1;Rt&&(ps=(te.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(te.readyState),ps||te.addEventListener("DOMContentLoaded",fT));function dT(t){!Rt||(ps?setTimeout(t,0):g1.push(t))}function mo(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"?h1(t):"<".concat(e," ").concat(aT(r),">").concat(o.map(mo).join(""),"</").concat(e,">")}function y1(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}var hT=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?hT(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 pT(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=pT(t);return e.length===1?e[0].toString(16):null}function mT(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 v1(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=v1(e);typeof ft.hooks.addPack=="function"&&!i?ft.hooks.addPack(t,v1(e)):ft.styles[t]=N(N({},ft.styles[t]||{}),o),t==="fas"&&ql("fa",e)}var go=ft.styles,gT=ft.shims,yT=Object.values(u1),Kl=null,b1={},A1={},x1={},w1={},C1={},vT=Object.keys(Vl);function bT(t){return~J5.indexOf(t)}function AT(t,e){var n=e.split("-"),r=n[0],i=n.slice(1).join("-");return r===t&&i!==""&&!bT(i)?i:null}var S1=function(){var e=function(o){return Xl(go,function(a,s,c){return a[c]=Xl(s,o,{}),a},{})};b1=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}),A1=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}),C1=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 go||F.autoFetchSvg,r=Xl(gT,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:{}});x1=r.names,w1=r.unicodes,Kl=ms(F.styleDefault)};rT(function(t){Kl=ms(t.styleDefault)}),S1();function Jl(t,e){return(b1[t]||{})[e]}function xT(t,e){return(A1[t]||{})[e]}function Vr(t,e){return(C1[t]||{})[e]}function E1(t){return x1[t]||{prefix:null,iconName:null}}function wT(t){var e=w1[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 ft.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=AT(F.familyPrefix,s);if(go[s]?(s=yT.includes(s)?_5[s]:s,i=s,a.prefix=s):vT.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"?E1(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"&&!go.far&&go.fas&&!F.autoFetchSvg&&(a.prefix="fas")}return a},$l());return(o.prefix==="fa"||i==="fa")&&(o.prefix=gn()||"fas"),o}var CT=function(){function t(){B5(this,t),this.definitions={}}return O5(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=u1[s];c&&ql(c,a[s]),S1()})}},{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}(),D1=[],Yr={},_r={},ST=Object.keys(_r);function ET(t,e){var n=e.mixoutsTo;return D1=t,Yr={},Object.keys(_r).forEach(function(r){ST.indexOf(r)===-1&&delete _r[r]}),D1.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 ir(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,y1(M1.definitions,n,e)||y1(ft.styles,n,e)}var M1=new CT,DT=function(){F.autoReplaceSvg=!1,F.observeMutations=!1,ir("noAuto")},MT={i2svg:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Rt?(ir("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,dT(function(){IT({autoReplaceSvgRoot:n}),ir("watch",e)})}},TT={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(W5))){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}}}},Ve={noAuto:DT,config:F,dom:MT,parse:TT,library:M1,findIconDefinition:tf,toHtml:mo},IT=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot,r=n===void 0?te:n;(Object.keys(ft.styles).length>0||F.autoFetchSvg)&&Rt&&F.autoReplaceSvg&&Ve.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 mo(r)})}}),Object.defineProperty(t,"node",{get:function(){if(!!Rt){var r=te.createElement("div");return r.innerHTML=t.html,r.children}}}),t}function kT(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 NT(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,y=p.height,g=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(y)})},C=g&&!~l.classes.indexOf("fa-fw")?{width:"".concat(m/y*16*.0625,"em")}:{};h&&(A.attributes[nr]=""),c&&(A.children.push({tag:"title",attributes:{id:A.attributes["aria-labelledby"]||"title-".concat(f||po())},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?NT(b):kT(b)}function T1(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[nr]="");var f=N({},a.styles);_l(i)&&(f.transform=cT({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 LT(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=ft.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(rr.GROUP)},children:[{tag:"path",attributes:{class:"".concat(F.familyPrefix,"-").concat(rr.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(F.familyPrefix,"-").concat(rr.PRIMARY),fill:"currentColor",d:o[1]}}]}:a={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:a}}var BT={found:!1,width:512,height:512};function OT(t,e){!c1&&!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=E1(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))}OT(t,e),r(N(N({},BT),{},{icon:F.showMissingIcons&&t?Gt("missingIconAbstract")||{}:{}}))})}var I1=function(){},sf=F.measurePerformance&&ls&&ls.mark&&ls.measure?ls:{mark:I1,measure:I1},yo='FA "6.1.1"',PT=function(e){return sf.mark("".concat(yo," ").concat(e," begins")),function(){return k1(e)}},k1=function(e){sf.mark("".concat(yo," ").concat(e," ends")),sf.measure("".concat(yo," ").concat(e),"".concat(yo," ").concat(e," begins"),"".concat(yo," ").concat(e," ends"))},cf={begin:PT,end:k1},vs=function(){};function N1(t){var e=t.getAttribute?t.getAttribute(nr):null;return typeof e=="string"}function FT(t){var e=t.getAttribute?t.getAttribute(Hl):null,n=t.getAttribute?t.getAttribute(Ql):null;return e&&n}function zT(t){return t&&t.classList&&t.classList.contains&&t.classList.contains(F.replacementClass)}function RT(){if(F.autoReplaceSvg===!0)return bs.replace;var t=bs[F.autoReplaceSvg];return t||bs.replace}function jT(t){return te.createElementNS("http://www.w3.org/2000/svg",t)}function UT(t){return te.createElement(t)}function L1(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.ceFn,r=n===void 0?t.tag==="svg"?jT:UT: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(L1(a,{ceFn:r}))}),i}function GT(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(L1(i),n)}),n.getAttribute(nr)===null&&F.keepOriginalSource){var r=te.createComment(GT(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 mo(s)}).join(`
|
2129
|
+
`);n.setAttribute(nr,""),n.innerHTML=a}};function B1(t){t()}function O1(t,e){var n=typeof e=="function"?e:vs;if(t.length===0)n();else{var r=B1;F.mutateApproach===V5&&(r=pn.requestAnimationFrame||B1),r(function(){var i=RT(),o=cf.begin("mutate");t.map(i),o(),n()})}}var uf=!1;function P1(){uf=!0}function lf(){uf=!1}var As=null;function F1(t){if(!!r1&&!!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 r1(function(u){if(!uf){var f=gn();Qr(u).forEach(function(l){if(l.type==="childList"&&l.addedNodes.length>0&&!N1(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"&&N1(l.target)&&~K5.indexOf(l.attributeName))if(l.attributeName==="class"&&FT(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 zT(l.target)&&i(l.target)})}}),Rt&&As.observe(c,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function HT(){!As||As.disconnect()}function QT(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 VT(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=xT(i.prefix,t.innerText)||Jl(i.prefix,Zl(t.innerText))),i}function YT(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||po()):(e["aria-hidden"]="true",e.focusable="false")),e}function _T(){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 z1(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0},n=VT(t),r=n.iconName,i=n.prefix,o=n.rest,a=YT(t),s=ef("parseNodeAttributes",{},t),c=e.styleParser?QT(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 WT=ft.styles;function R1(t){var e=F.autoReplaceSvg==="nest"?z1(t,{styleParser:!1}):z1(t);return~e.extra.classes.indexOf(l1)?Gt("generateLayersText",t,e):Gt("generateSvgReplacementMutation",t,e)}function j1(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(s1,"-").concat(l))},i=function(l){return n.remove("".concat(s1,"-").concat(l))},o=F.autoFetchSvg?Object.keys(Vl):Object.keys(WT),a=[".".concat(l1,":not([").concat(nr,"])")].concat(o.map(function(f){return".".concat(f,":not([").concat(nr,"])")})).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=R1(l);d&&f.push(d)}catch(h){c1||h.name==="MissingIcon"&&console.error(h)}return f},[]);return new Promise(function(f,l){Promise.all(u).then(function(d){O1(d,function(){r("active"),r("complete"),i("pending"),typeof e=="function"&&e(),c(),f()})}).catch(function(d){c(),l(d)})})}function XT(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;R1(t).then(function(n){n&&O1([n],e)})}function ZT(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 qT=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,y=m===void 0?[]:m,g=n.attributes,x=g===void 0?{}:g,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 ir("beforeDOMElementCreation",{iconDefinition:e,params:n}),F.autoA11y&&(d?x["aria-labelledby"]="".concat(F.replacementClass,"-title-").concat(p||po()):(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:y}})})}},KT={mixout:function(){return{icon:ZT(qT)}},hooks:function(){return{mutationObserverCallbacks:function(n){return n.treeCallback=j1,n.nodeCallback=XT,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 j1(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 y=zl(m,2),g=y[0],x=y[1];h([n,nf({icons:{main:g,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}}}},JT={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(){ir("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}]})}}}},$T={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 ir("beforeDOMElementCreation",{content:n,params:r}),LT({content:n.toString(),title:o,extra:{attributes:u,styles:l,classes:["".concat(F.familyPrefix,"-layers-counter")].concat(us(s))}})})}}}},e6={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 ir("beforeDOMElementCreation",{content:n,params:r}),T1({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(i1){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,T1({content:n.innerHTML,width:s,height:c,transform:o,title:i,extra:a,watchable:!0})])}}},t6=new RegExp('"',"ug"),U1=[1105920,1112319];function n6(t){var e=t.replace(t6,""),n=mT(e,0),r=n>=U1[0]&&n<=U1[1],i=e.length===2?e[0]===e[1]:!1;return{value:Zl(i?e[0]:e),isSecondary:r||i}}function G1(t,e){var n="".concat(Q5).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(X5),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()]:Z5[u],h=n6(l),p=h.value,m=h.isSecondary,y=c[0].startsWith("FontAwesome"),g=Jl(d,p),x=g;if(y){var A=wT(p);A.iconName&&A.prefix&&(g=A.iconName,d=A.prefix)}if(g&&!m&&(!a||a.getAttribute(Hl)!==d||a.getAttribute(Ql)!==x)){t.setAttribute(n,x),a&&t.removeChild(a);var C=_T(),b=C.extra;b.attributes[Gl]=e,af(g,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 mo(k)}).join(`
|
2130
|
+
`),t.removeAttribute(n),r()}).catch(i)}else r()}else r()})}function r6(t){return Promise.all([G1(t,"::before"),G1(t,"::after")])}function i6(t){return t.parentNode!==document.head&&!~Y5.indexOf(t.tagName.toUpperCase())&&!t.getAttribute(Gl)&&(!t.parentNode||t.parentNode.tagName!=="svg")}function H1(t){if(!!Rt)return new Promise(function(e,n){var r=Qr(t.querySelectorAll("*")).filter(i6).map(r6),i=cf.begin("searchPseudoElements");P1(),Promise.all(r).then(function(){i(),lf(),e()}).catch(function(){i(),lf(),n()})})}var o6={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=H1,n}}},provides:function(e){e.pseudoElements2svg=function(n){var r=n.node,i=r===void 0?te:r;F.searchPseudoElements&&H1(i)}}},Q1=!1,a6={mixout:function(){return{dom:{unwatch:function(){P1(),Q1=!0}}}},hooks:function(){return{bootstrap:function(){F1(ef("mutationObserverCallbacks",{}))},noAuto:function(){HT()},watch:function(n){var r=n.observeMutationsRoot;Q1?lf():F1(ef("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},V1=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)},s6={mixout:function(){return{parse:{transform:function(n){return V1(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var i=r.getAttribute("data-fa-transform");return i&&(n.transform=V1(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 Y1(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 c6(t){return t.tag==="g"?t.children:[t]}var u6={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=sT({transform:c,containerWidth:l,iconWidth:u}),p={tag:"rect",attributes:N(N({},ff),{},{fill:"white"})},m=f.children?{children:f.children.map(Y1)}:{},y={tag:"g",attributes:N({},h.inner),children:[Y1(N({tag:f.tag,attributes:N(N({},f.attributes),h.path)},m))]},g={tag:"g",attributes:N({},h.outer),children:[y]},x="mask-".concat(s||po()),A="clip-".concat(s||po()),C={tag:"mask",attributes:N(N({},ff),{},{id:x,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[p,g]},b={tag:"defs",children:[{tag:"clipPath",attributes:{id:A},children:c6(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}}}},l6={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}}}},f6={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}}}},d6=[lT,KT,JT,$T,e6,o6,a6,s6,u6,l6,f6];ET(d6,{mixoutsTo:Ve}),Ve.noAuto,Ve.config,Ve.library,Ve.dom,Ve.parse,Ve.findIconDefinition,Ve.toHtml;var ne=Ve.icon;Ve.layer,Ve.text,Ve.counter;/**
|
1829
2131
|
* @license
|
1830
2132
|
* Copyright 2018 Google LLC
|
1831
2133
|
* SPDX-License-Identifier: BSD-3-Clause
|
1832
|
-
*/const UM=Cr(class extends ji{constructor(t){var e;if(super(t),t.type!==Nt.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 be}}),Yg="close-dialog";function GM(){return new CustomEvent(Yg,{bubbles:!0})}function Er(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),Fe(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(Dn)};return e.addEventListener("keydown",i=>{i.stopPropagation()}),e.addEventListener(Yg,r),document.body.appendChild(e),window.requestAnimationFrame(()=>e.classList.add("visible")),t!="tour"&&document.body.classList.add(Dn),{content:e.querySelector(".content"),close:r}}function ot(t,e={}){var i;const n=Er(),r=e.title;return(i=e.okLabel)!=null||(e.okLabel="OK"),new Promise((o,s)=>{const a=()=>{n.close(),o(!0)},c=D`${r?D`<div class="modal-title">${r}</div>`:z}<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>`:z} <button @click="${a}">${e.okLabel}</button></div>`;Fe(c,n.content)})}function HM(t,e){var n,r;Wt((n=t.scale)==null?void 0:n.type)?QM(t,e):tt((r=t.scale)==null?void 0:r.type)?VM(t,e):ot("Not implemented (yet).")}function QM(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=t.scale,i=Er(),o=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,s=new Set,a=p=>{n(e.actions.filterByNominal({values:r.domain().filter(d=>s.has(d)),attribute:t.attribute,remove:p})),i.close()},c=p=>{const d=p.target;d.checked?s.add(d.value):s.delete(d.value),h()},u=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button ?disabled="${!s.size}" @click="${()=>a(!1)}">${$(Ui).node[0]} Retain</button> <button ?disabled="${!s.size}" @click="${()=>a(!0)}">${$(Gu).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(p=>D`<li><label class="checkbox"><span class="color" style="${UM({backgroundColor:f(p).toString()})}"></span> <input type="checkbox" .value="${p}"> ${p}</label></li>`)}</ul>`;function h(){Fe(D`${o}<div class="modal-body">${l}</div>${u()}`,i.content)}h(),i.content.querySelector(".gs-checkbox-list input[type='checkbox']").focus()}function VM(t,e){const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=Er(),s=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,a=p=>{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="${()=>a()}">${$(Ui).node[0]} Retain</button></div>`,u=p=>{r=p.target.value,h()},f=p=>{const d=p.target.value;i=d.length>0?+d:void 0,h()},l=D`<div class="gs-form-group"><label>Select samples where <em>${t.name}</em> is</label> <select .value="${r}" @change="${u}">${Object.entries(YM).map(([p,d])=>D`<option .value="${p}">${d}</option>`)}</select> <input type="number" placeholder="Please enter a numeric value" @input="${f}"></div>`;function h(){Fe(D`${s}<div class="modal-body">${l}</div>${c()}`,o.content)}h(),o.content.querySelector("select").focus()}const YM={lt:"less than",lte:"less than or equal to",eq:"equal to",gte:"greater than or equal to",gt:"greater than"};function WM(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=[{operand:void 0,operator:"lt"}],i=Er(),o=D`<div class="modal-title">Group by threshold on <em>${t.name}</em></div>`,s=h=>{n(e.actions.groupByThresholds({attribute:t.attribute,thresholds:r})),i.close()},a=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn-primary" ?disabled="${!_M(r)}" @click="${()=>s()}">${$(Gi).node[0]} Group</button></div>`,c=h=>{const p=h.target.value;r[0].operator=p,l()},u=h=>{const p=h.target.value;r[0].operand=p.length>0?+p: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(){Fe(D`${o}<div class="modal-body">${f}</div>${a()}`,i.content)}l(),i.content.querySelector("select").focus()}function _M(t){return t[0].operator&&typeof t[0].operand=="number"}function Ku(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 p=r.provenance.getActionInfo(h);return{label:p.title,icon:p.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})),a.push({icon:Gi,label:"Group by thresholds...",callback:()=>WM(e,r)}),XM(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:Ui,label:"Advanced filter...",callback:()=>HM(e,r)}),a}function XM(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function ZM(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var rn={},jn={};Object.defineProperty(jn,"__esModule",{value:!0}),jn.ActionCreators=jn.ActionTypes=void 0;var Un={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"};jn.ActionTypes=Un;var qM={undo:function(){return{type:Un.UNDO}},redo:function(){return{type:Un.REDO}},jumpToFuture:function(e){return{type:Un.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:Un.JUMP_TO_PAST,index:e}},jump:function(e){return{type:Un.JUMP,index:e}},clearHistory:function(){return{type:Un.CLEAR_HISTORY}}};jn.ActionCreators=qM;var yt={};Object.defineProperty(yt,"__esModule",{value:!0}),yt.parseActions=Ts,yt.isHistory=KM,yt.includeAction=JM,yt.excludeAction=$M,yt.combineFilters=e8,yt.groupByActionTypes=t8,yt.newHistory=n8;function Ts(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function KM(t){return typeof t.present!="undefined"&&typeof t.future!="undefined"&&typeof t.past!="undefined"&&Array.isArray(t.future)&&Array.isArray(t.past)}function JM(t){var e=Ts(t);return function(n){return e.indexOf(n.type)>=0}}function $M(t){var e=Ts(t);return function(n){return e.indexOf(n.type)<0}}function e8(){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 t8(t){var e=Ts(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function n8(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 Wg={},Dr={};Object.defineProperty(Dr,"__esModule",{value:!0}),Dr.set=f8,Dr.start=c8,Dr.end=u8,Dr.log=l8;function At(t){return o8(t)||i8(t)||r8()}function r8(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function i8(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function o8(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 Is,qe,Ju={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function s8(){qe={header:[],prev:[],action:[],next:[],msgs:[]}}function a8(){var t=qe,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,At(e)),(a=console).log.apply(a,At(n)),(c=console).log.apply(c,At(i)),(u=console).log.apply(u,At(r)),(f=console).log.apply(f,At(o)),console.groupEnd()}else{var l,h,p,d,g;(l=console).log.apply(l,At(e)),(h=console).log.apply(h,At(n)),(p=console).log.apply(p,At(i)),(d=console).log.apply(d,At(r)),(g=console).log.apply(g,At(o))}}function $u(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function c8(t,e){s8(),Is&&(console.group?(qe.header=["%credux-undo","font-style: italic","action",t.type],qe.action=$u("action",Ju.action,t),qe.prev=$u("prev history",Ju.prevState,e)):(qe.header=["redux-undo action",t.type],qe.action=["action",t],qe.prev=["prev history",e]))}function u8(t){Is&&(console.group?qe.next=$u("next history",Ju.nextState,t):qe.next=["next history",t],a8())}function l8(){if(Is){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];qe.msgs=qe.msgs.concat([].concat(e,[`
|
1833
|
-
`]))}}function f8(t){Is=t}(function(t){function e(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e=function(x){return typeof x}:e=function(x){return x&&typeof Symbol=="function"&&x.constructor===Symbol&&x!==Symbol.prototype?"symbol":typeof x},e(b)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=C;var n=s(Dr),r=jn,i=yt;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 x={},E=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var N in b)if(Object.prototype.hasOwnProperty.call(b,N)){var L=E?Object.getOwnPropertyDescriptor(b,N):null;L&&(L.get||L.set)?Object.defineProperty(x,N,L):x[N]=b[N]}return x.default=b,A&&A.set(b,x),x}function a(b,A){var x=Object.keys(b);if(Object.getOwnPropertySymbols){var E=Object.getOwnPropertySymbols(b);A&&(E=E.filter(function(N){return Object.getOwnPropertyDescriptor(b,N).enumerable})),x.push.apply(x,E)}return x}function c(b){for(var A=1;A<arguments.length;A++){var x=arguments[A]!=null?arguments[A]:{};A%2?a(Object(x),!0).forEach(function(E){u(b,E,x[E])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(x)):a(Object(x)).forEach(function(E){Object.defineProperty(b,E,Object.getOwnPropertyDescriptor(x,E))})}return b}function u(b,A,x){return A in b?Object.defineProperty(b,A,{value:x,enumerable:!0,configurable:!0,writable:!0}):b[A]=x,b}function f(b){return p(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 p(b){if(Array.isArray(b)){for(var A=0,x=new Array(b.length);A<b.length;A++)x[A]=b[A];return x}}function d(b,A){var x=(0,i.newHistory)([],b,[]);return A&&(x._latestUnfiltered=null),x}function g(b,A,x,E){var N=b.past.length+1;n.log("inserting",A),n.log("new free: ",x-N);var L=b.past,I=b._latestUnfiltered,O=x&&x<=N,q=L.slice(O?1:0),Z=I!=null?[].concat(f(q),[I]):q;return(0,i.newHistory)(Z,A,[],E)}function m(b,A){if(A<0||A>=b.future.length)return b;var x=b.past,E=b.future,N=b._latestUnfiltered,L=[].concat(f(x),[N],f(E.slice(0,A))),I=E[A],O=E.slice(A+1);return(0,i.newHistory)(L,I,O)}function y(b,A){if(A<0||A>=b.past.length)return b;var x=b.past,E=b.future,N=b._latestUnfiltered,L=x.slice(0,A),I=[].concat(f(x.slice(A+1)),[N],f(E)),O=x[A];return(0,i.newHistory)(L,O,I)}function v(b,A){return A>0?m(b,A-1):A<0?y(b,b.past.length+A):b}function w(b,A){return A.indexOf(b)>-1?b:!b}function C(b){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.set(A.debug);var x=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=x.neverSkipReducer?function(L,I){for(var O=arguments.length,q=new Array(O>2?O-2:0),Z=2;Z<O;Z++)q[Z-2]=arguments[Z];return c({},L,{present:b.apply(void 0,[L.present,I].concat(q))})}:function(L){return L},N;return function(){var L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:N,I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(I,L);for(var O=L,q=arguments.length,Z=new Array(q>2?q-2:0),ye=2;ye<q;ye++)Z[ye-2]=arguments[ye];if(!N)if(n.log("history is uninitialized"),L===void 0){var Ke={type:"@@redux-undo/CREATE_HISTORY"},fn=b.apply(void 0,[L,Ke].concat(Z));return O=d(fn,x.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(O),O}else(0,i.isHistory)(L)?(O=N=x.ignoreInitialState?L:(0,i.newHistory)(L.past,L.present,L.future),n.log("initialHistory initialized: initialState is a history",N)):(O=N=d(L,x.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",N));var G;switch(I.type){case void 0:return O;case x.undoType:return G=v(O,-1),n.log("perform undo"),n.end(G),E.apply(void 0,[G,I].concat(Z));case x.redoType:return G=v(O,1),n.log("perform redo"),n.end(G),E.apply(void 0,[G,I].concat(Z));case x.jumpToPastType:return G=y(O,I.index),n.log("perform jumpToPast to ".concat(I.index)),n.end(G),E.apply(void 0,[G,I].concat(Z));case x.jumpToFutureType:return G=m(O,I.index),n.log("perform jumpToFuture to ".concat(I.index)),n.end(G),E.apply(void 0,[G,I].concat(Z));case x.jumpType:return G=v(O,I.index),n.log("perform jump to ".concat(I.index)),n.end(G),E.apply(void 0,[G,I].concat(Z));case w(I.type,x.clearHistoryType):return G=d(O.present,x.ignoreInitialState),n.log("perform clearHistory"),n.end(G),E.apply(void 0,[G,I].concat(Z));default:if(G=b.apply(void 0,[O.present,I].concat(Z)),x.initTypes.some(function(jl){return jl===I.type}))return n.log("reset history due to init action"),n.end(N),N;if(O._latestUnfiltered===G)return O;var je=typeof x.filter=="function"&&!x.filter(I,G,O);if(je){var to=(0,i.newHistory)(O.past,G,O.future,O.group);return x.syncFilter||(to._latestUnfiltered=O._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(to),to}var no=x.groupBy(I,G,O);if(no!=null&&no===O.group){var qs=(0,i.newHistory)(O.past,G,O.future,O.group);return n.log("groupBy grouped the action with the previous action"),n.end(qs),qs}return O=g(O,G,x.limit,no),n.log("inserted new state into history"),n.end(O),O}}}})(Wg),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=jn,n=yt,r=i(Wg);function i(o){return o&&o.__esModule?o:{default:o}}}(rn);var h8=ZM(rn);function el(t){return t.split("-")[0]}function _g(t){return t.split("-")[1]}function Xg(t){return["top","bottom"].includes(el(t))?"x":"y"}function Zg(t){return t==="y"?"height":"width"}function qg(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(el(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=Xg(r),c=Zg(a);switch(_g(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 d8=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}=qg(F(T({},a),{placement:r})),f=r,l={};for(let h=0;h<o.length;h++){const{name:p,fn:d}=o[h],{x:g,y:m,data:y,reset:v}=await d({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),{[p]:y!=null?y:{}}),v){typeof v=="object"&&(v.placement&&(f=v.placement),v.rects&&(a=v.rects===!0?await s.getElementRects({reference:t,floating:e,strategy:i}):v.rects),{x:c,y:u}=qg(F(T({},a),{placement:f}))),h=-1;continue}}return{x:c,y:u,placement:f,strategy:i,middlewareData:l}};function p8(t){return T({top:0,right:0,bottom:0,left:0},t)}function g8(t){return typeof t!="number"?p8(t):{top:t,right:t,bottom:t,left:t}}function tl(t){return F(T({},t),{top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height})}async function m8(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,p=g8(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=tl(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+p.top,bottom:y.bottom-m.bottom+p.bottom,left:m.left-y.left+p.left,right:y.right-m.right+p.right}}const y8={left:"right",right:"left",bottom:"top",top:"bottom"};function Ns(t){return t.replace(/left|right|bottom|top/g,e=>y8[e])}function A8(t,e){const n=_g(t)==="start",r=Xg(t),i=Zg(r);let o=r==="x"?n?"right":"left":n?"bottom":"top";return e.reference[i]>e.floating[i]&&(o=Ns(o)),{main:o,cross:Ns(o)}}const b8={start:"end",end:"start"};function Kg(t){return t.replace(/start|end/g,e=>b8[e])}function v8(t){const e=Ns(t);return[Kg(t),e,Kg(e)]}const x8=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,p=F1(E,["mainAxis","crossAxis","fallbackPlacements","fallbackStrategy","flipAlignment"]),d=el(i),m=f||(d===a||!h?[Ns(a)]:v8(a)),y=[a,...m],v=await m8(e,p),w=[];let C=((r=o.flip)==null?void 0:r.overflows)||[];if(c&&w.push(v[d]),u){const{main:N,cross:L}=A8(i,s);w.push(v[N],v[L])}if(C=[...C,{placement:i,overflows:w}],!w.every(N=>N<=0)){var b,A;const N=((b=(A=o.flip)==null?void 0:A.index)!=null?b:0)+1,L=y[N];if(L)return{data:{index:N,overflows:C},reset:{placement:L}};let I="bottom";switch(l){case"bestFit":{var x;const O=(x=C.slice().sort((q,Z)=>q.overflows.filter(ye=>ye>0).reduce((ye,Ke)=>ye+Ke,0)-Z.overflows.filter(ye=>ye>0).reduce((ye,Ke)=>ye+Ke,0))[0])==null?void 0:x.placement;O&&(I=O);break}case"initialPlacement":I=a;break}return{data:{skip:!0},reset:{placement:I}}}return{}}}};function nl(t){return(t==null?void 0:t.toString())==="[object Window]"}function on(t){if(t==null)return window;if(!nl(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function ks(t){return on(t).getComputedStyle(t)}function Lt(t){return nl(t)?"":t?(t.nodeName||"").toLowerCase():""}function Ot(t){return t instanceof on(t).HTMLElement}function Bs(t){return t instanceof on(t).Element}function w8(t){return t instanceof on(t).Node}function Jg(t){const e=on(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Ls(t){const{overflow:e,overflowX:n,overflowY:r}=ks(t);return/auto|scroll|overlay|hidden/.test(e+r+n)}function C8(t){return["table","td","th"].includes(Lt(t))}function $g(t){const e=navigator.userAgent.toLowerCase().includes("firefox"),n=ks(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 em=Math.min,Hi=Math.max,Os=Math.round;function Mr(t,e){e===void 0&&(e=!1);const n=t.getBoundingClientRect();let r=1,i=1;return e&&Ot(t)&&(r=t.offsetWidth>0&&Os(n.width)/t.offsetWidth||1,i=t.offsetHeight>0&&Os(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 sn(t){return((w8(t)?t.ownerDocument:t.document)||window.document).documentElement}function Ps(t){return nl(t)?{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}:{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function tm(t){return Mr(sn(t)).left+Ps(t).scrollLeft}function S8(t){const e=Mr(t);return Os(e.width)!==t.offsetWidth||Os(e.height)!==t.offsetHeight}function E8(t,e,n){const r=Ot(e),i=sn(e),o=Mr(t,r&&S8(e));let s={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if(r||!r&&n!=="fixed")if((Lt(e)!=="body"||Ls(i))&&(s=Ps(e)),Ot(e)){const c=Mr(e,!0);a.x=c.x+e.clientLeft,a.y=c.y+e.clientTop}else i&&(a.x=tm(i));return{x:o.left+s.scrollLeft-a.x,y:o.top+s.scrollTop-a.y,width:o.width,height:o.height}}function Fs(t){return Lt(t)==="html"?t:t.assignedSlot||t.parentNode||(Jg(t)?t.host:null)||sn(t)}function nm(t){return!Ot(t)||getComputedStyle(t).position==="fixed"?null:t.offsetParent}function D8(t){let e=Fs(t);for(;Ot(e)&&!["html","body"].includes(Lt(e));){if($g(e))return e;e=e.parentNode}return null}function rl(t){const e=on(t);let n=nm(t);for(;n&&C8(n)&&getComputedStyle(n).position==="static";)n=nm(n);return n&&(Lt(n)==="html"||Lt(n)==="body"&&getComputedStyle(n).position==="static"&&!$g(n))?e:n||D8(t)||e}function rm(t){return{width:t.offsetWidth,height:t.offsetHeight}}function M8(t){let{rect:e,offsetParent:n,strategy:r}=t;const i=Ot(n),o=sn(n);if(n===o)return e;let s={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if((i||!i&&r!=="fixed")&&((Lt(n)!=="body"||Ls(o))&&(s=Ps(n)),Ot(n))){const c=Mr(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 T8(t){const e=on(t),n=sn(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 I8(t){var e;const n=sn(t),r=Ps(t),i=(e=t.ownerDocument)==null?void 0:e.body,o=Hi(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),s=Hi(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0);let a=-r.scrollLeft+tm(t);const c=-r.scrollTop;return ks(i||n).direction==="rtl"&&(a+=Hi(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:s,x:a,y:c}}function im(t){return["html","body","#document"].includes(Lt(t))?t.ownerDocument.body:Ot(t)&&Ls(t)?t:im(Fs(t))}function om(t,e){var n;e===void 0&&(e=[]);const r=im(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),o=on(r),s=i?[o].concat(o.visualViewport||[],Ls(r)?r:[]):r,a=e.concat(s);return i?a:a.concat(om(Fs(s)))}function N8(t,e){const n=e.getRootNode==null?void 0:e.getRootNode();if(t.contains(e))return!0;if(n&&Jg(n)){let r=e;do{if(r&&t===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function k8(t){const e=Mr(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 sm(t,e){return e==="viewport"?tl(T8(t)):Bs(e)?k8(e):tl(I8(sn(t)))}function B8(t){const e=om(Fs(t)),r=["absolute","fixed"].includes(ks(t).position)&&Ot(t)?rl(t):t;return Bs(r)?e.filter(i=>Bs(i)&&N8(i,r)&&Lt(i)!=="body"):[]}function L8(t){let{element:e,boundary:n,rootBoundary:r}=t;const o=[...n==="clippingParents"?B8(e):[].concat(n),r],s=o[0],a=o.reduce((c,u)=>{const f=sm(e,u);return c.top=Hi(f.top,c.top),c.right=em(f.right,c.right),c.bottom=em(f.bottom,c.bottom),c.left=Hi(f.left,c.left),c},sm(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 O8={getElementRects:t=>{let{reference:e,floating:n,strategy:r}=t;return{reference:E8(e,rl(n),r),floating:F(T({},rm(n)),{x:0,y:0})}},convertOffsetParentRelativeRectToViewportRelativeRect:t=>M8(t),getOffsetParent:t=>{let{element:e}=t;return rl(e)},isElement:t=>Bs(t),getDocumentElement:t=>{let{element:e}=t;return sn(e)},getClippingClientRect:t=>L8(t),getDimensions:t=>{let{element:e}=t;return rm(e)},getClientRects:t=>{let{element:e}=t;return e.getClientRects()}},P8=(t,e,n)=>d8(t,e,T({platform:O8},n));let bt;const Qi=[],il=Cs(t=>t(),150,!1);function Vi(t){if((t==null?void 0:t.type)=="contextmenu"){t.preventDefault();return}bt&&(bt.remove(),bt=void 0,document.body.classList.remove(Dn))}function am(t){var e;if(!(t<1)){for(let n=t;n<Qi.length;n++)(e=Qi[n])==null||e.remove(),Qi[n]=void 0;for(const n of Qi[t-1].querySelectorAll("li.active"))n.classList.remove("active")}}const F8=()=>D`<li class="menu-divider"></li>`,z8=t=>D`<li class="menu-header">${t.label||"-"}</li>`,R8=(t,e)=>D`<li><a class="submenu-item" @click="${n=>n.stopPropagation()}" @mouseup="${n=>n.stopPropagation()}" @mouseenter="${n=>il(()=>{const r=n.target.closest("li");G8(t.submenu,r,e+1),n.stopPropagation()})}" @mouseleave="${()=>il(()=>am(e+1))}"><span>${t.label}</span></a></li>`,j8=t=>D`<li><a @mouseup="${()=>{Vi(),t.callback()}}">${t.icon?$(t.icon).node[0]:""} ${t.label}</a> ${t.ellipsisCallback?D`<a class="menu-ellipsis" @click="${t.ellipsisCallback}">${$(XD).node[0]}</a>`:z}</li>`,U8=t=>D`<li><span class="disabled-item">${t.icon?$(t.icon).node[0]:""} ${t.label||"-"}</span></li>`;function cm(t,e=1){switch(t.type){case"divider":return F8();case"header":return z8(t);default:return t.submenu?R8(t,e):t.callback?j8(t):U8(t)}}function G8(t,e,n){um(t,e,n,"right-start"),e.classList.add("active")}function um(t,e,n,r){const i=document.createElement("ul");i.classList.add("gs-context-menu"),i.addEventListener("mouseenter",()=>{il(()=>{})}),Fe(t.map(o=>cm(o,n)),i),bt.appendChild(i),am(n),Qi[n]=i,P8(e,i,{placement:r!=null?r:"right-start",middleware:[x8()]}).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 lm(t,e,n){n!=null||(n="bottom-start"),Vi();const r=performance.now(),i=document.body;bt=document.createElement("div"),bt.classList.add("gs-context-menu-backdrop"),bt.addEventListener("click",Vi),bt.addEventListener("contextmenu",Vi),bt.addEventListener("mouseup",()=>{performance.now()-r>500&&Vi()},{once:!0}),i.appendChild(bt),document.body.classList.add(Dn),um(t.items,e,0,n)}function fm(t,e){lm(t,H8(e),"right-start"),e.preventDefault()}function H8(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 ol={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},zs="SAMPLE_ATTRIBUTE",hm="SAMPLE_NAME",Q8=/^attribute-(.*)$/;class dm extends vr{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(zs,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(hm,n=>pm),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)}),le([...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:Np,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(...Ku(D`Attribute: <strong>${s.name}</strong>`,s,a,this.sampleView))}else o.push(...Ku(D`Sample: <strong>${i.displayName}</strong>`,pm,i.id,this.sampleView));fm({items:o},r)}_setSamples(e){if(this.children.length)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;eg(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof Le){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(Y8());for(const e of this._getAttributeNames()){const n=this.addChildBySpec(this._createAttributeViewSpec(e));n.opacityFunction=r=>r*this._getAttributeOpacity(e)}ng(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(zf(i.map(o=>o.attributes[e]))){case"integer":case"number":r=ol.QUANTITATIVE;break;default:r=ol.NOMINAL}}return V8(e,F(T({},n||{}),{type:r}))}_findViewForAttribute(e){return this.children[this._getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e.name.match(Q8);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:zs,specifier:i},accessor:(o,s)=>s.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=(a,c)=>W8(c)?this.getAttributeInfo(a).scale(c):"transparent",s=D`<table class="attributes">${Object.entries(i.attributes).map(([a,c])=>D`<tr class="${QD({hovered:a==r})}"><th>${a}</th><td>${cg(c)}</td><td class="color" .style="background-color: ${o(a,c)}"></td></tr>`)}</table>`;return D`<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==xu||i.type==wu)&&this.sampleView.getSamples().find(s=>s.attributes[i.name]==n)){const s=this.sampleView.actions.filterByNominal({attribute:{type:zs,specifier:r},values:[n]}),a=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(a)&&!a.payload.remove&&a.payload.attribute.type==zs&&a.payload.attribute.specifier==r&&a.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[rn.ActionCreators.undo(),s]:s),!0}}return!1}isPickingSupported(){return!1}}function V8(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==ol.QUANTITATIVE&&(r.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale}),r}function Y8(){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 W8(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const pm=Object.freeze({name:"sample",attribute:{type:hm},accessor:t=>t,type:"identifier",scale:void 0});class _8 extends zi{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:Ft(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&&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(),le([...this.getAncestors()]).visit(s=>ki(s,"size"))}}function st(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 an(t){return!!t&&!!t[ne]}function cn(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)===n6}(t)||Array.isArray(t)||!!t[Sm]||!!t.constructor[Sm]||sl(t)||al(t))}function Gn(t,e,n){n===void 0&&(n=!1),Tr(t)===0?(n?Object.keys:Nr)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function Tr(t){var e=t[ne];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:sl(t)?2:al(t)?3:0}function Ir(t,e){return Tr(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function X8(t,e){return Tr(t)===2?t.get(e):t[e]}function gm(t,e,n){var r=Tr(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function mm(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function sl(t){return e6&&t instanceof Map}function al(t){return t6&&t instanceof Set}function Hn(t){return t.o||t.t}function cl(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=Em(t);delete e[ne];for(var n=Nr(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 ul(t,e){return e===void 0&&(e=!1),ll(t)||an(t)||!cn(t)||(Tr(t)>1&&(t.set=t.add=t.clear=t.delete=Z8),Object.freeze(t),e&&Gn(t,function(n,r){return ul(r,!0)},!0)),t}function Z8(){st(2)}function ll(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function vt(t){var e=bl[t];return e||st(18,t),e}function q8(t,e){bl[t]||(bl[t]=e)}function fl(){return Yi}function hl(t,e){e&&(vt("Patches"),t.u=[],t.s=[],t.v=e)}function Rs(t){dl(t),t.p.forEach(K8),t.p=null}function dl(t){t===Yi&&(Yi=t.l)}function ym(t){return Yi={p:[],l:Yi,h:t,m:!0,_:0}}function K8(t){var e=t[ne];e.i===0||e.i===1?e.j():e.O=!0}function pl(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||vt("ES5").S(e,t,r),r?(n[ne].P&&(Rs(e),st(4)),cn(t)&&(t=js(e,t),e.l||Us(e,t)),e.u&&vt("Patches").M(n[ne].t,t,e.u,e.s)):t=js(e,n,[]),Rs(e),e.u&&e.v(e.u,e.s),t!==Cm?t:void 0}function js(t,e,n){if(ll(e))return e;var r=e[ne];if(!r)return Gn(e,function(o,s){return Am(t,r,e,o,s,n)},!0),e;if(r.A!==t)return e;if(!r.P)return Us(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=cl(r.k):r.o;Gn(r.i===3?new Set(i):i,function(o,s){return Am(t,r,i,o,s,n)}),Us(t,i,!1),n&&t.u&&vt("Patches").R(r,n,t.u,t.s)}return r.o}function Am(t,e,n,r,i,o){if(an(i)){var s=js(t,i,o&&e&&e.i!==3&&!Ir(e.D,r)?o.concat(r):void 0);if(gm(n,r,s),!an(s))return;t.m=!1}if(cn(i)&&!ll(i)){if(!t.h.F&&t._<1)return;js(t,i),e&&e.A.l||Us(t,i)}}function Us(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&ul(e,n)}function gl(t,e){var n=t[ne];return(n?Hn(n):t)[e]}function bm(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 un(t){t.P||(t.P=!0,t.l&&un(t.l))}function ml(t){t.o||(t.o=cl(t.t))}function yl(t,e,n){var r=sl(e)?vt("MapSet").N(e,n):al(e)?vt("MapSet").T(e,n):t.g?function(i,o){var s=Array.isArray(i),a={i:s?1:0,A:o?o.A:fl(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=a,u=Wi;s&&(c=[a],u=_i);var f=Proxy.revocable(c,u),l=f.revoke,h=f.proxy;return a.k=h,a.j=l,h}(e,n):vt("ES5").J(e,n);return(n?n.A:fl()).p.push(r),r}function J8(t){return an(t)||st(22,t),function e(n){if(!cn(n))return n;var r,i=n[ne],o=Tr(n);if(i){if(!i.P&&(i.i<4||!vt("ES5").K(i)))return i.t;i.I=!0,r=vm(n,o),i.I=!1}else r=vm(n,o);return Gn(r,function(s,a){i&&X8(i.t,s)===a||gm(r,s,e(a))}),o===3?new Set(r):r}(t)}function vm(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return cl(t)}function $8(){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 Wi.get(c,o)},set:function(c){var u=this[ne];Wi.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)&&un(a);break;case 4:n(a)&&un(a)}}}function n(o){for(var s=o.t,a=o.k,c=Nr(a),u=c.length-1;u>=0;u--){var f=c[u];if(f!==ne){var l=s[f];if(l===void 0&&!Ir(s,f))return!0;var h=a[f],p=h&&h[ne];if(p?p.t!==l:!mm(h,l))return!0}}var d=!!s[ne];return c.length!==Nr(s).length+(d?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);if(a&&!a.get)return!0;for(var c=0;c<s.length;c++)if(!s.hasOwnProperty(c))return!0;return!1}var i={};q8("ES5",{J:function(o,s){var a=Array.isArray(o),c=function(f,l){if(f){for(var h=Array(l.length),p=0;p<l.length;p++)Object.defineProperty(h,""+p,t(p,!0));return h}var d=Em(l);delete d[ne];for(var g=Nr(d),m=0;m<g.length;m++){var y=g[m];d[y]=t(y,f||!!d[y].enumerable)}return Object.create(Object.getPrototypeOf(l),d)}(a,o),u={i:a?5:4,A:s?s.A:fl(),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?an(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,p=f.D,d=f.i;if(d===4)Gn(h,function(w){w!==ne&&(l[w]!==void 0||Ir(l,w)?p[w]||c(h[w]):(p[w]=!0,un(f)))}),Gn(l,function(w){h[w]!==void 0||Ir(h,w)||(p[w]=!1,un(f))});else if(d===5){if(r(f)&&(un(f),p.length=!0),h.length<l.length)for(var g=h.length;g<l.length;g++)p[g]=!1;else for(var m=l.length;m<h.length;m++)p[m]=!0;for(var y=Math.min(h.length,l.length),v=0;v<y;v++)h.hasOwnProperty(v)||(p[v]=!0),p[v]===void 0&&c(h[v])}}}}(o.p[0]),e(o.p))},K:function(o){return o.i===4?n(o):r(o)}})}var xm,Yi,Al=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",e6=typeof Map!="undefined",t6=typeof Set!="undefined",wm=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",Cm=Al?Symbol.for("immer-nothing"):((xm={})["immer-nothing"]=!0,xm),Sm=Al?Symbol.for("immer-draftable"):"__$immer_draftable",ne=Al?Symbol.for("immer-state"):"__$immer_state",n6=""+Object.prototype.constructor,Nr=typeof Reflect!="undefined"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,Em=Object.getOwnPropertyDescriptors||function(t){var e={};return Nr(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},bl={},Wi={get:function(t,e){if(e===ne)return t;var n=Hn(t);if(!Ir(n,e))return function(i,o,s){var a,c=bm(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||!cn(r)?r:r===gl(t.t,e)?(ml(t),t.o[e]=yl(t.A.h,r,t)):r},has:function(t,e){return e in Hn(t)},ownKeys:function(t){return Reflect.ownKeys(Hn(t))},set:function(t,e,n){var r=bm(Hn(t),e);if(r!=null&&r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=gl(Hn(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(mm(n,i)&&(n!==void 0||Ir(t.t,e)))return!0;ml(t),un(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 gl(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,ml(t),un(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=Hn(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.i!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},defineProperty:function(){st(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){st(12)}},_i={};Gn(Wi,function(t,e){_i[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),_i.deleteProperty=function(t,e){return _i.set.call(this,t,e,void 0)},_i.set=function(t,e,n){return Wi.set.call(this,t[0],e,n,t[0])};var r6=function(){function t(n){var r=this;this.g=wm,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(g){var m=this;g===void 0&&(g=a);for(var y=arguments.length,v=Array(y>1?y-1:0),w=1;w<y;w++)v[w-1]=arguments[w];return c.produce(g,function(C){var b;return(b=o).call.apply(b,[m,C].concat(v))})}}var u;if(typeof o!="function"&&st(6),s!==void 0&&typeof s!="function"&&st(7),cn(i)){var f=ym(r),l=yl(r,i,void 0),h=!0;try{u=o(l),h=!1}finally{h?Rs(f):dl(f)}return typeof Promise!="undefined"&&u instanceof Promise?u.then(function(g){return hl(f,s),pl(g,f)},function(g){throw Rs(f),g}):(hl(f,s),pl(u,f))}if(!i||typeof i!="object"){if((u=o(i))===void 0&&(u=i),u===Cm&&(u=void 0),r.F&&ul(u,!0),s){var p=[],d=[];vt("Patches").M(i,u,p,d),s(p,d)}return u}st(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),h=1;h<f;h++)l[h-1]=arguments[h];return r.produceWithPatches(u,function(p){return i.apply(void 0,[p].concat(l))})};var s,a,c=r.produce(i,o,function(u,f){s=u,a=f});return typeof Promise!="undefined"&&c instanceof Promise?c.then(function(u){return[u,s,a]}):[c,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){cn(n)||st(8),an(n)&&(n=J8(n));var r=ym(this),i=yl(this,n,void 0);return i[ne].C=!0,dl(r),i},e.finishDraft=function(n,r){var i=n&&n[ne],o=i.A;return hl(o,r),pl(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!wm&&st(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 s=vt("Patches").$;return an(n)?s(n,r):this.produce(n,function(a){return s(a,r)})},t}(),Re=new r6,i6=Re.produce;Re.produceWithPatches.bind(Re),Re.setAutoFreeze.bind(Re),Re.setUseProxies.bind(Re),Re.applyPatches.bind(Re),Re.createDraft.bind(Re),Re.finishDraft.bind(Re);var Gs=i6;function o6(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Dm(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 Mm(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Dm(Object(n),!0).forEach(function(r){o6(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Dm(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Se(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 Tm=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),vl=function(){return Math.random().toString(36).substring(7).split("").join(".")},Hs={INIT:"@@redux/INIT"+vl(),REPLACE:"@@redux/REPLACE"+vl(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+vl()}};function s6(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 Im(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(Se(0));if(typeof e=="function"&&typeof n=="undefined"&&(n=e,e=void 0),typeof n!="undefined"){if(typeof n!="function")throw new Error(Se(1));return n(Im)(t,e)}if(typeof t!="function")throw new Error(Se(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(Se(3));return o}function l(g){if(typeof g!="function")throw new Error(Se(4));if(c)throw new Error(Se(5));var m=!0;return u(),a.push(g),function(){if(!!m){if(c)throw new Error(Se(6));m=!1,u();var v=a.indexOf(g);a.splice(v,1),s=null}}}function h(g){if(!s6(g))throw new Error(Se(7));if(typeof g.type=="undefined")throw new Error(Se(8));if(c)throw new Error(Se(9));try{c=!0,o=i(o,g)}finally{c=!1}for(var m=s=a,y=0;y<m.length;y++){var v=m[y];v()}return g}function p(g){if(typeof g!="function")throw new Error(Se(10));i=g,h({type:Hs.REPLACE})}function d(){var g,m=l;return g={subscribe:function(v){if(typeof v!="object"||v===null)throw new Error(Se(11));function w(){v.next&&v.next(f())}w();var C=m(w);return{unsubscribe:C}}},g[Tm]=function(){return this},g}return h({type:Hs.INIT}),r={dispatch:h,subscribe:l,getState:f,replaceReducer:p},r[Tm]=d,r}function a6(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:Hs.INIT});if(typeof r=="undefined")throw new Error(Se(12));if(typeof n(void 0,{type:Hs.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error(Se(13))})}function xl(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{a6(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 p=o[h],d=n[p],g=c[p],m=d(g,u);if(typeof m=="undefined")throw u&&u.type,new Error(Se(14));l[p]=m,f=f||m!==g}return f=f||o.length!==Object.keys(c).length,f?l:c}}function Qs(){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 c6(){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(Se(15))},s={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},a=e.map(function(c){return c(s)});return o=Qs.apply(void 0,a)(i.dispatch),Mm(Mm({},i),{},{dispatch:o})}}}var Vs="NOT_FOUND";function u6(t){var e;return{get:function(r){return e&&t(e.key,r)?e.value:Vs},put:function(r,i){e={key:r,value:i}},getEntries:function(){return e?[e]:[]},clear:function(){e=void 0}}}function l6(t,e){var n=[];function r(a){var c=n.findIndex(function(f){return e(a,f.key)});if(c>-1){var u=n[c];return c>0&&(n.splice(c,1),n.unshift(u)),u.value}return Vs}function i(a,c){r(a)===Vs&&(n.unshift({key:a,value:c}),n.length>t&&n.pop())}function o(){return n}function s(){n=[]}return{get:r,put:i,getEntries:o,clear:s}}var f6=function(e,n){return e===n};function h6(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 d6(t,e){var n=typeof e=="object"?e:{equalityCheck:e},r=n.equalityCheck,i=r===void 0?f6:r,o=n.maxSize,s=o===void 0?1:o,a=n.resultEqualityCheck,c=h6(i),u=s===1?u6(c):l6(s,c);function f(){var l=u.get(arguments);if(l===Vs){if(l=t.apply(null,arguments),a){var h=u.getEntries(),p=h.find(function(d){return a(d.value,l)});p&&(l=p.value)}u.put(arguments,l)}return l}return f.clearCache=function(){return u.clear()},f}function p6(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 g6(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 s=arguments.length,a=new Array(s),c=0;c<s;c++)a[c]=arguments[c];var u=0,f,l={memoizeOptions:void 0},h=a.pop();if(typeof h=="object"&&(l=h,h=a.pop()),typeof h!="function")throw new Error("createSelector expects an output function after the inputs, but received: ["+typeof h+"]");var p=l,d=p.memoizeOptions,g=d===void 0?n:d,m=Array.isArray(g)?g:[g],y=p6(a),v=t.apply(void 0,[function(){return u++,h.apply(null,arguments)}].concat(m)),w=t(function(){for(var C=[],b=y.length,A=0;A<b;A++)C.push(y[A].apply(null,arguments));return f=v.apply(null,C),f});return Object.assign(w,{resultFunc:h,memoizedResultFunc:v,dependencies:y,lastResult:function(){return f},recomputations:function(){return u},resetRecomputations:function(){return u=0}}),w};return i}var m6=g6(d6);function Nm(t){var e=function(r){var i=r.dispatch,o=r.getState;return function(s){return function(a){return typeof a=="function"?a(i,o,t):s(a)}}};return e}var km=Nm();km.withExtraArgument=Nm;var Bm=km,y6=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 Ys=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},A6=Object.defineProperty,Lm=Object.getOwnPropertySymbols,b6=Object.prototype.hasOwnProperty,v6=Object.prototype.propertyIsEnumerable,Om=function(t,e,n){return e in t?A6(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Xi=function(t,e){for(var n in e||(e={}))b6.call(e,n)&&Om(t,n,e[n]);if(Lm)for(var r=0,i=Lm(e);r<i.length;r++){var n=i[r];v6.call(e,n)&&Om(t,n,e[n])}return t},x6=typeof window!="undefined"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Qs:Qs.apply(null,arguments)};function w6(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 C6=function(t){y6(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,Ys([void 0],n[0].concat(this)))):new(e.bind.apply(e,Ys([void 0],n.concat(this))))},e}(Array);function S6(t){return typeof t=="boolean"}function E6(){return function(e){return D6(e)}}function D6(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new C6;return n&&(S6(n)?r.push(Bm):r.push(Bm.withExtraArgument(n.extraArgument))),r}var M6=!0;function T6(t){var e=E6(),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,p;if(typeof i=="function")p=i;else if(w6(i))p=xl(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 d=s;typeof d=="function"&&(d=d(e));var g=c6.apply(void 0,d),m=Qs;c&&(m=x6(Xi({trace:!M6},typeof c=="object"&&c)));var y=[g];Array.isArray(h)?y=Ys([g],h):typeof h=="function"&&(y=h(y));var v=m.apply(void 0,y);return Im(p,f,v)}function Zi(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 Pm(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 I6(t){return typeof t=="function"}function N6(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?Pm(e):[e,n,r],o=i[0],s=i[1],a=i[2],c;if(I6(t))c=function(){return Gs(t(),function(){})};else{var u=Gs(t,function(){});c=function(){return u}}function f(l,h){l===void 0&&(l=c());var p=Ys([o[h.type]],s.filter(function(d){var g=d.matcher;return g(h)}).map(function(d){var g=d.reducer;return g}));return p.filter(function(d){return!!d}).length===0&&(p=[a]),p.reduce(function(d,g){if(g)if(an(d)){var m=d,y=g(m,h);return typeof y=="undefined"?d:y}else{if(cn(d))return Gs(d,function(v){return g(v,h)});var y=g(d,h);if(typeof y=="undefined"){if(d===null)return d;throw Error("A case reducer on a non-draftable value must not return undefined")}return y}return d},l)}return f.getInitialState=c,f}function k6(t,e){return t+"/"+e}function Fm(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:Gs(t.initialState,function(){}),r=t.reducers||{},i=Object.keys(r),o={},s={},a={};i.forEach(function(f){var l=r[f],h=k6(e,f),p,d;"reducer"in l?(p=l.reducer,d=l.prepare):p=l,o[f]=p,s[h]=p,a[f]=d?Zi(h,d):Zi(h)});function c(){var f=typeof t.extraReducers=="function"?Pm(t.extraReducers):[t.extraReducers],l=f[0],h=l===void 0?{}:l,p=f[1],d=p===void 0?[]:p,g=f[2],m=g===void 0?void 0:g,y=Xi(Xi({},h),s);return N6(n,y,d,m)}var u;return{name:e,reducer:function(f,l){return u||(u=c()),u(f,l)},actions:a,caseReducers:o,getInitialState:function(){return u||(u=c()),u.getInitialState()}}}var wl="listenerMiddleware";Zi(wl+"/add"),Zi(wl+"/removeAll"),Zi(wl+"/remove"),$8();function zm(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=Pr(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 Rm(t,e,n){const r=ce(".3~r"),i=s=>`${n[s].operator=="lt"?"[":"("}${r(n[s].operand)}, ${r(n[s+1].operand)}${n[s+1].operator=="lte"?"]":")"}`,o=Ft(n.length-1).reverse();zm(t,O6(e,n.slice(1,n.length-1)),o,o.map(i))}function B6(t,e,n){Rm(t,e,[{operator:"lt",operand:-1/0},...n,{operator:"lte",operand:1/0}])}function L6(t,e){const n=F6(P6(t.samples,e,[0,.25,.5,.75,1]));n.length==1&&n.push(n[0]),Rm(t,e,n.map((r,i,o)=>({operator:i==o.length-1?"lte":"lt",operand:r})))}function O6(t,e){return r=>{const i=t(r);if(!(!se(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 P6(t,e,n){const r=My(t.map(e).filter(i=>se(i)&&!isNaN(i)));return n.map(i=>fa(r,i))}function F6(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 z6(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var R6=[].forEach;function j6(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],s=[];R6.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=z6),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 U6(t,e){const n=i=>i.copy().range(Ft(0,i.domain().length)).unknown(-1);let r;switch(e.type){case"quantitative":r=i=>se(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 G6(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 H6(t,e,n=!1){return j6(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const Q6={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 V6(t,e,n,r){const i=Q6[n];return t.filter(o=>i(e(o),r))}function Y6(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 W6(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}const jm="setSamples",Um="sortBy",Gm="retainFirstOfEach",Hm="filterByNominal",Qm="filterByQuantitative",Vm="removeUndefined",Ym="groupByNominal",Wm="groupToQuartiles",_m="groupByThresholds",kr="sampleView";function _6(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",label:"Root",samples:[]}}}function X6(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return Fm({name:kr,initialState:_6(),reducers:{[jm]:(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}},[Um]:(n,r)=>{qi(n,i=>H6(i,U6(e(r.payload,n),t(r.payload.attribute)),!1))},[Gm]:(n,r)=>{qi(n,i=>G6(i,e(r.payload,n)))},[Qm]:(n,r)=>{qi(n,i=>V6(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[Hm]:(n,r)=>{qi(n,i=>Y6(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[Vm]:(n,r)=>{qi(n,i=>W6(i,e(r.payload,n)))},[Ym]:(n,r)=>{Cl(n,i=>zm(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[Wm]:(n,r)=>{Cl(n,i=>L6(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[_m]:(n,r)=>{Cl(n,i=>B6(i,e(r.payload,n),r.payload.thresholds)),n.groupMetadata.push({attribute:r.payload.attribute})}}})}function qi(t,e){for(const n of Xm(t))n.samples=e(n.samples)}function Cl(t,e){for(const n of Xm(t))e(n)}function Xm(t){return Zm(t).map(e=>le(e))}function Sl(t){return t.provenance.present[kr]}function Zm(t){const e=[],n=[],r=i=>{if(e.push(i),Km(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function qm(t){return"samples"in t}function Km(t){return"groups"in t}function*Jm(t){if(yield[t],Km(t))for(const e of t.groups)for(const n of Jm(e))yield[t,...n]}const Z6=ce(".4"),$m={lt:"<",lte:"\u2264",eq:"=",gte:"\u2265",gt:">"};function e1(t){return t.length>1?D`{${t.map((e,n)=>D`${n>0?", ":""}<strong>${e}</strong>`)}}`:D`<strong>${t[0]}</strong>`}function q6(t,e){if(!t.type.startsWith(kr))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>`,s={attributeName:i};switch(t.type.substring(kr.length+1)){case jm:return F(T({},s),{title:"The initial state",icon:YD});case Um:return F(T({},s),{title:"Sort by",provenanceTitle:D`Sort by ${o}`,icon:nM});case Gm:return F(T({},s),{title:D`Retain first sample of each unique <em>${i}</em>`,provenanceTitle:D`Retain first sample of each unique ${o}`,icon:KD});case Hm:{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>`} ${e1(c)}`}`;return F(T({},s),{title:u(D`<em>${i}</em>`),provenanceTitle:u(o),icon:n.remove?Gu:Ui})}case Qm:{const c=u=>D`Retain samples having ${u} <span class="operator">${$m[n.operator]}</span> <strong>${Z6(n.operand)}</strong>`;return F(T({},s),{title:c(D`<em>${i}</em>`),provenanceTitle:c(o),icon:Ui})}case Vm:return F(T({},s),{title:"Remove samples having missing attribute",provenanceTitle:D`Remove samples having missing ${o}`,icon:Gu});case Ym:return F(T({},s),{title:"Group by",provenanceTitle:D`Group by ${o}`,icon:Gi});case Wm:return F(T({},s),{title:"Group by quartiles",provenanceTitle:D`Group by quartiles on ${o}`,icon:Gi});case _m:return F(T({},s),{title:"Group by thresholds",provenanceTitle:D`Group by thresholds {${e1(n.thresholds.map(c=>`${$m[c.operator]} ${c.operand}`))}} on ${o}`,icon:Gi});default:return F(T({},s),{title:JSON.stringify(t),icon:Ag})}}class K6{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 Ws(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function t1(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=>le(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=[];As(s.map(h=>a(h.samples)),e,{spacing:r}).forEach((h,p)=>{c.push({key:s[p].path,locSize:h})});const u=[];for(const[h,p]of s.entries()){const d={grow:1},g=p.samples;As(g.map(m=>d),Math.max(0,c[h].locSize.size-i),{offset:c[h].locSize.location+i}).forEach((m,y)=>{const{size:v,location:w}=m,C=v*.1*zp(15,22,v);m.location=w+C,m.size=v-2*C,u.push({key:g[y],locSize:m})})}function*f(){const h=[];for(const p of c){const d=p.key,g=le(d);for(;h.length<=d.length&&h.length&&d[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=p.locSize.location-y.locSize.location+p.locSize.size}for(let m=h.length;m<d.length;m++)h.push({group:d[m],locSize:T({},p.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,p)=>h.depth-p.depth).map((h,p)=>({key:{index:p,group:h.group,depth:h.depth,n:h.n,attributeLabel:void 0},locSize:h.locSize}));return{samples:u,summaries:c,groups:l}}function J6(t,e){return e.find(n=>pp(n.locSize,t))}const n1="VALUE_AT_LOCUS",r1=10;class El extends pt{constructor(e,n,r,i,o){var u;super(e,n,r,i),this.provenance=o,this.spec=e,this.stickySummaries=(u=e.stickySummaries)!=null?u:!0,this.compositeAttributeInfoSource=new K6,this.child=n.createView(e.spec,this,"sample-facets"),this.summaryViews=new vr({vconcat:[]},n,this,"sampleSummaries"),this.child.visit(f=>{f instanceof Le&&this.summaryViews.children.push(...f.sampleAggregateViews)}),this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new vr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},n,this,"sample-sidebar"),this.groupPanel=new _8(this),this.peripheryView.addChild(this.groupPanel),this.attributePanel=new dm(this),this.peripheryView.addChild(this.attributePanel),this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(Ws(f=>Sl(f).rootGroup,f=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(Ws(f=>Sl(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(n1,f=>{var w;const l=f.specifier,h=this.findDescendantByPath(l.path);let p;if(se(l.locus))p=l.locus;else{const C=this.getScaleResolution("x").getGenome();if(C)p=C.toContinuous(l.locus.chrom,l.locus.pos);else throw new Error("Encountered a complex locus but no genome is available!")}const d=C=>{var b;return(b=h.mark.findDatumAt(C,p))==null?void 0:b[l.field]},[g,m]=Object.entries(h.getEncoding()).find(([C,b])=>"field"in b&&b.field==l.field),y=g?(w=h.getScaleResolution(g))==null?void 0:w.getScale():void 0;return{name:l.field,attribute:f,title:D`<em class="attribute">${l.field}</em> <span class="viewTitle">(${h.spec.title||h.name})</span> at <span class="locus">${i1(l.locus)}</span>`,accessor:d,type:"type"in m?m.type:void 0,scale:y}}),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=pu(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=X6(s);this.provenance.addReducer(a.name,a.reducer),this.provenance.addActionInfoSource(f=>q6(f,s)),this.actions=a.actions;const c=m6(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+r1:0,n=this.child.getEffectivePadding();return this.getPadding().add(new Ze(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}=nD(Kp(this.spec.samples.data,this.getBaseUrl()),new $6);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()[kr]}getLocations(){var e,n,r;if(!this._locations){if(!this._coords)return;const i=this.sampleHierarchy,o=Zm(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=t1(o,{viewHeight:this._coords.height,groupSpacing:5,summaryHeight:a}),u=t1(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 v=0;v<g.length;v++){const w=g[v].key;y.push({key:w,locSize:pS(g[v].locSize,gS(m[v].locSize,f),l)})}return y},p=h(c.groups,u.groups),d=document.createElement("div");p.forEach(g=>{if(g.key.depth==0)return;const m=s[g.key.depth].attribute,y=this.compositeAttributeInfoSource.getAttributeInfo(m).title;y?ie(y)?g.key.attributeLabel=y:(Fe(y,d),g.key.attributeLabel=d.textContent.replace(/\s+/g," ").trim()):g.key.attributeLabel="unknown"}),this._locations={samples:h(c.samples,u.samples),summaries:h(c.summaries,u.summaries),groups:p}}return this._locations}getSampleAt(e){const n=J6(e,this.getLocations().samples);if(n)return this.sampleHierarchy.sampleData.entities[n.key]}getSummaryAt(e){const n=this.getLocations().summaries,r=n.findIndex(i=>pp(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:mS(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+pu(-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=As([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],n.width,{spacing:r1}),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=Li(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)ws(F(T({},n),{to:1,duration:500,easingFunction:$S}));else{const a=c=>(1-Math.pow(c*2-1,2))*.5;ws(F(T({},n),{from:0,to:1,duration:300,easingFunction:a}))}}else ws(F(T({},n),{to:0,duration:400,easingFunction:KS}))}_handleContextMenu(e,n){const r=n.uiEvent,i=e.normalizePoint(n.point.x,n.point.y).x,o=this.getScaleResolution("x").invertToComplex(i),s=uD(this.child).filter(u=>!["sample","x","x2"].includes(u.channel)).filter(u=>["rect","rule"].includes(u.view.getMarkType()));let a=[{label:`Locus: ${i1(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},p=this.compositeAttributeInfoSource.getAttributeInfo({type:n1,specifier:h}),d=f.view.spec.title||f.view.spec.name;d!=c&&(u>0&&a.push({type:"divider"}),a.push({label:d,type:"header"}),c=d),a.push({label:f.field,submenu:Ku(null,p,void 0,this)})}fm({items:a},r)}getSampleFacetTexture(){return this.facetTexture}getDefaultResolution(e,n){switch(e){case"x":case"sample":return"shared";default:return"independent"}}}function i1(t){return!se(t)&&"chrom"in t?QS(t):""+t}class $6 extends oe{constructor(){super(),this.reset()}reset(){this._index=0}handle(e){this._propagate({id:e.sample,displayName:e.displayName||e.sample,indexNumber:this._index++,attributes:e5(e)})}}function e5(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function t5(t){return"samples"in t&&Pe(t.samples)&&"spec"in t&&Pe(t.spec)}const n5=(t,e)=>e.some(n=>t instanceof n);let o1,s1;function r5(){return o1||(o1=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function i5(){return s1||(s1=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const a1=new WeakMap,Dl=new WeakMap,c1=new WeakMap,Ml=new WeakMap,Tl=new WeakMap;function o5(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",s)},o=()=>{n(ln(t.result)),i()},s=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",s)});return e.then(n=>{n instanceof IDBCursor&&a1.set(n,t)}).catch(()=>{}),Tl.set(e,t),e}function s5(t){if(Dl.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)});Dl.set(t,e)}let Il={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return Dl.get(t);if(e==="objectStoreNames")return t.objectStoreNames||c1.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return ln(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 a5(t){Il=t(Il)}function c5(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(Nl(this),e,...n);return c1.set(r,e.sort?e.sort():[e]),ln(r)}:i5().includes(t)?function(...e){return t.apply(Nl(this),e),ln(a1.get(this))}:function(...e){return ln(t.apply(Nl(this),e))}}function u5(t){return typeof t=="function"?c5(t):(t instanceof IDBTransaction&&s5(t),n5(t,r5())?new Proxy(t,Il):t)}function ln(t){if(t instanceof IDBRequest)return o5(t);if(Ml.has(t))return Ml.get(t);const e=u5(t);return e!==t&&(Ml.set(t,e),Tl.set(e,t)),e}const Nl=t=>Tl.get(t);function l5(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const s=indexedDB.open(t,e),a=ln(s);return r&&s.addEventListener("upgradeneeded",c=>{r(ln(s.result),c.oldVersion,c.newVersion,ln(s.transaction))}),n&&s.addEventListener("blocked",()=>n()),a.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),a}const f5=["get","getKey","getAll","getAllKeys","count"],h5=["put","add","delete","clear"],kl=new Map;function u1(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(kl.get(e))return kl.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=h5.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||f5.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 kl.set(e,o),o}a5(t=>F(T({},t),{get:(e,n,r)=>u1(e,n)||t.get(e,n,r),has:(e,n)=>!!u1(e,n)||t.has(e,n)}));class l1{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 Ki="bookmarks";class d5 extends l1{constructor(e){super(),this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=l5(e,1,{upgrade(n,r,i,o){n.createObjectStore(Ki,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}isReadonly(){return!1}async put(e,n){const i=(await this._getDB()).transaction(Ki,"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(Ki,e)}async getNames(){return(await this._getDB()).getAllKeys(Ki)}async get(e){return(await this._getDB()).get(Ki,e)}}/**
|
2134
|
+
*/const h6=Hr(class extends uo{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}}),_1="close-dialog";function p6(){return new CustomEvent(_1,{bubbles:!0})}function Wr(t="default",e=document.body){const n=document.createElement("div");n.classList.add("gs-modal"),t!="default"&&n.classList.add(t);const r=o=>{var a;switch(o.key){case"Escape":{const s=n.querySelector(".btn-cancel");s&&(s.click(),o.stopPropagation());break}case"Enter":{if(((a=o.target)==null?void 0:a.tagName)=="TEXTAREA")return;n.querySelector(".btn-primary").click(),o.stopPropagation();break}}};n.addEventListener("keydown",r),Ge(D`<div class="backdrop"></div><div class="content"></div>`,n);const i=()=>{n.querySelector(".backdrop").addEventListener("transitionend",()=>n.remove()),n.classList.remove("visible"),document.body.classList.remove(Gn)};return n.addEventListener("keydown",o=>{o.stopPropagation()}),n.addEventListener(_1,i),e.appendChild(n),window.requestAnimationFrame(()=>n.classList.add("visible")),t!="tour"&&document.body.classList.add(Gn),{content:n.querySelector(".content"),close:i}}function Ye(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>`;Ge(c,n.content)})}function m6(t,e){var n,r;nn((n=t.scale)==null?void 0:n.type)?g6(t,e):Ue((r=t.scale)==null?void 0:r.type)?y6(t,e):Ye("Not implemented (yet).")}function g6(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(lo).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="${h6({backgroundColor:f(h).toString()})}"></span> <input type="checkbox" .value="${h}"> ${h}</label></li>`)}</ul>`;function d(){Ge(D`${o}<div class="modal-body">${l}</div>${u()}`,i.content)}d(),i.content.querySelector(".gs-checkbox-list input[type='checkbox']").focus()}function y6(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(lo).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(v6).map(([h,p])=>D`<option .value="${h}">${p}</option>`)}</select> <input type="number" placeholder="Please enter a numeric value" @input="${f}"></div>`;function d(){Ge(D`${a}<div class="modal-body">${l}</div>${c()}`,o.content)}d(),o.content.querySelector("select").focus()}const v6={lt:"less than",lte:"less than or equal to",eq:"equal to",gte:"greater than or equal to",gt:"greater than"};function b6(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="${!A6(r)}" @click="${()=>a()}">${ne(fo).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(){Ge(D`${o}<div class="modal-body">${f}</div>${s()}`,i.content)}l(),i.content.querySelector("select").focus()}function A6(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:fo,label:"Group by thresholds...",callback:()=>b6(e,r)}),x6(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:lo,label:"Advanced filter...",callback:()=>m6(e,r)}),s}function x6(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function w6(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var yn={},or={};Object.defineProperty(or,"__esModule",{value:!0}),or.ActionCreators=or.ActionTypes=void 0;var ar={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"};or.ActionTypes=ar;var C6={undo:function(){return{type:ar.UNDO}},redo:function(){return{type:ar.REDO}},jumpToFuture:function(e){return{type:ar.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:ar.JUMP_TO_PAST,index:e}},jump:function(e){return{type:ar.JUMP,index:e}},clearHistory:function(){return{type:ar.CLEAR_HISTORY}}};or.ActionCreators=C6;var xt={};Object.defineProperty(xt,"__esModule",{value:!0}),xt.parseActions=xs,xt.isHistory=S6,xt.includeAction=E6,xt.excludeAction=D6,xt.combineFilters=M6,xt.groupByActionTypes=T6,xt.newHistory=I6;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 S6(t){return typeof t.present!="undefined"&&typeof t.future!="undefined"&&typeof t.past!="undefined"&&Array.isArray(t.future)&&Array.isArray(t.past)}function E6(t){var e=xs(t);return function(n){return e.indexOf(n.type)>=0}}function D6(t){var e=xs(t);return function(n){return e.indexOf(n.type)<0}}function M6(){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 T6(t){var e=xs(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function I6(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 W1={},Xr={};Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.set=R6,Xr.start=P6,Xr.end=F6,Xr.log=z6;function wt(t){return L6(t)||N6(t)||k6()}function k6(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function N6(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function L6(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,nt,hf={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function B6(){nt={header:[],prev:[],action:[],next:[],msgs:[]}}function O6(){var t=nt,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 P6(t,e){B6(),ws&&(console.group?(nt.header=["%credux-undo","font-style: italic","action",t.type],nt.action=pf("action",hf.action,t),nt.prev=pf("prev history",hf.prevState,e)):(nt.header=["redux-undo action",t.type],nt.action=["action",t],nt.prev=["prev history",e]))}function F6(t){ws&&(console.group?nt.next=pf("next history",hf.nextState,t):nt.next=["next history",t],O6())}function z6(){if(ws){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];nt.msgs=nt.msgs.concat([].concat(e,[`
|
2135
|
+
`]))}}function R6(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=or,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 y(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 g(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?y(b,v-1):v<0?g(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=g(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=y(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 We=typeof w.filter=="function"&&!w.filter(I,W,P);if(We){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 Vs=(0,i.newHistory)(P.past,W,P.future,P.group);return n.log("groupBy grouped the action with the previous action"),n.end(Vs),Vs}return P=m(P,W,w.limit,jo),n.log("inserted new state into history"),n.end(P),P}}}})(W1),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=or,n=xt,r=i(W1);function i(o){return o&&o.__esModule?o:{default:o}}}(yn);var j6=w6(yn);function mf(t){return t.split("-")[0]}function X1(t){return t.split("-")[1]}function Z1(t){return["top","bottom"].includes(mf(t))?"x":"y"}function q1(t){return t==="y"?"height":"width"}function K1(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=Z1(e),c=q1(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(X1(e)){case"start":d[s]-=u*(n&&l?-1:1);break;case"end":d[s]+=u*(n&&l?-1:1);break}return d}const U6=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}=K1(c,r,s),l=r,d={};for(let h=0;h<o.length;h++){const{name:p,fn:m}=o[h],{x:y,y:g,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=y!=null?y:u,f=g!=null?g: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}=K1(c,l,s)),h=-1;continue}}return{x:u,y:f,placement:l,strategy:i,middlewareData:d}};function G6(t){return T({top:0,right:0,bottom:0,left:0},t)}function H6(t){return typeof t!="number"?G6(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 Q6(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=H6(h),y=s[d?l==="floating"?"reference":"floating":l],g=Cs(await o.getClippingRect({element:(n=await(o.isElement==null?void 0:o.isElement(y)))==null||n?y:y.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:g.top-x.top+p.top,bottom:x.bottom-g.bottom+p.bottom,left:g.left-x.left+p.left,right:x.right-g.right+p.right}}const V6={left:"right",right:"left",bottom:"top",top:"bottom"};function Ss(t){return t.replace(/left|right|bottom|top/g,e=>V6[e])}function Y6(t,e,n){n===void 0&&(n=!1);const r=X1(t),i=Z1(t),o=q1(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 _6={start:"end",end:"start"};function J1(t){return t.replace(/start|end/g,e=>_6[e])}function W6(t){const e=Ss(t);return[J1(t),e,J1(e)]}const X6=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=j2(k,["mainAxis","crossAxis","fallbackPlacements","fallbackStrategy","flipAlignment"]),m=mf(r),g=l||(m===a||!h?[Ss(a)]:W6(a)),x=[a,...g],A=await Q6(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}=Y6(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 $1(t){return t&&t.document&&t.location&&t.alert&&t.setInterval}function Ht(t){if(t==null)return window;if(!$1(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function vo(t){return Ht(t).getComputedStyle(t)}function Qt(t){return $1(t)?"":t?(t.nodeName||"").toLowerCase():""}function ey(){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 Z6(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}=vo(t);return/auto|scroll|overlay|hidden/.test(e+r+n)}function q6(t){return["table","td","th"].includes(Qt(t))}function ty(t){const e=/firefox/i.test(ey()),n=vo(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 ny(){return!/^((?!chrome|android).)*safari/i.test(ey())}const ry=Math.min,bo=Math.max,Ds=Math.round;function sr(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=!ny()&&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((Z6(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 iy(t){return sr(vn(t)).left+Ms(t).scrollLeft}function K6(t){const e=sr(t);return Ds(e.width)!==t.offsetWidth||Ds(e.height)!==t.offsetHeight}function J6(t,e,n){const r=Ct(e),i=vn(e),o=sr(t,r&&K6(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=sr(e,!0);s.x=c.x+e.clientLeft,s.y=c.y+e.clientTop}else i&&(s.x=iy(i));return{x:o.left+a.scrollLeft-s.x,y:o.top+a.scrollTop-s.y,width:o.width,height:o.height}}function oy(t){return Qt(t)==="html"?t:t.assignedSlot||t.parentNode||(gf(t)?t.host:null)||vn(t)}function ay(t){return!Ct(t)||getComputedStyle(t).position==="fixed"?null:t.offsetParent}function $6(t){let e=oy(t);for(gf(e)&&(e=e.host);Ct(e)&&!["html","body"].includes(Qt(e));){if(ty(e))return e;e=e.parentNode}return null}function yf(t){const e=Ht(t);let n=ay(t);for(;n&&q6(n)&&getComputedStyle(n).position==="static";)n=ay(n);return n&&(Qt(n)==="html"||Qt(n)==="body"&&getComputedStyle(n).position==="static"&&!ty(n))?e:n||$6(t)||e}function sy(t){if(Ct(t))return{width:t.offsetWidth,height:t.offsetHeight};const e=sr(t);return{width:e.width,height:e.height}}function eI(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=sr(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 tI(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=ny();(u||!u&&e==="fixed")&&(s=i.offsetLeft,c=i.offsetTop)}return{width:o,height:a,x:s,y:c}}function nI(t){var e;const n=vn(t),r=Ms(t),i=(e=t.ownerDocument)==null?void 0:e.body,o=bo(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=bo(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0);let s=-r.scrollLeft+iy(t);const c=-r.scrollTop;return vo(i||n).direction==="rtl"&&(s+=bo(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:c}}function cy(t){const e=oy(t);return["html","body","#document"].includes(Qt(e))?t.ownerDocument.body:Ct(e)&&Es(e)?e:cy(e)}function uy(t,e){var n;e===void 0&&(e=[]);const r=cy(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(uy(a))}function rI(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 iI(t,e){const n=sr(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 ly(t,e,n){return e==="viewport"?Cs(tI(t,n)):Zr(e)?iI(e,n):Cs(nI(vn(t)))}function oI(t){const e=uy(t),r=["absolute","fixed"].includes(vo(t).position)&&Ct(t)?yf(t):t;return Zr(r)?e.filter(i=>Zr(i)&&rI(i,r)&&Qt(i)!=="body"):[]}function aI(t){let{element:e,boundary:n,rootBoundary:r,strategy:i}=t;const a=[...n==="clippingAncestors"?oI(e):[].concat(n),r],s=a[0],c=a.reduce((u,f)=>{const l=ly(e,f,i);return u.top=bo(l.top,u.top),u.right=ry(l.right,u.right),u.bottom=ry(l.bottom,u.bottom),u.left=bo(l.left,u.left),u},ly(e,s,i));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}}const sI={getClippingRect:aI,convertOffsetParentRelativeRectToViewportRelativeRect:eI,isElement:Zr,getDimensions:sy,getOffsetParent:yf,getDocumentElement:vn,getElementRects:t=>{let{reference:e,floating:n,strategy:r}=t;return{reference:J6(e,yf(n),r),floating:U(T({},sy(n)),{x:0,y:0})}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>vo(t).direction==="rtl"},cI=(t,e,n)=>U6(t,e,T({platform:sI},n));let St;const Ao=[],vf=ss(t=>t(),150,!1);function xo(t){if((t==null?void 0:t.type)=="contextmenu"){t.preventDefault();return}St&&(St.remove(),St=void 0,document.body.classList.remove(Gn))}function fy(t){var e;if(!(t<1)){for(let n=t;n<Ao.length;n++)(e=Ao[n])==null||e.remove(),Ao[n]=void 0;for(const n of Ao[t-1].querySelectorAll("li.active"))n.classList.remove("active")}}const uI=()=>D`<li class="menu-divider"></li>`,lI=t=>D`<li class="menu-header">${t.label||"-"}</li>`,fI=(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");pI(t.submenu,r,e+1),n.stopPropagation()})}" @mouseleave="${()=>vf(()=>fy(e+1))}"><span>${t.label}</span></a></li>`,dI=t=>D`<li><a @mouseup="${()=>{xo(),t.callback()}}">${t.icon?ne(t.icon).node[0]:""} ${t.label}</a> ${t.ellipsisCallback?D`<a class="menu-ellipsis" @click="${t.ellipsisCallback}">${ne(A5).node[0]}</a>`:G}</li>`,hI=t=>D`<li><span class="disabled-item">${t.icon?ne(t.icon).node[0]:""} ${t.label||"-"}</span></li>`;function dy(t,e=1){switch(t.type){case"divider":return uI();case"header":return lI(t);default:return t.submenu?fI(t,e):t.callback?dI(t):hI(t)}}function pI(t,e,n){hy(t,e,n,"right-start"),e.classList.add("active")}function hy(t,e,n,r){const i=document.createElement("ul");i.classList.add("gs-context-menu"),i.addEventListener("mouseenter",()=>{vf(()=>{})}),Ge(t.map(o=>dy(o,n)),i),St.appendChild(i),fy(n),Ao[n]=i,cI(e,i,{placement:r!=null?r:"right-start",middleware:[X6()]}).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 py(t,e,n){n!=null||(n="bottom-start"),xo();const r=performance.now(),i=document.body;St=document.createElement("div"),St.classList.add("gs-context-menu-backdrop"),St.addEventListener("click",xo),St.addEventListener("contextmenu",xo),St.addEventListener("mouseup",()=>{performance.now()-r>500&&xo()},{once:!0}),i.appendChild(St),document.body.classList.add(Gn),hy(t.items,e,0,n)}function my(t,e){py(t,mI(e),"right-start"),e.preventDefault()}function mI(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",gy="SAMPLE_NAME",gI=/^attribute-(.*)$/;class yy 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(gy,n=>vy),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)}),He([...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:$m,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>`,vy,i.id,this.sampleView));my({items:o},r)}_setSamples(e){if(this.childCount)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;Dg(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(vI(),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),Tg(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 yI(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(gI);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)=>bI(c)?this.getAttributeInfo(s).scale(c):"transparent",a=D`<table class="attributes">${Object.entries(i.attributes).map(([s,c])=>D`<tr class="${t5({hovered:s==r})}"><th>${s}</th><td>${Fg(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 yI(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 vI(){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 bI(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const vy=Object.freeze({name:"sample",attribute:{type:gy},accessor:t=>t,type:"identifier",scale:void 0});class AI 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,color:"#e8e8e8"}},{mark:{type:"text",clip:!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(),He([...this.getAncestors()]).visit(a=>to(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)===II}(t)||Array.isArray(t)||!!t[Ty]||!!t.constructor[Ty]||Af(t)||xf(t))}function cr(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 xI(t,e){return qr(t)===2?t.get(e):t[e]}function by(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 Ay(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function Af(t){return MI&&t instanceof Map}function xf(t){return TI&&t instanceof Set}function ur(t){return t.o||t.t}function wf(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=Iy(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=wI),Object.freeze(t),e&&cr(t,function(n,r){return Cf(r,!0)},!0)),t}function wI(){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 CI(t,e){Bf[t]||(Bf[t]=e)}function Ef(){return wo}function Df(t,e){e&&(Et("Patches"),t.u=[],t.s=[],t.v=e)}function Is(t){Mf(t),t.p.forEach(SI),t.p=null}function Mf(t){t===wo&&(wo=t.l)}function xy(t){return wo={p:[],l:wo,h:t,m:!0,_:0}}function SI(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!==My?t:void 0}function ks(t,e,n){if(Sf(e))return e;var r=e[ae];if(!r)return cr(e,function(o,a){return wy(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;cr(r.i===3?new Set(i):i,function(o,a){return wy(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 wy(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(by(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?ur(n):t)[e]}function Cy(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=Co;a&&(c=[s],u=So);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 EI(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=Sy(n,o),i.I=!1}else r=Sy(n,o);return cr(r,function(a,s){i&&xI(i.t,a)===s||by(r,a,e(s))}),o===3?new Set(r):r}(t)}function Sy(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return wf(t)}function DI(){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 Co.get(c,o)},set:function(c){var u=this[ae];Co.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:!Ay(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={};CI("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=Iy(l);delete p[ae];for(var m=Jr(p),y=0;y<m.length;y++){var g=m[y];p[g]=t(g,f||!!p[g].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)cr(d,function(A){A!==ae&&(l[A]!==void 0||Kr(l,A)?h[A]||c(d[A]):(h[A]=!0,xn(f)))}),cr(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 y=l.length;y<d.length;y++)h[y]=!0;for(var g=Math.min(d.length,l.length),x=0;x<g;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 Ey,wo,Lf=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",MI=typeof Map!="undefined",TI=typeof Set!="undefined",Dy=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",My=Lf?Symbol.for("immer-nothing"):((Ey={})["immer-nothing"]=!0,Ey),Ty=Lf?Symbol.for("immer-draftable"):"__$immer_draftable",ae=Lf?Symbol.for("immer-state"):"__$immer_state",II=""+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,Iy=Object.getOwnPropertyDescriptors||function(t){var e={};return Jr(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},Bf={},Co={get:function(t,e){if(e===ae)return t;var n=ur(t);if(!Kr(n,e))return function(i,o,a){var s,c=Cy(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 ur(t)},ownKeys:function(t){return Reflect.ownKeys(ur(t))},set:function(t,e,n){var r=Cy(ur(t),e);if(r!=null&&r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=If(ur(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(Ay(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=ur(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)}},So={};cr(Co,function(t,e){So[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),So.deleteProperty=function(t,e){return So.set.call(this,t,e,void 0)},So.set=function(t,e,n){return Co.set.call(this,t[0],e,n,t[0])};var kI=function(){function t(n){var r=this;this.g=Dy,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 y=this;m===void 0&&(m=s);for(var g=arguments.length,x=Array(g>1?g-1:0),A=1;A<g;A++)x[A-1]=arguments[A];return c.produce(m,function(C){var b;return(b=o).call.apply(b,[y,C].concat(x))})}}var u;if(typeof o!="function"&&dt(6),a!==void 0&&typeof a!="function"&&dt(7),An(i)){var f=xy(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===My&&(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=EI(n));var r=xy(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&&!Dy&&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}(),_e=new kI,NI=_e.produce;_e.produceWithPatches.bind(_e),_e.setAutoFreeze.bind(_e),_e.setUseProxies.bind(_e),_e.applyPatches.bind(_e),_e.createDraft.bind(_e),_e.finishDraft.bind(_e);var Ls=NI;function LI(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function ky(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 Ny(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?ky(Object(n),!0).forEach(function(r){LI(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ky(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Ie(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 Ly=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 BI(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 By(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(Ie(0));if(typeof e=="function"&&typeof n=="undefined"&&(n=e,e=void 0),typeof n!="undefined"){if(typeof n!="function")throw new Error(Ie(1));return n(By)(t,e)}if(typeof t!="function")throw new Error(Ie(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(Ie(3));return o}function l(m){if(typeof m!="function")throw new Error(Ie(4));if(c)throw new Error(Ie(5));var y=!0;return u(),s.push(m),function(){if(!!y){if(c)throw new Error(Ie(6));y=!1,u();var x=s.indexOf(m);s.splice(x,1),a=null}}}function d(m){if(!BI(m))throw new Error(Ie(7));if(typeof m.type=="undefined")throw new Error(Ie(8));if(c)throw new Error(Ie(9));try{c=!0,o=i(o,m)}finally{c=!1}for(var y=a=s,g=0;g<y.length;g++){var x=y[g];x()}return m}function h(m){if(typeof m!="function")throw new Error(Ie(10));i=m,d({type:Bs.REPLACE})}function p(){var m,y=l;return m={subscribe:function(x){if(typeof x!="object"||x===null)throw new Error(Ie(11));function A(){x.next&&x.next(f())}A();var C=y(A);return{unsubscribe:C}}},m[Ly]=function(){return this},m}return d({type:Bs.INIT}),r={dispatch:d,subscribe:l,getState:f,replaceReducer:h},r[Ly]=p,r}function OI(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(Ie(12));if(typeof n(void 0,{type:Bs.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error(Ie(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{OI(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],y=p(m,u);if(typeof y=="undefined")throw u&&u.type,new Error(Ie(14));l[h]=y,f=f||y!==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 PI(){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(Ie(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),Ny(Ny({},i),{},{dispatch:o})}}}var Ps="NOT_FOUND";function FI(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 zI(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 RI=function(e,n){return e===n};function jI(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 UI(t,e){var n=typeof e=="object"?e:{equalityCheck:e},r=n.equalityCheck,i=r===void 0?RI:r,o=n.maxSize,a=o===void 0?1:o,s=n.resultEqualityCheck,c=jI(i),u=a===1?FI(c):zI(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 GI(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 HI(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,y=Array.isArray(m)?m:[m],g=GI(s),x=t.apply(void 0,[function(){return u++,d.apply(null,arguments)}].concat(y)),A=t(function(){for(var C=[],b=g.length,v=0;v<b;v++)C.push(g[v].apply(null,arguments));return f=x.apply(null,C),f});return Object.assign(A,{resultFunc:d,memoizedResultFunc:x,dependencies:g,lastResult:function(){return f},recomputations:function(){return u},resetRecomputations:function(){return u=0}}),A};return i}var QI=HI(UI);function Oy(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 Py=Oy();Py.withExtraArgument=Oy;var Fy=Py,VI=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},YI=Object.defineProperty,zy=Object.getOwnPropertySymbols,_I=Object.prototype.hasOwnProperty,WI=Object.prototype.propertyIsEnumerable,Ry=function(t,e,n){return e in t?YI(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Eo=function(t,e){for(var n in e||(e={}))_I.call(e,n)&&Ry(t,n,e[n]);if(zy)for(var r=0,i=zy(e);r<i.length;r++){var n=i[r];WI.call(e,n)&&Ry(t,n,e[n])}return t},XI=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 ZI(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 qI=function(t){VI(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 KI(t){return typeof t=="boolean"}function JI(){return function(e){return $I(e)}}function $I(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new qI;return n&&(KI(n)?r.push(Fy):r.push(Fy.withExtraArgument(n.extraArgument))),r}var e9=!0;function t9(t){var e=JI(),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(ZI(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=PI.apply(void 0,p),y=Os;c&&(y=XI(Eo({trace:!e9},typeof c=="object"&&c)));var g=[m];Array.isArray(d)?g=Fs([m],d):typeof d=="function"&&(g=d(g));var x=y.apply(void 0,g);return By(h,f,x)}function Do(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 Eo(Eo({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 jy(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 n9(t){return typeof t=="function"}function r9(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?jy(e):[e,n,r],o=i[0],a=i[1],s=i[2],c;if(n9(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 y=p,g=m(y,d);return typeof g=="undefined"?p:g}else{if(An(p))return Ls(p,function(x){return m(x,d)});var g=m(p,d);if(typeof g=="undefined"){if(p===null)return p;throw Error("A case reducer on a non-draftable value must not return undefined")}return g}return p},l)}return f.getInitialState=c,f}function i9(t,e){return t+"/"+e}function Uy(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=i9(e,f),h,p;"reducer"in l?(h=l.reducer,p=l.prepare):h=l,o[f]=h,a[d]=h,s[f]=p?Do(d,p):Do(d)});function c(){var f=typeof t.extraReducers=="function"?jy(t.extraReducers):[t.extraReducers],l=f[0],d=l===void 0?{}:l,h=f[1],p=h===void 0?[]:h,m=f[2],y=m===void 0?void 0:m,g=Eo(Eo({},d),a);return r9(n,g,p,y)}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";Do(Ff+"/add"),Do(Ff+"/removeAll"),Do(Ff+"/remove"),DI();function Gy(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=oi(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 Hy(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();Gy(t,s9(e,n.slice(1,n.length-1)),o,o.map(i))}function o9(t,e,n){Hy(t,e,[{operator:"lt",operand:-1/0},...n,{operator:"lte",operand:1/0}])}function a9(t,e){const n=u9(c9(t.samples,e,[0,.25,.5,.75,1]));n.length==1&&n.push(n[0]),Hy(t,e,n.map((r,i,o)=>({operator:i==o.length-1?"lte":"lt",operand:r})))}function s9(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 c9(t,e,n){const r=zv(t.map(e).filter(i=>le(i)&&!isNaN(i)));return n.map(i=>sc(r,i))}function u9(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 l9(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var f9=[].forEach;function d9(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],a=[];f9.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=l9),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 h9(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 p9(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 m9(t,e,n=!1){return d9(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const g9={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 y9(t,e,n,r){const i=g9[n];return t.filter(o=>i(e(o),r))}function v9(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 b9(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}const Qy="setSamples",Vy="sortBy",Yy="retainFirstOfEach",_y="filterByNominal",Wy="filterByQuantitative",Xy="removeUndefined",Zy="groupByNominal",qy="groupToQuartiles",Ky="groupByThresholds",$r="sampleView";function A9(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",label:"Root",samples:[]}}}function x9(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return Uy({name:$r,initialState:A9(),reducers:{[Qy]:(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}},[Vy]:(n,r)=>{Mo(n,i=>m9(i,h9(e(r.payload,n),t(r.payload.attribute)),!1))},[Yy]:(n,r)=>{Mo(n,i=>p9(i,e(r.payload,n)))},[Wy]:(n,r)=>{Mo(n,i=>y9(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[_y]:(n,r)=>{Mo(n,i=>v9(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[Xy]:(n,r)=>{Mo(n,i=>b9(i,e(r.payload,n)))},[Zy]:(n,r)=>{zf(n,i=>Gy(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[qy]:(n,r)=>{zf(n,i=>a9(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[Ky]:(n,r)=>{zf(n,i=>o9(i,e(r.payload,n),r.payload.thresholds)),n.groupMetadata.push({attribute:r.payload.attribute})}}})}function Mo(t,e){for(const n of Jy(t))n.samples=e(n.samples)}function zf(t,e){for(const n of Jy(t))e(n)}function Jy(t){return $y(t).map(e=>He(e))}function Rf(t){return t.provenance.present[$r]}function $y(t){const e=[],n=[],r=i=>{if(e.push(i),t2(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function e2(t){return"samples"in t}function t2(t){return"groups"in t}function*n2(t){if(yield[t],t2(t))for(const e of t.groups)for(const n of n2(e))yield[t,...n]}const w9=he(".4"),r2={lt:"<",lte:"\u2264",eq:"=",gte:"\u2265",gt:">"};function i2(t){return t.length>1?D`{${t.map((e,n)=>D`${n>0?", ":""}<strong>${e}</strong>`)}}`:D`<strong>${t[0]}</strong>`}function C9(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 Qy:return U(T({},a),{title:"The initial state",icon:l5});case Vy:return U(T({},a),{title:"Sort by",provenanceTitle:D`Sort by ${o}`,icon:r5});case Yy: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:E5});case _y:{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>`} ${i2(c)}`}`;return U(T({},a),{title:u(D`<em>${i}</em>`),provenanceTitle:u(o),icon:n.remove?Fl:lo})}case Wy:{const c=u=>D`Retain samples having ${u} <span class="operator">${r2[n.operator]}</span> <strong>${w9(n.operand)}</strong>`;return U(T({},a),{title:c(D`<em>${i}</em>`),provenanceTitle:c(o),icon:lo})}case Xy:return U(T({},a),{title:"Remove samples having missing attribute",provenanceTitle:D`Remove samples having missing ${o}`,icon:Fl});case Zy:return U(T({},a),{title:"Group by",provenanceTitle:D`Group by ${o}`,icon:fo});case qy:return U(T({},a),{title:"Group by quartiles",provenanceTitle:D`Group by quartiles on ${o}`,icon:fo});case Ky:return U(T({},a),{title:"Group by thresholds",provenanceTitle:D`Group by thresholds {${i2(n.thresholds.map(c=>`${r2[c.operator]} ${c.operand}`))}} on ${o}`,icon:fo});default:return U(T({},a),{title:JSON.stringify(t),icon:_g})}}class S9{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 o2(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=>He(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=[];oo(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;oo(m.map(y=>p),Math.max(0,c[d].locSize.size-i),{offset:c[d].locSize.location+i}).forEach((y,g)=>{const{size:x,location:A}=y,C=x*.1*ig(15,22,x);y.location=A+C,y.size=x-2*C,u.push({key:m[g],locSize:y})})}function*f(){const d=[];for(const h of c){const p=h.key,m=He(p);for(;d.length<=p.length&&d.length&&p[d.length-1]!=d[d.length-1].group;)yield d.pop();for(let y=0;y<d.length;y++){const g=d[y];g.locSize.size=h.locSize.location-g.locSize.location+h.locSize.size}for(let y=d.length;y<p.length;y++)d.push({group:p[y],locSize:T({},h.locSize),depth:d.length,n:0});for(const y of d)y.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 E9(t,e){return e.find(n=>zm(n.locSize,t))}const a2="VALUE_AT_LOCUS",s2=10;class jf extends $n{constructor(n,r,i,o,a){var f;super(n,r,i,o);ke(this,Qs);this.provenance=a,this.spec=n,this.stickySummaries=(f=n.stickySummaries)!=null?f:!0,this.compositeAttributeInfoSource=new S9,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 AI(this),this.attributePanel=new yy(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(a2,l=>{var C,b;const d=l.specifier,h=this.findDescendantByName(d.view);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]},[y,g]=Object.entries(h.getEncoding()).find(([v,w])=>"field"in w&&w.field==d.field),x=y?(C=h.getScaleResolution(y))==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">${c2(d.locus)}</span>`,accessor:m,type:"type"in g?g.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=x9(s);this.provenance.addReducer(c.name,c.reducer),this.provenance.addActionInfoSource(l=>C9(l,s)),this.actions=c.actions;const u=QI(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+=s2),new tt(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}=b8(Cg(this.spec.samples.data,this.getBaseUrl()),new D9);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=$y(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=o2(s,{viewHeight:this.childCoords.height,groupSpacing:5,summaryHeight:u}),l=o2(s,{sampleHeight:35,groupSpacing:15,summaryHeight:u}),d=()=>-this._scrollOffset,h=()=>this._peekState;this._scrollableLocations=l,this._scrollableHeight=l.summaries.map(g=>g.locSize.location+g.locSize.size).reduce((g,x)=>Math.max(g,x),0);const p=(g,x)=>{const A=[];for(let C=0;C<g.length;C++){const b=g[C].key;A.push({key:b,locSize:ED(g[C].locSize,DD(x[C].locSize,d),h)})}return A},m=p(f.groups,l.groups),y=document.createElement("div");m.forEach(g=>{if(g.key.depth==0)return;const x=c[g.key.depth].attribute,A=this.compositeAttributeInfoSource.getAttributeInfo(x).title;A?re(A)?g.key.attributeLabel=A:(Ge(A,y),g.key.attributeLabel=y.textContent.replace(/\s+/g," ").trim()):g.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=E9(n,this.getLocations().samples);if(r)return this.sampleHierarchy.sampleData.entities[r.key]}getSummaryAt(n){const r=this.getLocations().summaries,i=r.findIndex(o=>zm(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:MD(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=oo([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],r.width,{spacing:s2}),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=ro(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:lM}));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:cM}))}_handleContextMenu(n,r){var l;const i=r.uiEvent,o=this.childCoords.normalizePoint(r.point.x,r.point.y).x,a=this.getScaleResolution("x").invertToComplex(o),s=kg([...this.getAncestors()].at(-1)),c=S8(this.child).filter(d=>!["sample","x","x2"].includes(d.channel)).filter(d=>["rect","rule"].includes(d.view.getMarkType())).filter(d=>s.has(d.view.name));let u=[{label:`Locus: ${c2(a)}`,type:"header"},{type:"divider"}],f="";for(const[d,h]of c.entries()){const p={view:h.view.name,field:h.field,locus:a},m=this.compositeAttributeInfoSource.getAttributeInfo({type:a2,specifier:p}),y=(l=h.view.getTitleText())!=null?l:h.view.spec.name;y!=f&&(d>0&&u.push({type:"divider"}),u.push({label:y,type:"header"}),f=y),u.push({label:h.field,submenu:df(null,m,void 0,this)})}my({items:u},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),pg(n,this.childCoords,r=>xe(this,Qs,Y2).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"}}}Qs=new WeakSet,Y2=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 c2(t){return!le(t)&&"chrom"in t?eM(t):""+t}class D9 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:M9(e)})}}function M9(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function T9(t){return"samples"in t&&je(t.samples)&&"spec"in t&&je(t.spec)}const I9=(t,e)=>e.some(n=>t instanceof n);let u2,l2;function k9(){return u2||(u2=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function N9(){return l2||(l2=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const f2=new WeakMap,Uf=new WeakMap,d2=new WeakMap,Gf=new WeakMap,Hf=new WeakMap;function L9(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&&f2.set(n,t)}).catch(()=>{}),Hf.set(e,t),e}function B9(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||d2.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 O9(t){Qf=t(Qf)}function P9(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(Vf(this),e,...n);return d2.set(r,e.sort?e.sort():[e]),wn(r)}:N9().includes(t)?function(...e){return t.apply(Vf(this),e),wn(f2.get(this))}:function(...e){return wn(t.apply(Vf(this),e))}}function F9(t){return typeof t=="function"?P9(t):(t instanceof IDBTransaction&&B9(t),I9(t,k9())?new Proxy(t,Qf):t)}function wn(t){if(t instanceof IDBRequest)return L9(t);if(Gf.has(t))return Gf.get(t);const e=F9(t);return e!==t&&(Gf.set(t,e),Hf.set(e,t)),e}const Vf=t=>Hf.get(t);function z9(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 R9=["get","getKey","getAll","getAllKeys","count"],j9=["put","add","delete","clear"],Yf=new Map;function h2(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=j9.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||R9.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}O9(t=>U(T({},t),{get:(e,n,r)=>h2(e,n)||t.get(e,n,r),has:(e,n)=>!!h2(e,n)||t.has(e,n)}));class p2{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 To="bookmarks";class U9 extends p2{constructor(e){super(),this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=z9(e,1,{upgrade(n,r,i,o){n.createObjectStore(To,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}isReadonly(){return!1}async put(e,n){const i=(await this._getDB()).transaction(To,"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(To,e)}async getNames(){return(await this._getDB()).getAllKeys(To)}async get(e){return(await this._getDB()).get(To,e)}}/**
|
1834
2136
|
* @license
|
1835
2137
|
* Copyright 2020 Google LLC
|
1836
2138
|
* SPDX-License-Identifier: BSD-3-Clause
|
1837
|
-
*/const
|
2139
|
+
*/const G9=t=>t===null||typeof t!="object"&&typeof t!="function",m2=t=>t.strings===void 0,H9={},Q9=(t,e=H9)=>t._$AH=e;/**
|
1838
2140
|
* @license
|
1839
2141
|
* Copyright 2017 Google LLC
|
1840
2142
|
* SPDX-License-Identifier: BSD-3-Clause
|
1841
|
-
*/const
|
2143
|
+
*/const Io=(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),Io(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)},g2=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),_9(e)}};function V9(t){this._$AN!==void 0?(Rs(this),this._$AM=t,g2(this)):this._$AM=t}function Y9(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++)Io(r[o],!1),Rs(r[o]);else r!=null&&(Io(r,!1),Rs(r));else Io(this,t)}const _9=t=>{var e,n,r,i;t.type==zt.CHILD&&((e=(r=t)._$AP)!==null&&e!==void 0||(r._$AP=Y9),(n=(i=t)._$AQ)!==null&&n!==void 0||(i._$AQ=V9))};class y2 extends uo{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,n,r){super._$AT(e,n,r),g2(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&&(Io(this,e),Rs(this))}setValue(e){if(m2(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(){}}/**
|
1842
2144
|
* @license
|
1843
2145
|
* Copyright 2020 Google LLC
|
1844
2146
|
* SPDX-License-Identifier: BSD-3-Clause
|
1845
|
-
*/const
|
2147
|
+
*/const v2=()=>new W9;class W9{}const _f=new WeakMap,b2=Hr(class extends y2{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)}});/**
|
1846
2148
|
* @license
|
1847
2149
|
* Copyright 2018 Google LLC
|
1848
2150
|
* SPDX-License-Identifier: BSD-3-Clause
|
1849
|
-
*/const
|
2151
|
+
*/const X9={},Z9=Hr(class extends uo{constructor(){super(...arguments),this.nt=X9}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 q9 extends Ft{constructor(){super(),this.inputRef=v2(),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=A2(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=Xs([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 yy&&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){K9(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=Fm(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}" ${b2(this.inputRef)}> ${Z9([123],()=>this._getSearchHelp())}</div>`}}customElements.define("genome-spy-search-field",q9);function K9(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 A2(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,Jn}}),e}var x2="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";/**
|
1850
2152
|
* @license
|
1851
2153
|
* Copyright 2020 Google LLC
|
1852
2154
|
* SPDX-License-Identifier: BSD-3-Clause
|
1853
|
-
*/const
|
2155
|
+
*/const J9=Hr(class extends uo{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(!m2(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 Q9(t),e}});function w2(t,e){return new CustomEvent("query-dependency",{detail:{name:t,setter:e},bubbles:!0})}function $9(t){if(!(t!=null&&t.length))throw new Error("Can't nest an empty array!");const e=C2(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=C2(i),r.children.push(o)),r=o}}return e.children[0]}const C2=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(Gn);return Wf.clear(),t.stopPropagation(),r?(Wf.add(n),n.classList.add("show"),document.body.classList.add(Gn),window.addEventListener("click",i=>{n.classList.contains("show")&&(n.classList.remove("show"),document.body.classList.remove(Gn),i.preventDefault())},{once:!0})):window.dispatchEvent(new MouseEvent("click")),r}const Zf={visibilities:{}},ko=Uy({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 ek 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(w2("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()?ko.actions.setVisibility({name:n.name,visibility:r}):ko.actions.restoreDefaultVisibility(n.name)),this.requestUpdate(),e.stopPropagation()}handleResetClick(){this.app.storeHelper.dispatch(ko.actions.restoreDefaultVisibilities())}updateToggles(){const e=this.app.genomeSpy.viewRoot;if(!e)return;const n=[];e.visit(i=>{if(i instanceof lg)return rs;n.push(i)});const r=n.filter(i=>D8(i.name)&&S2(i)).map(i=>[...i.getAncestors()].reverse());this.nestedPaths=$9(r)}renderToggles(){const e=this.getVisibilities(),n=this.app.genomeSpy.viewRoot,r=kg(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)||!S2(s)}" .checked="${J9(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(T5).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 S2=t=>{var e;return(e=t.spec.configurableVisibility)!=null?e:!(t.parent&&t.parent instanceof Ot)};customElements.define("genome-spy-view-visibility",ek);class tk 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:_g).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(v5).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(o5).node[0]}</button> ${n()} <button class="tool-btn" title="Redo" ?disabled="${!this.provenance.isRedoable()}" @click="${()=>this.provenance.redo()}">${ne(s5).node[0]}</button></div>`}}customElements.define("genome-spy-provenance-buttons",tk);/**
|
1854
2156
|
* @license
|
1855
2157
|
* Copyright 2021 Google LLC
|
1856
2158
|
* SPDX-License-Identifier: BSD-3-Clause
|
1857
|
-
*/class
|
2159
|
+
*/class nk{constructor(e){this.U=e}disconnect(){this.U=void 0}reconnect(e){this.U=e}deref(){return this.U}}class rk{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}}/**
|
1858
2160
|
* @license
|
1859
2161
|
* Copyright 2017 Google LLC
|
1860
2162
|
* SPDX-License-Identifier: BSD-3-Clause
|
1861
|
-
*/const x1=t=>!p5(t)&&typeof t.then=="function";class k5 extends d1{constructor(){super(...arguments),this._$Cwt=1073741823,this._$Cyt=[],this._$CG=new I5(this),this._$CK=new N5}render(...e){var n;return(n=e.find(r=>!x1(r)))!==null&&n!==void 0?n:be}update(e,n){const r=this._$Cyt;let i=r.length;this._$Cyt=n;const o=this._$CG,s=this._$CK;this.isConnected||this.disconnected();for(let a=0;a<n.length&&!(a>this._$Cwt);a++){const c=n[a];if(!x1(c))return this._$Cwt=a,c;a<i&&c===r[a]||(this._$Cwt=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._$Cyt.indexOf(c);l>-1&&l<f._$Cwt&&(f._$Cwt=l,f.setValue(u))}}))}return be}disconnected(){this._$CG.disconnect(),this._$CK.pause()}reconnected(){this._$CG.reconnect(this),this._$CK.resume()}}const B5=Cr(k5);var L5={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function w1(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function eo(t){return(t+"").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Fl(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(d){var g=L5[d[1]||""],m=c[c.length-1]==d;return g?g[1]?(m?c.pop():c.push(d),g[0|m]):g[0]:d}function p(){for(var d="";c.length;)d+=h(c[c.length-1]);return d}for(t=t.replace(/^\[(.+?)\]:\s*(.+)$/gm,function(d,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()+'"':"")+">"+w1(eo(s).replace(/^\n+|\n+$/g,""))+"</code></pre>":(s=i[6])?(s.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=Fl(w1(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="'+eo(i[8])+'" alt="'+eo(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+eo(i[11]||f[r.toLowerCase()])+'">'),n=p()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(s="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+Fl(i[12]||i[15],f)+"</"+s+">":i[16]?n="<code>"+eo(i[16])+"</code>":(i[17]||i[1])&&(n=h(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+p()).replace(/^\n+|\n+$/g,"")}function C1(t,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(t)||t.startsWith("/")?t:(e.endsWith("/")||(e+="/"),e+t)}function O5(t,e={}){const n=Fl(t),r=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${n}</div></body></html>`,"text/html");r.normalize(),S1(r.body);for(const o of r.querySelectorAll("a[href]"))o.setAttribute("target","blank"),o.setAttribute("rel","noopener noreferrer"),o.setAttribute("href",C1(o.getAttribute("href"),e.baseUrl));for(const o of r.querySelectorAll("img[src]"))o.setAttribute("src",C1(o.getAttribute("src"),e.baseUrl));const i=r.body.removeChild(r.querySelector("body > div"));return i.className="snarkdown",i}function S1(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--;)S1(t.childNodes[e])}}function P5(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 zl={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 p=u.charCodeAt(l);f[l*2]=p>>>8,f[l*2+1]=p%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(p){h.push(n(p))}),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,p={},d={},g="",m="",y="",v=2,w=3,C=2,b=[],A=0,x=0,E;for(E=0;E<c.length;E+=1)if(g=c.charAt(E),Object.prototype.hasOwnProperty.call(p,g)||(p[g]=w++,d[g]=!0),m=y+g,Object.prototype.hasOwnProperty.call(p,m))y=m;else{if(Object.prototype.hasOwnProperty.call(d,y)){if(y.charCodeAt(0)<256){for(l=0;l<C;l++)A=A<<1,x==u-1?(x=0,b.push(f(A)),A=0):x++;for(h=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|h&1,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=h>>1}else{for(h=1,l=0;l<C;l++)A=A<<1|h,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=0;for(h=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|h&1,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=h>>1}v--,v==0&&(v=Math.pow(2,C),C++),delete d[y]}else for(h=p[y],l=0;l<C;l++)A=A<<1|h&1,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=h>>1;v--,v==0&&(v=Math.pow(2,C),C++),p[m]=w++,y=String(g)}if(y!==""){if(Object.prototype.hasOwnProperty.call(d,y)){if(y.charCodeAt(0)<256){for(l=0;l<C;l++)A=A<<1,x==u-1?(x=0,b.push(f(A)),A=0):x++;for(h=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|h&1,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=h>>1}else{for(h=1,l=0;l<C;l++)A=A<<1|h,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=0;for(h=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|h&1,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=h>>1}v--,v==0&&(v=Math.pow(2,C),C++),delete d[y]}else for(h=p[y],l=0;l<C;l++)A=A<<1|h&1,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=h>>1;v--,v==0&&(v=Math.pow(2,C),C++)}for(h=2,l=0;l<C;l++)A=A<<1|h&1,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=h>>1;for(;;)if(A=A<<1,x==u-1){b.push(f(A));break}else x++;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,p=4,d=3,g="",m=[],y,v,w,C,b,A,x,E={val:f(0),position:u,index:1};for(y=0;y<3;y+=1)l[y]=y;for(w=0,b=Math.pow(2,2),A=1;A!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*A,A<<=1;switch(w){case 0:for(w=0,b=Math.pow(2,8),A=1;A!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*A,A<<=1;x=n(w);break;case 1:for(w=0,b=Math.pow(2,16),A=1;A!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*A,A<<=1;x=n(w);break;case 2:return""}for(l[3]=x,v=x,m.push(x);;){if(E.index>c)return"";for(w=0,b=Math.pow(2,d),A=1;A!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*A,A<<=1;switch(x=w){case 0:for(w=0,b=Math.pow(2,8),A=1;A!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*A,A<<=1;l[p++]=n(w),x=p-1,h--;break;case 1:for(w=0,b=Math.pow(2,16),A=1;A!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*A,A<<=1;l[p++]=n(w),x=p-1,h--;break;case 2:return m.join("")}if(h==0&&(h=Math.pow(2,d),d++),l[x])g=l[x];else if(x===p)g=v+v.charAt(0);else return null;m.push(g),l[p++]=v+g.charAt(0),h--,v=g,h==0&&(h=Math.pow(2,d),d++)}}};return a}();t!=null&&(t.exports=e)})(zl);function F5(){const t=typeof process!="undefined"?require("util").TextEncoder:TextEncoder;return new t}let Xs;function z5(){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 R5(t){Xs!=null||(Xs=z5());let e=-1;const n=F5().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^Xs[(e^n[r])&255];return(e^-1)>>>0}function E1(t){return("00000000"+R5(t).toString(16)).slice(-8)}function D1(t){const e=zl.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+E1(e)}function j5(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(E1(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(zl.exports.decompressFromEncodedURIComponent(e))}let Pt;async function M1(t,e){var n;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch($i.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),ot(D`<p>Cannot restore the state:</p><p>${r}</p>`),e.provenance.activateState(0)}}async function Zs(t,e,n={}){await M1(t,e),(Pt||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await U5(t,e,n)}async function U5(t,e,n={}){Pt!=null||(Pt=Er("tour")),await G5(t,e,n)}async function G5(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?O5(t.notes,{baseUrl:e.genomeSpy.spec.baseUrl}):D`<span class="no-notes">No notes provided</span>`,u=()=>{Pt==null||Pt.close(),Pt=void 0},f=async m=>{const y=await r.get(i[m]);Zs(y,e,n)},l=async()=>{if(await Rl(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(m){console.warn(m),ot(`Cannot import bookmark: ${m}`)}},h=D`<button @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?D`<button @click="${l}">${$(yg).node[0]} Import bookmark</button>`:z} ${r?D`<button @click="${()=>f(o-1)}" ?disabled="${o<=0}">${$(rM).node[0]} Previous</button> <button @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${$(iM).node[0]}</button>`:z}`,d=D`<button title="Collapse" class="collapse" @click="${m=>m.target.closest(".gs-modal").classList.toggle("collapsed")}">${$(WD).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>`;Fe(d,Pt.content)}function T1(t){const e=JSON.stringify(t,void 0,2),n=window.location,r=n.origin+n.pathname+n.search+D1(t);ot(D`<div class="gs-tabs" style="width:600px"><ul class="tabs" @click="${P5}"><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(GM())).catch(()=>ot("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">
|
1862
|
-
${e}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div></div>`,{title:"Share a bookmark",okLabel:"Close"})}function Rl(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">${$(ZD).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:z} ${n=="share"?D`<div class="gs-alert info">${$(bg).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>`:z}<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=I1(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=I1(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"?D`${$(Uu).node[0]} Create a link`:"Save"}</button></div>`},o=e.name,s=()=>!!e.name,a=Er();return new Promise(c=>{const u=()=>{a.close(),c(!1)},f=async()=>{if(!s()){ot("Name is missing!",{title:"Error"});return}let h=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(h=await ot(D`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)};Fe(i(u,n=="share"?l:f),a.content),a.content.querySelector("#bookmark-title").focus()})}function I1(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class H5 extends It{constructor(){super(),this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(A1("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 Rl(void 0,e,"share")&&T1(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 Rl(e,o,i?"edit":"add"))try{await e.put(o,r==null?void 0:r.name),this.requestUpdate()}catch(c){ot(`${c}`,{title:"Cannot save the bookmark!"})}}async _loadBookmark(e,n){const r=await e.get(n);r&&Zs(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li");lm({items:[{label:"Edit and replace...",icon:JD,callback:()=>this._addBookmark(e,n)},{label:"Delete",icon:oM,callback:()=>ot(D`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:Uu,callback:async()=>T1(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=>cm(o)):z}_getBookmarks(){const e=(n,r)=>n?B5(this._makeBookmarkMenuItems(n,r),D`Loading...`):z;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>`:z,r=e||this.app.globalBookmarkDatabase?D`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${i=>{Ol(i)&&this.requestUpdate()}}">${$(yg).node[0]}</button><ul class="gs-dropdown-menu">${n} ${this._getBookmarks()}</ul></div>`:z;return D`<div class="btn-group">${r} <button class="tool-btn" title="Share" @click="${()=>this._shareCurrentState()}">${$(Uu).node[0]}</button></div>`}}customElements.define("genome-spy-bookmark-button",H5);class Q5 extends It{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()}">${$(VD).node[0]}</button>`),r.push(D`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const i=this.app.config.description?We(this.app.config.description):[];return i.length>1&&r.push(D`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>ot(D`${i.slice(1).map(o=>D`<p>${o}</p>`)}`,{title:i[0]})}">${$(bg).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()}">${$(qD).node[0]}</button>`:z} <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${$($D).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="${y1}"> </a>${this.appInitialized&&m1(e.viewRoot)?D`<genome-spy-search-field .genomeSpy="${e}"></genome-spy-search-field>`:z} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",Q5);class V5{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=h8(xl(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()?[rn.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(rn.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(rn.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(rn.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(rn.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*Y5(t,e=n=>+n){const n=t.length,r=new Ri,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 W5="sampleCount";class _5 extends oe{constructor(e,n){super(),this.view=n;const r=n.context.animator;for(const i of n.getAncestors())i instanceof El&&(this.provenance=i.provenance,this.provenance.storeHelper.subscribe(o=>r.requestTransition(()=>{this.reset(),this._mergeAndPropagate(Sl(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(Nn(e))this.xAccessor=X(e.field);else throw new Error("Crash!")}handle(e){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof xr)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){this._mergeAndPropagate(this.provenance.getPresentState()[kr]),super.complete()}_mergeAndPropagate(e){const n=[...Jm(e.rootGroup)].filter(r=>qm(le(r)));for(const[r,i]of n.entries()){const o=le(i);if(qm(o)){this.contextObject[W5]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const s=o.samples,a=this._getCollector(),c=Y5(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 Le&&n.mark.encoding.y){const r=n.getScaleResolution("y");r&&e.add(r)}});for(const n of e)n.reconfigure()}}var X5="BATCHING_REDUCER.BATCH";function Z5(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:X5;return{type:e,meta:{batch:!0},payload:t}}function q5(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class K5{constructor(e){this._reducers=e!=null?e:{},this.store=T6({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(q5(xl(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(Z5(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class J5 extends l1{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)}}qp.mergeFacets=_5;class N1{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new K5,this.storeHelper.addReducer("viewSettings",$i.reducer),this.provenance=new V5(this.storeHelper),this._initializationListeners=[],this.toolbarRef=p1(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new d5(n.specId):void 0,this.globalBookmarkDatabase=void 0,Fe(D`<div class="genome-spy-app"><genome-spy-toolbar ${g1(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 ug(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(t5,(a,c,u,f)=>new El(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&&s.remote?qr({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(Ws(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 J5(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=Cs(()=>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=We((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 Zs(a,this,{mode:"tour",database:r}):await M1(a,this)}}}_updateStateToUrl(){const e={actions:[],scaleDomains:{}},n=this.provenance.getBookmarkableActionHistory();n!=null&&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?D1(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=j5(e);return Zs(n,this,{mode:"shared"}),!0}catch(n){console.error(n),ot(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",$5(RD)):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 El)return e=r,Fn}),e}}function $5(t){const e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function eT(t,e,n={}){var o,s,a;let r;if(ie(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=Pe(e)?e:await k1(e);(o=c.baseUrl)!=null||(c.baseUrl=""),(s=c.width)!=null||(c.width="container"),(a=c.padding)!=null||(c.padding=10);const u=new N1(r,c,n);i=u.genomeSpy,tT(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 tT(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function k1(t){let e;try{e=JSON.parse(await qr().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=ug,Y.GenomeSpyApp=N1,Y.embed=eT,Y.html=D,Y.icon=y1,Y.loadSpec=k1,Object.defineProperties(Y,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
2163
|
+
*/const E2=t=>!G9(t)&&typeof t.then=="function";class ik extends y2{constructor(){super(...arguments),this._$Cwt=1073741823,this._$Cyt=[],this._$CG=new nk(this),this._$CK=new rk}render(...e){var n;return(n=e.find(r=>!E2(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(!E2(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 ok=Hr(ik);var ak={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function D2(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function No(t){return(t+"").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}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=ak[p[1]||""],y=c[c.length-1]==p;return m?m[1]?(y?c.pop():c.push(p),m[0|y]):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,y){return f[m.toLowerCase()]=y,""}).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()+'"':"")+">"+D2(No(a).replace(/^\n+|\n+$/g,""))+"</code></pre>":(a=i[6])?(a.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=qf(D2(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="'+No(i[8])+'" alt="'+No(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+No(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>"+No(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 M2(t,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(t)||t.startsWith("/")?t:(e.endsWith("/")||(e+="/"),e+t)}function sk(t,e={}){const n=qf(t),r=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${n}</div></body></html>`,"text/html");r.normalize(),T2(r.body);for(const o of r.querySelectorAll("a[href]"))o.setAttribute("target","blank"),o.setAttribute("rel","noopener noreferrer"),o.setAttribute("href",M2(o.getAttribute("href"),e.baseUrl));for(const o of r.querySelectorAll("img[src]"))o.setAttribute("src",M2(o.getAttribute("src"),e.baseUrl));const i=r.body.removeChild(r.querySelector("body > div"));return i.className="snarkdown",i}function T2(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--;)T2(t.childNodes[e])}}function ck(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="",y="",g="",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),y=g+m,Object.prototype.hasOwnProperty.call(h,y))g=y;else{if(Object.prototype.hasOwnProperty.call(p,g)){if(g.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=g.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=g.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[g]}else for(d=h[g],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[y]=A++,g=String(m)}if(g!==""){if(Object.prototype.hasOwnProperty.call(p,g)){if(g.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=g.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=g.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[g]}else for(d=h[g],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="",y=[],g,x,A,C,b,v,w,E={val:f(0),position:u,index:1};for(g=0;g<3;g+=1)l[g]=g;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,y.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 y.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;y.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 uk(){const t=typeof process!="undefined"?require("util").TextEncoder:TextEncoder;return new t}let js;function lk(){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 fk(t){js!=null||(js=lk());let e=-1;const n=uk().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^js[(e^n[r])&255];return(e^-1)>>>0}function I2(t){return("00000000"+fk(t).toString(16)).slice(-8)}function k2(t){const e=Kf.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+I2(e)}function dk(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(I2(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(Kf.exports.decompressFromEncodedURIComponent(e))}let Vt;async function N2(t,e){var n;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch(ko.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),Ye(D`<p>Cannot restore the state:</p><p>${r}</p>`),e.provenance.activateState(0)}}async function Lo(t,e,n={}){await N2(t,e),(Vt||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await hk(t,e,n)}async function hk(t,e,n={}){Vt!=null||(Vt=Wr("tour",e.appContainer)),await pk(t,e,n)}async function pk(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?sk(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 y=>{const g=await r.get(i[y]);Lo(g,e,n),e.appContainer.querySelector("canvas").focus()},l=async()=>{if(await Jf(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(y){console.warn(y),Ye(`Cannot import bookmark: ${y}`)}},d=D`<button @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?D`<button @click="${l}">${ne(Yg).node[0]} Import bookmark</button>`:G} ${r?D`<button @click="${()=>f(o-1)}" ?disabled="${o<=0}">${ne(u5).node[0]} Previous</button> <button @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${ne(w5).node[0]}</button>`:G}`,p=D`<button title="Collapse" class="collapse" @click="${y=>y.target.closest(".gs-modal").classList.toggle("collapsed")}">${ne(f5).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>`;Ge(p,Vt.content)}function L2(t,e){const n=JSON.stringify(t,void 0,2),r=window.location,i=r.origin+r.pathname+r.search+(e?"#bookmark:"+t.name.replaceAll(" ","-"):k2(t));Ye(D`<div class="gs-tabs" style="width:600px"><ul class="tabs" @click="${ck}"><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="${i}"> <button @click="${a=>navigator.clipboard.writeText(i).then(()=>a.target.dispatchEvent(p6())).catch(()=>Ye("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">
|
2164
|
+
${n}</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(h5).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(Wg).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=B2(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=B2(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()){Ye("Name is missing!",{title:"Error"});return}let d=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(d=await Ye(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)};Ge(i(u,n=="share"?l:f),s.content),s.content.querySelector("#bookmark-title").focus()})}function B2(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class mk extends Ft{constructor(){super(),this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(w2("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")&&L2(e,!1)}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){Ye(`${c}`,{title:"Cannot save the bookmark!"})}}async _loadBookmark(e,n){const r=await e.get(n);r&&Lo(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li"),o=()=>Ye(D`The bookmark <em>${n}</em> will be deleted.`,{title:"Are you sure?",cancelButton:!0}).then(async c=>{c&&(await e.delete(n),this.requestUpdate())}),a=[],s=e==this.app.globalBookmarkDatabase;s||(a.push({label:"Edit and replace...",icon:D5,callback:()=>this._addBookmark(e,n)}),a.push({label:"Delete",icon:I5,callback:o})),a.push({label:"Share...",icon:Pl,callback:async()=>L2(await e.get(n),s)}),py({items:a},i,"right-start")}async _makeBookmarkMenuItems(e,n){const i=(await e.getNames()).map(o=>({label:o,callback:()=>this._loadBookmark(e,o),ellipsisCallback:a=>this._createContextMenu(e,o,a)}));return i.length?[{type:"divider"},{label:n,type:"header"},...i].map(o=>dy(o)):G}_getBookmarks(){const e=(n,r)=>n?ok(this._makeBookmarkMenuItems(n,r),D`Loading...`):G;return[e(this.app.globalBookmarkDatabase,"Bookmarks on the server"),e(this.app.localBookmarkDatabase,"Bookmarks in the web browser")]}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(Yg).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",mk);class gk 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(L5).node[0]}</button>`),r.push(D`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const i=this.app.config.description?$e(this.app.config.description):[];return i.length>1&&r.push(D`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>Ye(D`${i.slice(1).map(o=>D`<p>${o}</p>`)}`,{title:i[0]})}">${ne(Wg).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(S5).node[0]}</button>`:G} <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${ne(g5).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="${x2}"> </a>${this.appInitialized&&A2(e.viewRoot)?D`<genome-spy-search-field .genomeSpy="${e}"></genome-spy-search-field>`:G} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",gk);class yk{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=j6(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*vk(t,e=n=>+n){const n=t.length,r=new co,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 bk="sampleCount";class Ak 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(Yn(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=[...n2(e.rootGroup)].filter(r=>e2(He(r)));for(const[r,i]of n.entries()){const o=He(i);if(e2(o)){this.contextObject[bk]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const a=o.samples,s=this._getCollector(),c=vk(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 xk="BATCHING_REDUCER.BATCH";function wk(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:xk;return{type:e,meta:{batch:!0},payload:t}}function Ck(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class Sk{constructor(e){this._reducers=e!=null?e:{},this.store=t9({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(Ck(Pf(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(wk(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class Ek extends p2{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)}}wg.mergeFacets=Ak;class O2{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new Sk,this.storeHelper.addReducer("viewSettings",ko.reducer),this.provenance=new yk(this.storeHelper),this._initializationListeners=[],this.toolbarRef=v2(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new U9(n.specId):void 0,this.globalBookmarkDatabase=void 0,Ge(D`<div class="genome-spy-app"><genome-spy-toolbar ${b2(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 zg(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(T9,(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?Ai({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.appContainer.querySelector("canvas").setAttribute("tabindex","-1"),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 Ek(c))}catch(c){throw new Error(`Cannot load remote bookmarks: ${c}`)}try{await this._restoreStateFromUrlOrBookmark()}catch(c){Ye(c.toString())}this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl().catch(c=>Ye(c.toString())),!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=$e((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=(i=this.config.bookmarks)==null?void 0:i.remote,n=this.globalBookmarkDatabase;if(!await this._restoreStateFromUrl()&&e&&n){const a=(o=e.initialBookmark)!=null?o:e.tour&&(await n.getNames())[0];if(a){const s=await n.get(a);if(!s)throw new Error(`No such bookmark: ${a}`);e.tour?await Lo(s,this,{mode:"tour",database:n}):await N2(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?k2(e):"";window.history.replaceState(void 0,document.title,window.location.pathname+window.location.search+i)}async _restoreStateFromUrl(){var r,i;const e=window.location.hash,n=(r=e.match(/^#bookmark:(.+)$/))==null?void 0:r[1];if(n){const o=(i=this.config.bookmarks)==null?void 0:i.remote,a=this.globalBookmarkDatabase;if(o&&a){const s=(await a.getNames()).find(c=>c.replaceAll(" ","-")==n);if(s){const c=await a.get(s);if(!c)throw new Error(`No such bookmark: ${s}`);return await Lo(c,this,{mode:"tour",database:a}),!0}else throw new Error(`No such bookmark: ${n}`)}}if(e&&e.length>0)try{const o=dk(e);return Lo(o,this,{mode:"shared"}),!0}catch(o){console.error(o),Ye(D`<p>Cannot restore the state:</p><p>${o}</p>`)}return!1}_configureContainer(){this.isFullPage()?(this.appContainer.style.margin="0",this.appContainer.style.padding="0",this.appContainer.style.overflow="hidden",Dk(q8)):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,Jn}),e}}function Dk(t){const e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function Mk(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=je(e)?e:await P2(e);(o=c.baseUrl)!=null||(c.baseUrl=""),(a=c.width)!=null||(c.width="container"),(s=c.padding)!=null||(c.padding=10);const u=new O2(r,c,n);i=u.genomeSpy,Tk(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 Tk(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function P2(t){let e;try{e=JSON.parse(await Ai().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=zg,z.GenomeSpyApp=O2,z.embed=Mk,z.html=D,z.icon=x2,z.loadSpec=P2,Object.defineProperties(z,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|