@genome-spy/app 0.17.0 → 0.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
- var fT=Object.defineProperty,hT=Object.defineProperties;var dT=Object.getOwnPropertyDescriptors;var ta=Object.getOwnPropertySymbols;var ay=Object.prototype.hasOwnProperty,cy=Object.prototype.propertyIsEnumerable;var uy=(Y,q,be)=>q in Y?fT(Y,q,{enumerable:!0,configurable:!0,writable:!0,value:be}):Y[q]=be,T=(Y,q)=>{for(var be in q||(q={}))ay.call(q,be)&&uy(Y,be,q[be]);if(ta)for(var be of ta(q))cy.call(q,be)&&uy(Y,be,q[be]);return Y},F=(Y,q)=>hT(Y,dT(q));var ly=(Y,q)=>{var be={};for(var Ve in Y)ay.call(Y,Ve)&&q.indexOf(Ve)<0&&(be[Ve]=Y[Ve]);if(Y!=null&&ta)for(var Ve of ta(Y))q.indexOf(Ve)<0&&cy.call(Y,Ve)&&(be[Ve]=Y[Ve]);return be};(function(Y,q){typeof exports=="object"&&typeof module!="undefined"?q(exports):typeof define=="function"&&define.amd?define(["exports"],q):(Y=typeof globalThis!="undefined"?globalThis:Y||self,q(Y.genomeSpyApp={}))})(this,function(Y){"use strict";function q(t,e,n){return t.fields=e||[],t.fname=n,t}function be(t){return t==null?null:t.fname}function Ve(t){return t==null?null:t.fields}function fy(t){return t.length===1?hy(t[0]):dy(t)}const hy=t=>function(e){return e[t]},dy=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function re(t){throw Error(t)}function py(t){const e=[],n=t.length;let r=null,i=0,o="",s,a,c;t=t+"";function u(){e.push(o+t.substring(s,a)),o="",s=a+1}for(s=a=0;a<n;++a)if(c=t[a],c==="\\")o+=t.substring(s,a),o+=t.substring(++a,++a),s=a;else if(c===r)u(),r=null,i=-1;else{if(r)continue;s===i&&c==='"'||s===i&&c==="'"?(s=a+1,r=c):c==="."&&!i?a>s?u():s=a+1:c==="["?(a>s&&u(),i=s=a+1):c==="]"&&(i||re("Access path missing open bracket: "+t),i>0&&u(),i=0,s=a+1)}return i&&re("Access path missing closing bracket: "+t),r&&re("Access path missing closing quote: "+t),a>s&&(a++,u()),e}function no(t,e,n){const r=py(t);return t=r.length===1?r[0]:t,q((n&&n.get||fy)(r),[t],e||t)}no("id");const ro=q(t=>t,[],"identity");q(()=>0,[],"zero"),q(()=>1,[],"one"),q(()=>!0,[],"true"),q(()=>!1,[],"false");var _e=Array.isArray;function ze(t){return t===Object(t)}function et(t){return t[t.length-1]}function Ir(t){return t==null||t===""?null:+t}const tf=t=>e=>t*Math.exp(e),nf=t=>e=>Math.log(t*e),gy=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),my=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,io=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function na(t,e,n,r){const i=n(t[0]),o=n(et(t)),s=(o-i)*e;return[r(i-s),r(o-s)]}function yy(t,e){return na(t,e,Ir,ro)}function Ay(t,e){var n=Math.sign(t[0]);return na(t,e,nf(n),tf(n))}function by(t,e,n){return na(t,e,io(n),io(1/n))}function oo(t,e,n,r,i){const o=r(t[0]),s=r(et(t)),a=e!=null?r(e):(o+s)/2;return[i(a+(o-a)*n),i(a+(s-a)*n)]}function so(t,e,n){return oo(t,e,n,Ir,ro)}function rf(t,e,n){const r=Math.sign(t[0]);return oo(t,e,n,nf(r),tf(r))}function ra(t,e,n,r){return oo(t,e,n,io(r),io(1/r))}function xy(t,e,n,r){return oo(t,e,n,gy(r),my(r))}function ia(t){return t!=null?_e(t)?t:[t]:[]}function vy(t,e,n){let r=t[0],i=t[1],o;return i<r&&(o=i,i=r,r=o),o=i-r,o>=n-e?[e,n]:[r=Math.min(Math.max(r,e),n-o),r+o]}function Te(t){return typeof t=="function"}const wy="descending";function of(t,e,n){n=n||{},e=ia(e)||[];const r=[],i=[],o={},s=n.comparator||Ey;return ia(t).forEach((a,c)=>{a!=null&&(r.push(e[c]===wy?-1:1),i.push(a=Te(a)?a:no(a,null,n)),(Ve(a)||[]).forEach(u=>o[u]=1))}),i.length===0?null:q(s(i,r),Object.keys(o))}const sf=(t,e)=>(t<e||t==null)&&e!=null?-1:(t>e||e==null)&&t!=null?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e===e?-1:e!==e&&t===t?1:0),Ey=(t,e)=>t.length===1?Sy(t[0],e[0]):Cy(t,e,t.length),Sy=(t,e)=>function(n,r){return sf(t(n),t(r))*e},Cy=(t,e,n)=>(e.push(0),function(r,i){let o,s=0,a=-1;for(;s===0&&++a<n;)o=t[a],s=sf(o(r),o(i));return s*e[a]});function Dy(t){return Te(t)?t:()=>t}function oa(t){for(let e,n,r=1,i=arguments.length;r<i;++r){e=arguments[r];for(n in e)t[n]=e[n]}return t}const My=Object.prototype.hasOwnProperty;function dn(t,e){return My.call(t,e)}function ao(t){return typeof t=="boolean"}function Iy(t){return Object.prototype.toString.call(t)==="[object Date]"}function Ty(t){return t&&Te(t[Symbol.iterator])}function ae(t){return typeof t=="number"}function oe(t){return typeof t=="string"}function Ny(t,e){const n=t[0],r=et(t),i=+e;return i?i===1?r:n+i*(r-n):n}function co(t){return t&&et(t)-t[0]||0}function uo(t){return _e(t)?"["+t.map(uo)+"]":ze(t)||oe(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function Ly(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const ky=t=>ae(t)||Iy(t)?t:Date.parse(t);function Oy(t,e){return e=e||ky,t==null||t===""?null:e(t)}function By(t){return t==null||t===""?null:t+""}function lo(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var af={},sa={},aa=34,Tr=10,ca=13;function cf(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function Py(t,e){var n=cf(t);return function(r,i){return e(n(r),i,t)}}function uf(t){var e=Object.create(null),n=[];return t.forEach(function(r){for(var i in r)i in e||n.push(e[i]=i)}),n}function Ne(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function Fy(t){return t<0?"-"+Ne(-t,6):t>9999?"+"+Ne(t,6):Ne(t,4)}function zy(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":Fy(t.getUTCFullYear())+"-"+Ne(t.getUTCMonth()+1,2)+"-"+Ne(t.getUTCDate(),2)+(i?"T"+Ne(e,2)+":"+Ne(n,2)+":"+Ne(r,2)+"."+Ne(i,3)+"Z":r?"T"+Ne(e,2)+":"+Ne(n,2)+":"+Ne(r,2)+"Z":n||e?"T"+Ne(e,2)+":"+Ne(n,2)+"Z":"")}function lf(t){var e=new RegExp('["'+t+`
1
+ var hT=Object.defineProperty,dT=Object.defineProperties;var pT=Object.getOwnPropertyDescriptors;var ta=Object.getOwnPropertySymbols;var ay=Object.prototype.hasOwnProperty,cy=Object.prototype.propertyIsEnumerable;var uy=(Y,q,be)=>q in Y?hT(Y,q,{enumerable:!0,configurable:!0,writable:!0,value:be}):Y[q]=be,T=(Y,q)=>{for(var be in q||(q={}))ay.call(q,be)&&uy(Y,be,q[be]);if(ta)for(var be of ta(q))cy.call(q,be)&&uy(Y,be,q[be]);return Y},F=(Y,q)=>dT(Y,pT(q));var ly=(Y,q)=>{var be={};for(var Ve in Y)ay.call(Y,Ve)&&q.indexOf(Ve)<0&&(be[Ve]=Y[Ve]);if(Y!=null&&ta)for(var Ve of ta(Y))q.indexOf(Ve)<0&&cy.call(Y,Ve)&&(be[Ve]=Y[Ve]);return be};(function(Y,q){typeof exports=="object"&&typeof module!="undefined"?q(exports):typeof define=="function"&&define.amd?define(["exports"],q):(Y=typeof globalThis!="undefined"?globalThis:Y||self,q(Y.genomeSpyApp={}))})(this,function(Y){"use strict";function q(t,e,n){return t.fields=e||[],t.fname=n,t}function be(t){return t==null?null:t.fname}function Ve(t){return t==null?null:t.fields}function fy(t){return t.length===1?hy(t[0]):dy(t)}const hy=t=>function(e){return e[t]},dy=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function re(t){throw Error(t)}function py(t){const e=[],n=t.length;let r=null,i=0,o="",s,a,c;t=t+"";function u(){e.push(o+t.substring(s,a)),o="",s=a+1}for(s=a=0;a<n;++a)if(c=t[a],c==="\\")o+=t.substring(s,a),o+=t.substring(++a,++a),s=a;else if(c===r)u(),r=null,i=-1;else{if(r)continue;s===i&&c==='"'||s===i&&c==="'"?(s=a+1,r=c):c==="."&&!i?a>s?u():s=a+1:c==="["?(a>s&&u(),i=s=a+1):c==="]"&&(i||re("Access path missing open bracket: "+t),i>0&&u(),i=0,s=a+1)}return i&&re("Access path missing closing bracket: "+t),r&&re("Access path missing closing quote: "+t),a>s&&(a++,u()),e}function no(t,e,n){const r=py(t);return t=r.length===1?r[0]:t,q((n&&n.get||fy)(r),[t],e||t)}no("id");const ro=q(t=>t,[],"identity");q(()=>0,[],"zero"),q(()=>1,[],"one"),q(()=>!0,[],"true"),q(()=>!1,[],"false");var _e=Array.isArray;function ze(t){return t===Object(t)}function et(t){return t[t.length-1]}function Ir(t){return t==null||t===""?null:+t}const tf=t=>e=>t*Math.exp(e),nf=t=>e=>Math.log(t*e),gy=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),my=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,io=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function na(t,e,n,r){const i=n(t[0]),o=n(et(t)),s=(o-i)*e;return[r(i-s),r(o-s)]}function yy(t,e){return na(t,e,Ir,ro)}function Ay(t,e){var n=Math.sign(t[0]);return na(t,e,nf(n),tf(n))}function by(t,e,n){return na(t,e,io(n),io(1/n))}function oo(t,e,n,r,i){const o=r(t[0]),s=r(et(t)),a=e!=null?r(e):(o+s)/2;return[i(a+(o-a)*n),i(a+(s-a)*n)]}function so(t,e,n){return oo(t,e,n,Ir,ro)}function rf(t,e,n){const r=Math.sign(t[0]);return oo(t,e,n,nf(r),tf(r))}function ra(t,e,n,r){return oo(t,e,n,io(r),io(1/r))}function xy(t,e,n,r){return oo(t,e,n,gy(r),my(r))}function ia(t){return t!=null?_e(t)?t:[t]:[]}function vy(t,e,n){let r=t[0],i=t[1],o;return i<r&&(o=i,i=r,r=o),o=i-r,o>=n-e?[e,n]:[r=Math.min(Math.max(r,e),n-o),r+o]}function Te(t){return typeof t=="function"}const wy="descending";function of(t,e,n){n=n||{},e=ia(e)||[];const r=[],i=[],o={},s=n.comparator||Ey;return ia(t).forEach((a,c)=>{a!=null&&(r.push(e[c]===wy?-1:1),i.push(a=Te(a)?a:no(a,null,n)),(Ve(a)||[]).forEach(u=>o[u]=1))}),i.length===0?null:q(s(i,r),Object.keys(o))}const sf=(t,e)=>(t<e||t==null)&&e!=null?-1:(t>e||e==null)&&t!=null?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e===e?-1:e!==e&&t===t?1:0),Ey=(t,e)=>t.length===1?Sy(t[0],e[0]):Cy(t,e,t.length),Sy=(t,e)=>function(n,r){return sf(t(n),t(r))*e},Cy=(t,e,n)=>(e.push(0),function(r,i){let o,s=0,a=-1;for(;s===0&&++a<n;)o=t[a],s=sf(o(r),o(i));return s*e[a]});function Dy(t){return Te(t)?t:()=>t}function oa(t){for(let e,n,r=1,i=arguments.length;r<i;++r){e=arguments[r];for(n in e)t[n]=e[n]}return t}const My=Object.prototype.hasOwnProperty;function dn(t,e){return My.call(t,e)}function ao(t){return typeof t=="boolean"}function Iy(t){return Object.prototype.toString.call(t)==="[object Date]"}function Ty(t){return t&&Te(t[Symbol.iterator])}function ae(t){return typeof t=="number"}function oe(t){return typeof t=="string"}function Ny(t,e){const n=t[0],r=et(t),i=+e;return i?i===1?r:n+i*(r-n):n}function co(t){return t&&et(t)-t[0]||0}function uo(t){return _e(t)?"["+t.map(uo)+"]":ze(t)||oe(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function Ly(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const ky=t=>ae(t)||Iy(t)?t:Date.parse(t);function Oy(t,e){return e=e||ky,t==null||t===""?null:e(t)}function By(t){return t==null||t===""?null:t+""}function lo(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var af={},sa={},aa=34,Tr=10,ca=13;function cf(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function Py(t,e){var n=cf(t);return function(r,i){return e(n(r),i,t)}}function uf(t){var e=Object.create(null),n=[];return t.forEach(function(r){for(var i in r)i in e||n.push(e[i]=i)}),n}function Ne(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function Fy(t){return t<0?"-"+Ne(-t,6):t>9999?"+"+Ne(t,6):Ne(t,4)}function zy(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":Fy(t.getUTCFullYear())+"-"+Ne(t.getUTCMonth()+1,2)+"-"+Ne(t.getUTCDate(),2)+(i?"T"+Ne(e,2)+":"+Ne(n,2)+":"+Ne(r,2)+"."+Ne(i,3)+"Z":r?"T"+Ne(e,2)+":"+Ne(n,2)+":"+Ne(r,2)+"Z":n||e?"T"+Ne(e,2)+":"+Ne(n,2)+"Z":"")}function lf(t){var e=new RegExp('["'+t+`
2
2
  \r]`),n=t.charCodeAt(0);function r(l,h){var p,d,g=i(l,function(m,y){if(p)return p(m,y-1);d=m,p=h?Py(m,h):cf(m)});return g.columns=d||[],g}function i(l,h){var p=[],d=l.length,g=0,m=0,y,x=d<=0,v=!1;l.charCodeAt(d-1)===Tr&&--d,l.charCodeAt(d-1)===ca&&--d;function S(){if(x)return sa;if(v)return v=!1,af;var A,w=g,E;if(l.charCodeAt(w)===aa){for(;g++<d&&l.charCodeAt(g)!==aa||l.charCodeAt(++g)===aa;);return(A=g)>=d?x=!0:(E=l.charCodeAt(g++))===Tr?v=!0:E===ca&&(v=!0,l.charCodeAt(g)===Tr&&++g),l.slice(w+1,A-1).replace(/""/g,'"')}for(;g<d;){if((E=l.charCodeAt(A=g++))===Tr)v=!0;else if(E===ca)v=!0,l.charCodeAt(g)===Tr&&++g;else if(E!==n)continue;return l.slice(w,A)}return x=!0,l.slice(w,d)}for(;(y=S())!==sa;){for(var b=[];y!==af&&y!==sa;)b.push(y),y=S();h&&(b=h(b,m++))==null||p.push(b)}return p}function o(l,h){return l.map(function(p){return h.map(function(d){return f(p[d])}).join(t)})}function s(l,h){return h==null&&(h=uf(l)),[h.map(f).join(t)].concat(o(l,h)).join(`
3
3
  `)}function a(l,h){return h==null&&(h=uf(l)),o(l,h).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?zy(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:c,formatRow:u,formatValue:f}}var Ry=lf(" "),Uy=Ry.parseRows;function jy(t){return t}function Gy(t){if(t==null)return jy;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 Hy(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Qy(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return ff(t,n)})}:ff(t,e)}function ff(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=hf(t,e);return n==null&&r==null?{type:"Feature",properties:i,geometry:o}:r==null?{type:"Feature",id:n,properties:i,geometry:o}:{type:"Feature",id:n,bbox:r,properties:i,geometry:o}}function hf(t,e){var n=Gy(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&&Hy(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 Vy(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 _y(t){return hf(t,Yy.apply(this,arguments))}function Yy(t,e,n){var r,i,o;if(arguments.length>1)r=Wy(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:Vy(t,r)}}function Wy(t,e,n){var r=[],i=[],o;function s(l){var h=l<0?~l:l;(i[h]||(i[h]=[])).push({i:l,g:o})}function a(l){l.forEach(s)}function c(l){l.forEach(a)}function u(l){l.forEach(c)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":a(l.arcs);break;case"MultiLineString":case"Polygon":c(l.arcs);break;case"MultiPolygon":u(l.arcs);break}}return f(e),i.forEach(n==null?function(l){r.push(l[0].i)}:function(l){n(l[0].g,l[l.length-1].g)&&r.push(l[0].i)}),r}function jn(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function ua(t){let e=t,n=t;t.length===1&&(e=(s,a)=>t(s)-a,n=Xy(t));function r(s,a,c,u){for(c==null&&(c=0),u==null&&(u=s.length);c<u;){const f=c+u>>>1;n(s[f],a)<0?c=f+1:u=f}return c}function i(s,a,c,u){for(c==null&&(c=0),u==null&&(u=s.length);c<u;){const f=c+u>>>1;n(s[f],a)>0?u=f:c=f+1}return c}function o(s,a,c,u){c==null&&(c=0),u==null&&(u=s.length);const f=r(s,a,c,u-1);return f>c&&e(s[f-1],a)>-e(s[f],a)?f-1:f}return{left:r,center:o,right:i}}function Xy(t){return(e,n)=>jn(t(e),n)}function df(t){return t===null?NaN:+t}const la=ua(jn).right;ua(df).center;var Nr=la;class qy extends Map{constructor(e,n=Jy){super();if(Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(pf(this,e))}has(e){return super.has(pf(this,e))}set(e,n){return super.set(Zy(this,e),n)}delete(e){return super.delete(Ky(this,e))}}function pf({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Zy({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Ky({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(n),t.delete(r)),n}function Jy(t){return t!==null&&typeof t=="object"?t.valueOf():t}function gf(t){return t}function $y(t,...e){return eA(t,gf,gf,e)}function eA(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new qy,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 tA(t,e){return Array.from(e,n=>t[n])}function nA(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[n=jn]=e;if(n.length===1||e.length>1){const r=Uint32Array.from(t,(i,o)=>o);return e.length>1?(e=e.map(i=>t.map(i)),r.sort((i,o)=>{for(const s of e){const a=jn(s[i],s[o]);if(a)return a}})):(n=t.map(n),r.sort((i,o)=>jn(n[i],n[o]))),tA(t,r)}return t.sort(n)}var fa=Math.sqrt(50),ha=Math.sqrt(10),da=Math.sqrt(2);function pa(t,e,n){var r,i=-1,o,s,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(a=mf(t,e,n))===0||!isFinite(a))return[];if(a>0){let c=Math.round(t/a),u=Math.round(e/a);for(c*a<t&&++c,u*a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)*a}else{a=-a;let c=Math.round(t*a),u=Math.round(e*a);for(c/a<t&&++c,u/a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)/a}return r&&s.reverse(),s}function mf(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=fa?10:o>=ha?5:o>=da?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=fa?10:o>=ha?5:o>=da?2:1)}function fo(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=fa?i*=10:o>=ha?i*=5:o>=da&&(i*=2),e<t?-i:i}function yf(t,e,n=df){if(!!(r=t.length)){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),s=+n(t[o],o,t),a=+n(t[o+1],o+1,t);return s+(a-s)*(i-o)}}function ho(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function rA(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function po(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function Gn(t){return t=po(Math.abs(t)),t?t[1]:NaN}function iA(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 oA(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var sA=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Hn(t){if(!(e=sA.exec(t)))throw new Error("invalid format: "+t);var e;return new ga({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}Hn.prototype=ga.prototype;function ga(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}ga.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function aA(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var Af;function cA(t,e){var n=po(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Af=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+po(t,Math.max(0,e+o-1))[0]}function bf(t,e){var n=po(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}var xf={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:rA,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>bf(t*100,e),r:bf,s:cA,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function vf(t){return t}var wf=Array.prototype.map,Ef=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function uA(t){var e=t.grouping===void 0||t.thousands===void 0?vf:iA(wf.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?vf:oA(wf.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=Hn(l);var h=l.fill,p=l.align,d=l.sign,g=l.symbol,m=l.zero,y=l.width,x=l.comma,v=l.precision,S=l.trim,b=l.type;b==="n"?(x=!0,b="g"):xf[b]||(v===void 0&&(v=12),S=!0,b="g"),(m||h==="0"&&p==="=")&&(m=!0,h="0",p="=");var A=g==="$"?n:g==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",w=g==="$"?r:/[%p]/.test(b)?s:"",E=xf[b],B=/[defgprs%]/.test(b);v=v===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function O(D){var k=A,z=w,G,ue,Ae;if(b==="c")z=E(D)+z,D="";else{D=+D;var Ge=D<0||1/D<0;if(D=isNaN(D)?c:E(Math.abs(D),v),S&&(D=aA(D)),Ge&&+D==0&&d!=="+"&&(Ge=!1),k=(Ge?d==="("?d:a:d==="-"||d==="("?"":d)+k,z=(b==="s"?Ef[8+Af/3]:"")+z+(Ge&&d==="("?")":""),B){for(G=-1,ue=D.length;++G<ue;)if(Ae=D.charCodeAt(G),48>Ae||Ae>57){z=(Ae===46?i+D.slice(G+1):D.slice(G))+z,D=D.slice(0,G);break}}}x&&!m&&(D=e(D,1/0));var R=k.length+D.length+z.length,ie=R<y?new Array(y-R+1).join(h):"";switch(x&&m&&(D=e(ie+D,ie.length?y-z.length:1/0),ie=""),p){case"<":D=k+D+z+ie;break;case"=":D=k+ie+D+z;break;case"^":D=ie.slice(0,R=ie.length>>1)+k+D+z+ie.slice(R);break;default:D=ie+k+D+z;break}return o(D)}return O.toString=function(){return l+""},O}function f(l,h){var p=u((l=Hn(l),l.type="f",l)),d=Math.max(-8,Math.min(8,Math.floor(Gn(h)/3)))*3,g=Math.pow(10,-d),m=Ef[8+d/3];return function(y){return p(g*y)+m}}return{format:u,formatPrefix:f}}var go,Qn,ma;lA({thousands:",",grouping:[3],currency:["$",""]});function lA(t){return go=uA(t),Qn=go.format,ma=go.formatPrefix,go}function Sf(t){return Math.max(0,-Gn(Math.abs(t)))}function Cf(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Gn(e)/3)))*3-Gn(Math.abs(t)))}function Df(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Gn(e)-Gn(t))+1}var ya=new Date,Aa=new Date;function fe(t,e,n,r){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=function(o){return t(o=new Date(+o)),o},i.ceil=function(o){return t(o=new Date(o-1)),e(o,1),t(o),o},i.round=function(o){var s=i(o),a=i.ceil(o);return o-s<a-o?s:a},i.offset=function(o,s){return e(o=new Date(+o),s==null?1:Math.floor(s)),o},i.range=function(o,s,a){var c=[],u;if(o=i.ceil(o),a=a==null?1:Math.floor(a),!(o<s)||!(a>0))return c;do c.push(u=new Date(+o)),e(o,a),t(o);while(u<o&&o<s);return c},i.filter=function(o){return fe(function(s){if(s>=s)for(;t(s),!o(s);)s.setTime(s-1)},function(s,a){if(s>=s)if(a<0)for(;++a<=0;)for(;e(s,-1),!o(s););else for(;--a>=0;)for(;e(s,1),!o(s););})},n&&(i.count=function(o,s){return ya.setTime(+o),Aa.setTime(+s),t(ya),t(Aa),Math.floor(n(ya,Aa))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(s){return r(s)%o==0}:function(s){return i.count(0,s)%o==0}):i}),i}var ba=fe(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});ba.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?fe(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):ba};var xa=ba;const St=1e3,Ye=St*60,Ct=Ye*60,pn=Ct*24,va=pn*7,Mf=pn*30,wa=pn*365;var fA=fe(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*St)},function(t,e){return(e-t)/St},function(t){return t.getUTCSeconds()}),jt=fA,hA=fe(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*St)},function(t,e){t.setTime(+t+e*Ye)},function(t,e){return(e-t)/Ye},function(t){return t.getMinutes()}),Ea=hA,dA=fe(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*St-t.getMinutes()*Ye)},function(t,e){t.setTime(+t+e*Ct)},function(t,e){return(e-t)/Ct},function(t){return t.getHours()}),Sa=dA,pA=fe(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ye)/pn,t=>t.getDate()-1),gn=pA;function mn(t){return fe(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,n){e.setDate(e.getDate()+n*7)},function(e,n){return(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*Ye)/va})}var mo=mn(0),Ca=mn(1);mn(2),mn(3);var Lr=mn(4);mn(5),mn(6);var gA=fe(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()}),yo=gA,If=fe(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});If.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:fe(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)})};var Gt=If,mA=fe(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Ye)},function(t,e){return(e-t)/Ye},function(t){return t.getUTCMinutes()}),Da=mA,yA=fe(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*Ct)},function(t,e){return(e-t)/Ct},function(t){return t.getUTCHours()}),Ma=yA,AA=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=AA;function An(t){return fe(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCDate(e.getUTCDate()+n*7)},function(e,n){return(n-e)/va})}var Ao=An(0),Ia=An(1);An(2),An(3);var kr=An(4);An(5),An(6);var bA=fe(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()}),bo=bA,Tf=fe(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});Tf.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:fe(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})};var Ht=Tf;function Nf(t,e,n,r,i,o){const s=[[jt,1,St],[jt,5,5*St],[jt,15,15*St],[jt,30,30*St],[o,1,Ye],[o,5,5*Ye],[o,15,15*Ye],[o,30,30*Ye],[i,1,Ct],[i,3,3*Ct],[i,6,6*Ct],[i,12,12*Ct],[r,1,pn],[r,2,2*pn],[n,1,va],[e,1,Mf],[e,3,3*Mf],[t,1,wa]];function a(u,f,l){const h=f<u;h&&([u,f]=[f,u]);const 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=ua(([,,m])=>m).right(s,h);if(p===s.length)return t.every(fo(u/wa,f/wa,l));if(p===0)return xa.every(Math.max(fo(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[xA,vA]=Nf(Ht,bo,Ao,yn,Ma,Da),[wA,EA]=Nf(Gt,yo,mo,gn,Sa,Ea),Or="year",Br="quarter",Pr="month",Fr="week",zr="date",xo="day",Ta="dayofyear",Rr="hours",Ur="minutes",jr="seconds",vo="milliseconds";[Or,Br,Pr,Fr,zr,xo,Ta,Rr,Ur,jr,vo].reduce((t,e,n)=>(t[e]=1+n,t),{});const SA={[Or]:Gt,[Br]:yo.every(3),[Pr]:yo,[Fr]:mo,[zr]:gn,[xo]:gn,[Ta]:gn,[Rr]:Sa,[Ur]:Ea,[jr]:jt,[vo]:xa},CA={[Or]:Ht,[Br]:bo.every(3),[Pr]:bo,[Fr]:Ao,[zr]:yn,[xo]:yn,[Ta]:yn,[Rr]:Ma,[Ur]:Da,[jr]:jt,[vo]:xa};function DA(t){return SA[t]}function MA(t){return CA[t]}function Na(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function La(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Gr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Lf(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,s=t.shortDays,a=t.months,c=t.shortMonths,u=Hr(i),f=Qr(i),l=Hr(o),h=Qr(o),p=Hr(s),d=Qr(s),g=Hr(a),m=Qr(a),y=Hr(c),x=Qr(c),v={a:Ge,A:R,b:ie,B:eo,c:null,d:zf,e:zf,f:ZA,g:s2,G:c2,H:WA,I:XA,j:qA,L:Rf,m:KA,M:JA,p:to,q:ea,Q:Vf,s:_f,S:$A,u:e2,U:t2,V:n2,w:r2,W:i2,x:null,X:null,y:o2,Y:a2,Z:u2,"%":Qf},S={a:ef,A:sT,b:aT,B:cT,c:null,d:jf,e:jf,f:d2,g:E2,G:C2,H:l2,I:f2,j:h2,L:Gf,m:p2,M:g2,p:uT,q:lT,Q:Vf,s:_f,S:m2,u:y2,U:A2,V:b2,w:x2,W:v2,x:null,X:null,y:w2,Y:S2,Z:D2,"%":Qf},b={a:O,A:D,b:k,B:z,c:G,d:Pf,e:Pf,f:QA,g:Bf,G:Of,H:Ff,I:Ff,j:UA,L:HA,m:RA,M:jA,p:B,q:zA,Q:_A,s:YA,S:GA,u:kA,U:OA,V:BA,w:LA,W:PA,x:ue,X:Ae,y:Bf,Y:Of,Z:FA,"%":VA};v.x=A(n,v),v.X=A(r,v),v.c=A(e,v),S.x=A(n,S),S.X=A(r,S),S.c=A(e,S);function A(L,j){return function(V){var I=[],Fe=-1,K=0,He=L.length,Qe,Un,sy;for(V instanceof Date||(V=new Date(+V));++Fe<He;)L.charCodeAt(Fe)===37&&(I.push(L.slice(K,Fe)),(Un=kf[Qe=L.charAt(++Fe)])!=null?Qe=L.charAt(++Fe):Un=Qe==="e"?" ":"0",(sy=j[Qe])&&(Qe=sy(V,Un)),I.push(Qe),K=Fe+1);return I.push(L.slice(K,Fe)),I.join("")}}function w(L,j){return function(V){var I=Gr(1900,void 0,1),Fe=E(I,L,V+="",0),K,He;if(Fe!=V.length)return null;if("Q"in I)return new Date(I.Q);if("s"in I)return new Date(I.s*1e3+("L"in I?I.L:0));if(j&&!("Z"in I)&&(I.Z=0),"p"in I&&(I.H=I.H%12+I.p*12),I.m===void 0&&(I.m="q"in I?I.q:0),"V"in I){if(I.V<1||I.V>53)return null;"w"in I||(I.w=1),"Z"in I?(K=La(Gr(I.y,0,1)),He=K.getUTCDay(),K=He>4||He===0?Ia.ceil(K):Ia(K),K=yn.offset(K,(I.V-1)*7),I.y=K.getUTCFullYear(),I.m=K.getUTCMonth(),I.d=K.getUTCDate()+(I.w+6)%7):(K=Na(Gr(I.y,0,1)),He=K.getDay(),K=He>4||He===0?Ca.ceil(K):Ca(K),K=gn.offset(K,(I.V-1)*7),I.y=K.getFullYear(),I.m=K.getMonth(),I.d=K.getDate()+(I.w+6)%7)}else("W"in I||"U"in I)&&("w"in I||(I.w="u"in I?I.u%7:"W"in I?1:0),He="Z"in I?La(Gr(I.y,0,1)).getUTCDay():Na(Gr(I.y,0,1)).getDay(),I.m=0,I.d="W"in I?(I.w+6)%7+I.W*7-(He+5)%7:I.w+I.U*7-(He+6)%7);return"Z"in I?(I.H+=I.Z/100|0,I.M+=I.Z%100,La(I)):Na(I)}}function E(L,j,V,I){for(var Fe=0,K=j.length,He=V.length,Qe,Un;Fe<K;){if(I>=He)return-1;if(Qe=j.charCodeAt(Fe++),Qe===37){if(Qe=j.charAt(Fe++),Un=b[Qe in kf?j.charAt(Fe++):Qe],!Un||(I=Un(L,V,I))<0)return-1}else if(Qe!=V.charCodeAt(I++))return-1}return I}function B(L,j,V){var I=u.exec(j.slice(V));return I?(L.p=f.get(I[0].toLowerCase()),V+I[0].length):-1}function O(L,j,V){var I=p.exec(j.slice(V));return I?(L.w=d.get(I[0].toLowerCase()),V+I[0].length):-1}function D(L,j,V){var I=l.exec(j.slice(V));return I?(L.w=h.get(I[0].toLowerCase()),V+I[0].length):-1}function k(L,j,V){var I=y.exec(j.slice(V));return I?(L.m=x.get(I[0].toLowerCase()),V+I[0].length):-1}function z(L,j,V){var I=g.exec(j.slice(V));return I?(L.m=m.get(I[0].toLowerCase()),V+I[0].length):-1}function G(L,j,V){return E(L,e,j,V)}function ue(L,j,V){return E(L,n,j,V)}function Ae(L,j,V){return E(L,r,j,V)}function Ge(L){return s[L.getDay()]}function R(L){return o[L.getDay()]}function ie(L){return c[L.getMonth()]}function eo(L){return a[L.getMonth()]}function to(L){return i[+(L.getHours()>=12)]}function ea(L){return 1+~~(L.getMonth()/3)}function ef(L){return s[L.getUTCDay()]}function sT(L){return o[L.getUTCDay()]}function aT(L){return c[L.getUTCMonth()]}function cT(L){return a[L.getUTCMonth()]}function uT(L){return i[+(L.getUTCHours()>=12)]}function lT(L){return 1+~~(L.getUTCMonth()/3)}return{format:function(L){var j=A(L+="",v);return j.toString=function(){return L},j},parse:function(L){var j=w(L+="",!1);return j.toString=function(){return L},j},utcFormat:function(L){var j=A(L+="",S);return j.toString=function(){return L},j},utcParse:function(L){var j=w(L+="",!0);return j.toString=function(){return L},j}}}var kf={"-":"",_:" ","0":"0"},he=/^\s*\d+/,IA=/^%/,TA=/[\\^$*+?|[\]().{}]/g;function H(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function NA(t){return t.replace(TA,"\\$&")}function Hr(t){return new RegExp("^(?:"+t.map(NA).join("|")+")","i")}function Qr(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function LA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function kA(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 BA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function PA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Of(t,e,n){var r=he.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Bf(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function FA(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 zA(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 RA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Pf(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function UA(t,e,n){var r=he.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Ff(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function jA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function GA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function HA(t,e,n){var r=he.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function QA(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 VA(t,e,n){var r=IA.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function _A(t,e,n){var r=he.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function YA(t,e,n){var r=he.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function zf(t,e){return H(t.getDate(),e,2)}function WA(t,e){return H(t.getHours(),e,2)}function XA(t,e){return H(t.getHours()%12||12,e,2)}function qA(t,e){return H(1+gn.count(Gt(t),t),e,3)}function Rf(t,e){return H(t.getMilliseconds(),e,3)}function ZA(t,e){return Rf(t,e)+"000"}function KA(t,e){return H(t.getMonth()+1,e,2)}function JA(t,e){return H(t.getMinutes(),e,2)}function $A(t,e){return H(t.getSeconds(),e,2)}function e2(t){var e=t.getDay();return e===0?7:e}function t2(t,e){return H(mo.count(Gt(t)-1,t),e,2)}function Uf(t){var e=t.getDay();return e>=4||e===0?Lr(t):Lr.ceil(t)}function n2(t,e){return t=Uf(t),H(Lr.count(Gt(t),t)+(Gt(t).getDay()===4),e,2)}function r2(t){return t.getDay()}function i2(t,e){return H(Ca.count(Gt(t)-1,t),e,2)}function o2(t,e){return H(t.getFullYear()%100,e,2)}function s2(t,e){return t=Uf(t),H(t.getFullYear()%100,e,2)}function a2(t,e){return H(t.getFullYear()%1e4,e,4)}function c2(t,e){var n=t.getDay();return t=n>=4||n===0?Lr(t):Lr.ceil(t),H(t.getFullYear()%1e4,e,4)}function u2(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+H(e/60|0,"0",2)+H(e%60,"0",2)}function jf(t,e){return H(t.getUTCDate(),e,2)}function l2(t,e){return H(t.getUTCHours(),e,2)}function f2(t,e){return H(t.getUTCHours()%12||12,e,2)}function h2(t,e){return H(1+yn.count(Ht(t),t),e,3)}function Gf(t,e){return H(t.getUTCMilliseconds(),e,3)}function d2(t,e){return Gf(t,e)+"000"}function p2(t,e){return H(t.getUTCMonth()+1,e,2)}function g2(t,e){return H(t.getUTCMinutes(),e,2)}function m2(t,e){return H(t.getUTCSeconds(),e,2)}function y2(t){var e=t.getUTCDay();return e===0?7:e}function A2(t,e){return H(Ao.count(Ht(t)-1,t),e,2)}function Hf(t){var e=t.getUTCDay();return e>=4||e===0?kr(t):kr.ceil(t)}function b2(t,e){return t=Hf(t),H(kr.count(Ht(t),t)+(Ht(t).getUTCDay()===4),e,2)}function x2(t){return t.getUTCDay()}function v2(t,e){return H(Ia.count(Ht(t)-1,t),e,2)}function w2(t,e){return H(t.getUTCFullYear()%100,e,2)}function E2(t,e){return t=Hf(t),H(t.getUTCFullYear()%100,e,2)}function S2(t,e){return H(t.getUTCFullYear()%1e4,e,4)}function C2(t,e){var n=t.getUTCDay();return t=n>=4||n===0?kr(t):kr.ceil(t),H(t.getUTCFullYear()%1e4,e,4)}function D2(){return"+0000"}function Qf(){return"%"}function Vf(t){return+t}function _f(t){return Math.floor(+t/1e3)}var Vn,ka,Yf,Oa,Wf;M2({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 M2(t){return Vn=Lf(t),ka=Vn.format,Yf=Vn.parse,Oa=Vn.utcFormat,Wf=Vn.utcParse,Vn}function Vr(t){const e={};return n=>e[n]||(e[n]=t(n))}function I2(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=Vr(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=Hn(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return I2(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=Hn(s==null?",f":s);const a=fo(r,i,o),c=Math.max(Math.abs(r),Math.abs(i));let u;if(s.precision==null)switch(s.type){case"s":return isNaN(u=Cf(a,c))||(s.precision=u),n(s,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=Df(a,c))||(s.precision=u-(s.type==="e"));break}case"f":case"%":{isNaN(u=Sf(a))||(s.precision=u-(s.type==="%")*2);break}}return e(s)}}}L2();function L2(){return N2({format:Qn,formatPrefix:ma})}function Xf(t,e,n){n=n||{},ze(n)||re("Invalid time multi-format specifier: ".concat(n));const r=e(jr),i=e(Ur),o=e(Rr),s=e(zr),a=e(Fr),c=e(Pr),u=e(Br),f=e(Or),l=t(n[vo]||".%L"),h=t(n[jr]||":%S"),p=t(n[Ur]||"%I:%M"),d=t(n[Rr]||"%I %p"),g=t(n[zr]||n[xo]||"%a %d"),m=t(n[Fr]||"%b %d"),y=t(n[Pr]||"%B"),x=t(n[Br]||"%B"),v=t(n[Or]||"%Y");return S=>(r(S)<S?l:i(S)<S?h:o(S)<S?p:s(S)<S?d:c(S)<S?a(S)<S?g:m:f(S)<S?u(S)<S?y:x:v)(S)}function qf(t){const e=Vr(t.format),n=Vr(t.utcFormat);return{timeFormat:r=>oe(r)?e(r):Xf(e,DA,r),utcFormat:r=>oe(r)?n(r):Xf(n,MA,r),timeParse:Vr(t.parse),utcParse:Vr(t.utcParse)}}let Ba;k2();function k2(){return Ba=qf({format:ka,parse:Yf,utcFormat:Oa,utcParse:Wf})}function O2(t){return qf(Lf(t))}function B2(t){return arguments.length?Ba=O2(t):Ba}const P2=/^(data:|([A-Za-z]+:)?\/\/)/,F2=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,z2=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Zf="file://";function R2(t,e){return n=>({options:n||{},sanitize:j2,load:U2,fileAccess:!!e,file:G2(e),http:Q2(t)})}async function U2(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function j2(t,e){e=oa({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=F2.test(t.replace(z2,""));(t==null||typeof t!="string"||!a)&&re("Sanitize failure, invalid URI: "+uo(t));const c=P2.test(t);return(s=e.baseURL)&&!c&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(Zf))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(Zf.length):t.startsWith("//")&&(e.defaultProtocol==="file"?(t=t.slice(2),o=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!o}),r.href=t,e.target&&(r.target=e.target+""),e.rel&&(r.rel=e.rel+""),e.context==="image"&&e.crossOrigin&&(r.crossOrigin=e.crossOrigin+""),r}function G2(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):H2}async function H2(){re("No file system access.")}function Q2(t){return t?async function(e,n){const r=oa({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Te(o[i])?o[i]():o.text():re(o.status+""+o.statusText)}:V2}async function V2(){re("No HTTP fetch method available.")}const _2=t=>t!=null&&t===t,Y2=t=>t==="true"||t==="false"||t===!0||t===!1,W2=t=>!Number.isNaN(Date.parse(t)),Kf=t=>!Number.isNaN(+t)&&!(t instanceof Date),X2=t=>Kf(t)&&Number.isInteger(+t),Jf={boolean:Ly,integer:Ir,number:Ir,date:Oy,string:By,unknown:ro},wo=[Y2,X2,Kf,W2],q2=["boolean","integer","number","date"];function $f(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=wo.length,i=wo.map((o,s)=>s+1);for(let o=0,s=0,a,c;o<n;++o)for(c=e?t[o][e]:t[o],a=0;a<r;++a)if(i[a]&&_2(c)&&!wo[a](c)&&(i[a]=0,++s,s===wo.length))return"string";return q2[i.reduce((o,s)=>o===0?s:o,0)-1]}function Z2(t,e){return e.reduce((n,r)=>(n[r]=$f(t,r),n),{})}function eh(t){const e=function(n,r){const i={delimiter:t};return Pa(n,r?oa(r,i):i)};return e.responseType="text",e}function Pa(t,e){return e.header&&(t=e.header.map(uo).join(e.delimiter)+`
6
- `+t),lf(e.delimiter).parse(t+"")}Pa.responseType="text";function K2(t){return typeof Buffer=="function"&&Te(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function Fa(t,e){const n=e&&e.property?no(e.property):ro;return ze(t)&&!K2(t)?J2(n(t),e):n(JSON.parse(t))}Fa.responseType="json";function J2(t,e){return!_e(t)&&Ty(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const $2={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function th(t,e){let n,r,i,o;return t=Fa(t,e),e&&e.feature?(n=Qy,i=e.feature):e&&e.mesh?(n=_y,i=e.mesh,o=$2[e.filter]):re("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):re("Invalid TopoJSON object: "+i),r&&r.features||[r]}th.responseType="json";const za={dsv:Pa,csv:eh(","),tsv:eh(" "),json:Fa,topojson:th};function nh(t,e){return arguments.length>1?(za[t]=e,this):dn(za,t)?za[t]:null}function rh(t,e,n,r){e=e||{};const i=nh(e.type||"json");return i||re("Unknown data format type: "+e.type),t=i(t,e),e.parse&&eb(t,e.parse,n,r),dn(t,"columns")&&delete t.columns,t}function eb(t,e,n,r){if(!t.length)return;const i=B2();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=Z2(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(!Jf[d])throw Error("Illegal format pattern: "+p+":"+d);return Jf[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 _r=R2(typeof fetch!="undefined"&&fetch,null);function Ra(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Eo(t){let e=t,n=t,r=t;t.length!==2&&(e=(a,c)=>t(a)-c,n=Ra,r=(a,c)=>Ra(t(a),c));function i(a,c,u=0,f=a.length){if(u<f){if(n(c,c)!==0)return f;do{const l=u+f>>>1;r(a[l],c)<0?u=l+1:f=l}while(u<f)}return u}function o(a,c,u=0,f=a.length){if(u<f){if(n(c,c)!==0)return f;do{const l=u+f>>>1;r(a[l],c)<=0?u=l+1:f=l}while(u<f)}return u}function s(a,c,u=0,f=a.length){const l=i(a,c,u,f-1);return l>u&&e(a[l-1],c)>-e(a[l],c)?l-1:l}return{left:i,center:s,right:o}}function ih(t){return t===null?NaN:+t}const oh=Eo(Ra),tb=oh.right;oh.left,Eo(ih).center;var nb=tb;function rb(t,e){let n,r;if(e===void 0)for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));else{let i=-1;for(let o of t)(o=e(o,++i,t))!=null&&(n===void 0?o>=o&&(n=r=o):(n>o&&(n=o),r<o&&(r=o)))}return[n,r]}class So extends Map{constructor(e,n=sb){super();if(Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(sh(this,e))}has(e){return super.has(sh(this,e))}set(e,n){return super.set(ib(this,e),n)}delete(e){return super.delete(ob(this,e))}}function sh({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function ib({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function ob({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function sb(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Co(t){return t}function Do(t,...e){return Ua(t,Co,Co,e)}function ab(t,...e){return Ua(t,Array.from,Co,e)}function cb(t,e,...n){return Ua(t,Co,e,n)}function Ua(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new So,c=r[s++];let u=-1;for(const f of o){const l=c(f,++u,o),h=a.get(l);h?h.push(f):a.set(l,[f])}for(const[f,l]of a)a.set(f,i(l,s));return e(a)}(t,0)}var ja=Math.sqrt(50),Ga=Math.sqrt(10),Ha=Math.sqrt(2);function ub(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=lb(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 lb(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=ja?10:o>=Ga?5:o>=Ha?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=ja?10:o>=Ga?5:o>=Ha?2:1)}function Qa(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=ja?i*=10:o>=Ga?i*=5:o>=Ha&&(i*=2),e<t?-i:i}function fb(t,e,n=ih){if(!!(r=t.length)){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),s=+n(t[o],o,t),a=+n(t[o+1],o+1,t);return s+(a-s)*(i-o)}}function Mo(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function Io(t,e){let n=0;if(e===void 0)for(let r of t)(r=+r)&&(n+=r);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}function hb(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function To(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function db(t){return t=To(Math.abs(t)),t?t[1]:NaN}function pb(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 gb(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var mb=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function No(t){if(!(e=mb.exec(t)))throw new Error("invalid format: "+t);var e;return new Va({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}No.prototype=Va.prototype;function Va(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}Va.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function yb(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var ah;function Ab(t,e){var n=To(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(ah=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+To(t,Math.max(0,e+o-1))[0]}function ch(t,e){var n=To(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}var uh={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:hb,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>ch(t*100,e),r:ch,s:Ab,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function lh(t){return t}var fh=Array.prototype.map,hh=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function bb(t){var e=t.grouping===void 0||t.thousands===void 0?lh:pb(fh.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?lh:gb(fh.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=No(l);var h=l.fill,p=l.align,d=l.sign,g=l.symbol,m=l.zero,y=l.width,x=l.comma,v=l.precision,S=l.trim,b=l.type;b==="n"?(x=!0,b="g"):uh[b]||(v===void 0&&(v=12),S=!0,b="g"),(m||h==="0"&&p==="=")&&(m=!0,h="0",p="=");var A=g==="$"?n:g==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",w=g==="$"?r:/[%p]/.test(b)?s:"",E=uh[b],B=/[defgprs%]/.test(b);v=v===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function O(D){var k=A,z=w,G,ue,Ae;if(b==="c")z=E(D)+z,D="";else{D=+D;var Ge=D<0||1/D<0;if(D=isNaN(D)?c:E(Math.abs(D),v),S&&(D=yb(D)),Ge&&+D==0&&d!=="+"&&(Ge=!1),k=(Ge?d==="("?d:a:d==="-"||d==="("?"":d)+k,z=(b==="s"?hh[8+ah/3]:"")+z+(Ge&&d==="("?")":""),B){for(G=-1,ue=D.length;++G<ue;)if(Ae=D.charCodeAt(G),48>Ae||Ae>57){z=(Ae===46?i+D.slice(G+1):D.slice(G))+z,D=D.slice(0,G);break}}}x&&!m&&(D=e(D,1/0));var R=k.length+D.length+z.length,ie=R<y?new Array(y-R+1).join(h):"";switch(x&&m&&(D=e(ie+D,ie.length?y-z.length:1/0),ie=""),p){case"<":D=k+D+z+ie;break;case"=":D=k+ie+D+z;break;case"^":D=ie.slice(0,R=ie.length>>1)+k+D+z+ie.slice(R);break;default:D=ie+k+D+z;break}return o(D)}return O.toString=function(){return l+""},O}function f(l,h){var p=u((l=No(l),l.type="f",l)),d=Math.max(-8,Math.min(8,Math.floor(db(h)/3)))*3,g=Math.pow(10,-d),m=hh[8+d/3];return function(y){return p(g*y)+m}}return{format:u,formatPrefix:f}}var _a,Le;xb({thousands:",",grouping:[3],currency:["$",""]});function xb(t){return _a=bb(t),Le=_a.format,_a}const dh=1;function Ya(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,s=.5,a=0;const u=f=>(f-t[0])/n*r+e[0];return u.invert=f=>(f-e[0])/r*n+t[0],u.domain=function(f){if(arguments.length){if(t=rb(f),n=t[1]-t[0],n<dh){n=dh;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return u}else return t},u.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],u):e},u.numberingOffset=function(f){return arguments.length?(a=f,u):a},u.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),u):i},u.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),u):i},u.paddingOuter=function(f){return arguments.length?(o=f,u):o},u.align=function(f){return arguments.length?(s=Math.max(0,Math.min(1,f)),u):s},u.step=()=>r/n,u.bandwidth=()=>u.step(),u.ticks=f=>{const l=u.align(),h=u.numberingOffset();return ub(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=Qa(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?Le(","):Le(".3s");return d=>p(d+a)},u.copy=()=>Ya().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),u}function vb(){const t=Ya().numberingOffset(1);let e;t.genome=function(r){return arguments.length?(e=r,t):e},t.ticks=r=>{if(!e)return[];const i=t.domain(),o=t.numberingOffset(),[s,a]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),c=Math.max(1,Qa(i[0],i[1],r)),u=[];for(let f=s.index;f<=a.index;f++){const l=e.chromosomes[f],h=Math.max(l.continuousStart+c,i[0]-(i[0]-l.continuousStart)%c),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=Qa(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?Le(","):Le(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>u(f(l)+a)};const n=t.copy;return t.copy=()=>n().genome(e),t}function wb(t){return t.type=="locus"}function ct(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function Qt(t,e){switch(arguments.length){case 0:break;case 1:{typeof t=="function"?this.interpolator(t):this.range(t);break}default:{this.domain(t),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const Wa=Symbol("implicit");function Xa(){var t=new Map,e=[],n=[],r=Wa;function i(o){var s=o+"",a=t.get(s);if(!a){if(r!==Wa)return r;t.set(s,a=e.push(o))}return n[(a-1)%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Map;for(const s of o){const a=s+"";t.has(a)||t.set(a,e.push(s))}return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return Xa(e,n).unknown(r)},ct.apply(i,arguments),i}function _n(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Yr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Vt(){}var bn=.7,Yn=1/bn,Wn="\\s*([+-]?\\d+)\\s*",Wr="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",ut="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Eb=/^#([0-9a-f]{3,8})$/,Sb=new RegExp("^rgb\\("+[Wn,Wn,Wn]+"\\)$"),Cb=new RegExp("^rgb\\("+[ut,ut,ut]+"\\)$"),Db=new RegExp("^rgba\\("+[Wn,Wn,Wn,Wr]+"\\)$"),Mb=new RegExp("^rgba\\("+[ut,ut,ut,Wr]+"\\)$"),Ib=new RegExp("^hsl\\("+[Wr,ut,ut]+"\\)$"),Tb=new RegExp("^hsla\\("+[Wr,ut,ut,Wr]+"\\)$"),ph={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};_n(Vt,Xr,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:gh,formatHex:gh,formatHsl:Nb,formatRgb:mh,toString:mh});function gh(){return this.rgb().formatHex()}function Nb(){return vh(this).formatHsl()}function mh(){return this.rgb().formatRgb()}function Xr(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Eb.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?yh(e):n===3?new me(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Lo(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Lo(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Sb.exec(t))?new me(e[1],e[2],e[3],1):(e=Cb.exec(t))?new me(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Db.exec(t))?Lo(e[1],e[2],e[3],e[4]):(e=Mb.exec(t))?Lo(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Ib.exec(t))?xh(e[1],e[2]/100,e[3]/100,1):(e=Tb.exec(t))?xh(e[1],e[2]/100,e[3]/100,e[4]):ph.hasOwnProperty(t)?yh(ph[t]):t==="transparent"?new me(NaN,NaN,NaN,0):null}function yh(t){return new me(t>>16&255,t>>8&255,t&255,1)}function Lo(t,e,n,r){return r<=0&&(t=e=n=NaN),new me(t,e,n,r)}function qa(t){return t instanceof Vt||(t=Xr(t)),t?(t=t.rgb(),new me(t.r,t.g,t.b,t.opacity)):new me}function ko(t,e,n,r){return arguments.length===1?qa(t):new me(t,e,n,r==null?1:r)}function me(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}_n(me,ko,Yr(Vt,{brighter:function(t){return t=t==null?Yn:Math.pow(Yn,t),new me(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=t==null?bn:Math.pow(bn,t),new me(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ah,formatHex:Ah,formatRgb:bh,toString:bh}));function Ah(){return"#"+Za(this.r)+Za(this.g)+Za(this.b)}function bh(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(t===1?")":", "+t+")")}function Za(t){return t=Math.max(0,Math.min(255,Math.round(t)||0)),(t<16?"0":"")+t.toString(16)}function xh(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new lt(t,e,n,r)}function vh(t){if(t instanceof lt)return new lt(t.h,t.s,t.l,t.opacity);if(t instanceof Vt||(t=Xr(t)),!t)return new lt;if(t instanceof lt)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,a=o-i,c=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=c<.5?o+i:2-o-i,s*=60):a=c>0&&c<1?0:s,new lt(s,a,c,t.opacity)}function Ka(t,e,n,r){return arguments.length===1?vh(t):new lt(t,e,n,r==null?1:r)}function lt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}_n(lt,Ka,Yr(Vt,{brighter:function(t){return t=t==null?Yn:Math.pow(Yn,t),new lt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?bn:Math.pow(bn,t),new lt(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new me(Ja(t>=240?t-240:t+120,i,r),Ja(t,i,r),Ja(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"hsl(":"hsla(")+(this.h||0)+", "+(this.s||0)*100+"%, "+(this.l||0)*100+"%"+(t===1?")":", "+t+")")}}));function Ja(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const wh=Math.PI/180,Eh=180/Math.PI,Oo=18,Sh=.96422,Ch=1,Dh=.82521,Mh=4/29,Xn=6/29,Ih=3*Xn*Xn,Lb=Xn*Xn*Xn;function Th(t){if(t instanceof ft)return new ft(t.l,t.a,t.b,t.opacity);if(t instanceof Dt)return Nh(t);t instanceof me||(t=qa(t));var e=rc(t.r),n=rc(t.g),r=rc(t.b),i=ec((.2225045*e+.7168786*n+.0606169*r)/Ch),o,s;return e===n&&n===r?o=s=i:(o=ec((.4360747*e+.3850649*n+.1430804*r)/Sh),s=ec((.0139322*e+.0971045*n+.7141733*r)/Dh)),new ft(116*i-16,500*(o-i),200*(i-s),t.opacity)}function $a(t,e,n,r){return arguments.length===1?Th(t):new ft(t,e,n,r==null?1:r)}function ft(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}_n(ft,$a,Yr(Vt,{brighter:function(t){return new ft(this.l+Oo*(t==null?1:t),this.a,this.b,this.opacity)},darker:function(t){return new ft(this.l-Oo*(t==null?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=Sh*tc(e),t=Ch*tc(t),n=Dh*tc(n),new me(nc(3.1338561*e-1.6168667*t-.4906146*n),nc(-.9787684*e+1.9161415*t+.033454*n),nc(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function ec(t){return t>Lb?Math.pow(t,1/3):t/Ih+Mh}function tc(t){return t>Xn?t*t*t:Ih*(t-Mh)}function nc(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function rc(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function kb(t){if(t instanceof Dt)return new Dt(t.h,t.c,t.l,t.opacity);if(t instanceof ft||(t=Th(t)),t.a===0&&t.b===0)return new Dt(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Eh;return new Dt(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function ic(t,e,n,r){return arguments.length===1?kb(t):new Dt(t,e,n,r==null?1:r)}function Dt(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function Nh(t){if(isNaN(t.h))return new ft(t.l,0,0,t.opacity);var e=t.h*wh;return new ft(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}_n(Dt,ic,Yr(Vt,{brighter:function(t){return new Dt(this.h,this.c,this.l+Oo*(t==null?1:t),this.opacity)},darker:function(t){return new Dt(this.h,this.c,this.l-Oo*(t==null?1:t),this.opacity)},rgb:function(){return Nh(this).rgb()}}));var Lh=-.14861,oc=1.78277,sc=-.29227,Bo=-.90649,qr=1.97294,kh=qr*Bo,Oh=qr*oc,Bh=oc*sc-Bo*Lh;function Ob(t){if(t instanceof xn)return new xn(t.h,t.s,t.l,t.opacity);t instanceof me||(t=qa(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(Bh*r+kh*e-Oh*n)/(Bh+kh-Oh),o=r-i,s=(qr*(n-i)-sc*o)/Bo,a=Math.sqrt(s*s+o*o)/(qr*i*(1-i)),c=a?Math.atan2(s,o)*Eh-120:NaN;return new xn(c<0?c+360:c,a,i,t.opacity)}function ac(t,e,n,r){return arguments.length===1?Ob(t):new xn(t,e,n,r==null?1:r)}function xn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}_n(xn,ac,Yr(Vt,{brighter:function(t){return t=t==null?Yn:Math.pow(Yn,t),new xn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?bn:Math.pow(bn,t),new xn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*wh,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new me(255*(e+n*(Lh*r+oc*i)),255*(e+n*(sc*r+Bo*i)),255*(e+n*(qr*r)),this.opacity)}}));function Ph(t,e,n,r,i){var o=t*t,s=o*t;return((1-3*t+3*o-s)*e+(4-6*o+3*s)*n+(1+3*t+3*o-3*s)*r+s*i)/6}function Fh(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],s=r>0?t[r-1]:2*i-o,a=r<e-1?t[r+2]:2*o-i;return Ph((n-r/e)*e,s,i,o,a)}}function zh(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],s=t[(r+1)%e],a=t[(r+2)%e];return Ph((n-r/e)*e,i,o,s,a)}}var Po=t=>()=>t;function Rh(t,e){return function(n){return t+n*e}}function Bb(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Fo(t,e){var n=e-t;return n?Rh(t,n>180||n<-180?n-360*Math.round(n/360):n):Po(isNaN(t)?e:t)}function Pb(t){return(t=+t)==1?de:function(e,n){return n-e?Bb(e,n,t):Po(isNaN(e)?n:e)}}function de(t,e){var n=e-t;return n?Rh(t,n):Po(isNaN(t)?e:t)}var cc=function t(e){var n=Pb(e);function r(i,o){var s=n((i=ko(i)).r,(o=ko(o)).r),a=n(i.g,o.g),c=n(i.b,o.b),u=de(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r}(1);function Uh(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),s,a;for(s=0;s<n;++s)a=ko(e[s]),r[s]=a.r||0,i[s]=a.g||0,o[s]=a.b||0;return r=t(r),i=t(i),o=t(o),a.opacity=1,function(c){return a.r=r(c),a.g=i(c),a.b=o(c),a+""}}}var Fb=Uh(Fh),zb=Uh(zh);function uc(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function jh(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Rb(t,e){return(jh(e)?uc:Gh)(t,e)}function Gh(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),s;for(s=0;s<r;++s)i[s]=_t(t[s],e[s]);for(;s<n;++s)o[s]=e[s];return function(a){for(s=0;s<r;++s)o[s]=i[s](a);return o}}function Hh(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function tt(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function Qh(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=_t(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var lc=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,fc=new RegExp(lc.source,"g");function Ub(t){return function(){return t}}function jb(t){return function(e){return t(e)+""}}function Vh(t,e){var n=lc.lastIndex=fc.lastIndex=0,r,i,o,s=-1,a=[],c=[];for(t=t+"",e=e+"";(r=lc.exec(t))&&(i=fc.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,c.push({i:s,x:tt(r,i)})),n=fc.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?c[0]?jb(c[0].x):Ub(e):(e=c.length,function(u){for(var f=0,l;f<e;++f)a[(l=c[f]).i]=l.x(u);return a.join("")})}function _t(t,e){var n=typeof e,r;return e==null||n==="boolean"?Po(e):(n==="number"?tt:n==="string"?(r=Xr(e))?(e=r,cc):Vh:e instanceof Xr?cc:e instanceof Date?Hh:jh(e)?uc:Array.isArray(e)?Gh:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?Qh:tt)(t,e)}function Gb(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function Hb(t,e){var n=Fo(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function Zr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var _h=180/Math.PI,hc={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Yh(t,e,n,r,i,o){var s,a,c;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,c/=a),t*r<e*n&&(t=-t,e=-e,c=-c,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*_h,skewX:Math.atan(c)*_h,scaleX:s,scaleY:a}}var zo;function Qb(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?hc:Yh(e.a,e.b,e.c,e.d,e.e,e.f)}function Vb(t){return t==null||(zo||(zo=document.createElementNS("http://www.w3.org/2000/svg","g")),zo.setAttribute("transform",t),!(t=zo.transform.baseVal.consolidate()))?hc:(t=t.matrix,Yh(t.a,t.b,t.c,t.d,t.e,t.f))}function Wh(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,h,p,d){if(u!==l||f!==h){var g=p.push("translate(",null,e,null,n);d.push({i:g-4,x:tt(u,l)},{i:g-2,x:tt(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:tt(u,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(u,f,l,h){u!==f?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:tt(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,h,p,d){if(u!==l||f!==h){var g=p.push(i(p)+"scale(",null,",",null,")");d.push({i:g-4,x:tt(u,l)},{i:g-2,x:tt(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 _b=Wh(Qb,"px, ","px)","deg)"),Yb=Wh(Vb,", ",")",")"),Wb=1e-12;function Xh(t){return((t=Math.exp(t))+1/t)/2}function Xb(t){return((t=Math.exp(t))-1/t)/2}function qb(t){return((t=Math.exp(2*t))-1)/(t+1)}var qh=function t(e,n,r){function i(o,s){var a=o[0],c=o[1],u=o[2],f=s[0],l=s[1],h=s[2],p=f-a,d=l-c,g=p*p+d*d,m,y;if(g<Wb)y=Math.log(h/u)/e,m=function(w){return[a+w*p,c+w*d,u*Math.exp(e*w*y)]};else{var x=Math.sqrt(g),v=(h*h-u*u+r*g)/(2*u*n*x),S=(h*h-u*u-r*g)/(2*h*n*x),b=Math.log(Math.sqrt(v*v+1)-v),A=Math.log(Math.sqrt(S*S+1)-S);y=(A-b)/e,m=function(w){var E=w*y,B=Xh(b),O=u/(n*x)*(B*qb(e*E+b)-Xb(b));return[a+O*p,c+O*d,u*B/Xh(e*E+b)]}}return m.duration=y*1e3*e/Math.SQRT2,m}return i.rho=function(o){var s=Math.max(.001,+o),a=s*s,c=a*a;return t(s,a,c)},i}(Math.SQRT2,2,4);function Zh(t){return function(e,n){var r=t((e=Ka(e)).h,(n=Ka(n)).h),i=de(e.s,n.s),o=de(e.l,n.l),s=de(e.opacity,n.opacity);return function(a){return e.h=r(a),e.s=i(a),e.l=o(a),e.opacity=s(a),e+""}}}var Zb=Zh(Fo),Kb=Zh(de);function Jb(t,e){var n=de((t=$a(t)).l,(e=$a(e)).l),r=de(t.a,e.a),i=de(t.b,e.b),o=de(t.opacity,e.opacity);return function(s){return t.l=n(s),t.a=r(s),t.b=i(s),t.opacity=o(s),t+""}}function Kh(t){return function(e,n){var r=t((e=ic(e)).h,(n=ic(n)).h),i=de(e.c,n.c),o=de(e.l,n.l),s=de(e.opacity,n.opacity);return function(a){return e.h=r(a),e.c=i(a),e.l=o(a),e.opacity=s(a),e+""}}}var $b=Kh(Fo),ex=Kh(de);function Jh(t){return function e(n){n=+n;function r(i,o){var s=t((i=ac(i)).h,(o=ac(o)).h),a=de(i.s,o.s),c=de(i.l,o.l),u=de(i.opacity,o.opacity);return function(f){return i.h=s(f),i.s=a(f),i.l=c(Math.pow(f,n)),i.opacity=u(f),i+""}}return r.gamma=e,r}(1)}var tx=Jh(Fo),nx=Jh(de);function dc(t,e){e===void 0&&(e=t,t=_t);for(var n=0,r=e.length-1,i=e[0],o=new Array(r<0?0:r);n<r;)o[n]=t(i,i=e[++n]);return function(s){var a=Math.max(0,Math.min(r-1,Math.floor(s*=r)));return o[a](s-a)}}function rx(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var ix=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",interpolate:_t,interpolateArray:Rb,interpolateBasis:Fh,interpolateBasisClosed:zh,interpolateDate:Hh,interpolateDiscrete:Gb,interpolateHue:Hb,interpolateNumber:tt,interpolateNumberArray:uc,interpolateObject:Qh,interpolateRound:Zr,interpolateString:Vh,interpolateTransformCss:_b,interpolateTransformSvg:Yb,interpolateZoom:qh,interpolateRgb:cc,interpolateRgbBasis:Fb,interpolateRgbBasisClosed:zb,interpolateHsl:Zb,interpolateHslLong:Kb,interpolateLab:Jb,interpolateHcl:$b,interpolateHclLong:ex,interpolateCubehelix:tx,interpolateCubehelixLong:nx,piecewise:dc,quantize:rx});function ox(t){return function(){return t}}function pc(t){return+t}var $h=[0,1];function ke(t){return t}function gc(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:ox(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 ax(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=gc(i,r),o=n(s,o)):(r=gc(r,i),o=n(o,s)),function(a){return o(r(a))}}function cx(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),s=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<r;)i[s]=gc(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var c=Nr(t,a,1,r)-1;return o[c](i[c](a))}}function Kr(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Ro(){var t=$h,e=$h,n=_t,r,i,o,s=ke,a,c,u;function f(){var h=Math.min(t.length,e.length);return s!==ke&&(s=sx(t[0],t[h-1])),a=h>2?cx:ax,c=u=null,l}function l(h){return h==null||isNaN(h=+h)?o:(c||(c=a(t.map(r),e,n)))(r(s(h)))}return l.invert=function(h){return s(i((u||(u=a(e,t.map(r),tt)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,pc),f()):t.slice()},l.range=function(h){return arguments.length?(e=Array.from(h),f()):e.slice()},l.rangeRound=function(h){return e=Array.from(h),n=Zr,f()},l.clamp=function(h){return arguments.length?(s=h?!0:ke,f()):s!==ke},l.interpolate=function(h){return arguments.length?(n=h,f()):n},l.unknown=function(h){return arguments.length?(o=h,l):o},function(h,p){return r=h,i=p,f()}}function ed(){return Ro()(ke,ke)}function td(t,e,n,r){var i=fo(t,e,n),o;switch(r=Hn(r==null?",f":r),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=Cf(i,s))&&(r.precision=o),ma(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Df(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=Sf(i))&&(r.precision=o-(r.type==="%")*2);break}}return Qn(r)}function vn(t){var e=t.domain;return t.ticks=function(n){var r=e();return pa(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return td(i[0],i[i.length-1],n==null?10:n,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,s=r[i],a=r[o],c,u,f=10;for(a<s&&(u=s,s=a,a=u,u=i,i=o,o=u);f-- >0;){if(u=mf(s,a,n),u===c)return r[i]=s,r[o]=a,e(r);if(u>0)s=Math.floor(s/u)*u,a=Math.ceil(a/u)*u;else if(u<0)s=Math.ceil(s*u)/u,a=Math.floor(a*u)/u;else break;c=u}return t},t}function nd(){var t=ed();return t.copy=function(){return Kr(t,nd())},ct.apply(t,arguments),vn(t)}function rd(t){var e;function n(r){return r==null||isNaN(r=+r)?e:r}return n.invert=n,n.domain=n.range=function(r){return arguments.length?(t=Array.from(r,pc),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return rd(t).unknown(e)},t=arguments.length?Array.from(t,pc):[0,1],vn(n)}function id(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],s;return o<i&&(s=n,n=r,r=s,s=i,i=o,o=s),t[n]=e.floor(i),t[r]=e.ceil(o),t}function od(t){return Math.log(t)}function sd(t){return Math.exp(t)}function ux(t){return-Math.log(-t)}function lx(t){return-Math.exp(-t)}function fx(t){return isFinite(t)?+("1e"+t):t<0?0:t}function hx(t){return t===10?fx:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}function dx(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),function(e){return Math.log(e)/t})}function ad(t){return function(e){return-t(-e)}}function mc(t){var e=t(od,sd),n=e.domain,r=10,i,o;function s(){return i=dx(r),o=hx(r),n()[0]<0?(i=ad(i),o=ad(o),t(ux,lx)):t(od,sd),e}return e.base=function(a){return arguments.length?(r=+a,s()):r},e.domain=function(a){return arguments.length?(n(a),s()):n()},e.ticks=function(a){var c=n(),u=c[0],f=c[c.length-1],l;(l=f<u)&&(h=u,u=f,f=h);var h=i(u),p=i(f),d,g,m,y=a==null?10:+a,x=[];if(!(r%1)&&p-h<y){if(h=Math.floor(h),p=Math.ceil(p),u>0){for(;h<=p;++h)for(g=1,d=o(h);g<r;++g)if(m=d*g,!(m<u)){if(m>f)break;x.push(m)}}else for(;h<=p;++h)for(g=r-1,d=o(h);g>=1;--g)if(m=d*g,!(m<u)){if(m>f)break;x.push(m)}x.length*2<y&&(x=pa(u,f,y))}else x=pa(h,p,Math.min(p-h,y)).map(o);return l?x.reverse():x},e.tickFormat=function(a,c){if(c==null&&(c=r===10?".0e":","),typeof c!="function"&&(c=Qn(c)),a===1/0)return c;a==null&&(a=10);var u=Math.max(1,r*a/e.ticks().length);return function(f){var l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=u?c(f):""}},e.nice=function(){return n(id(n(),{floor:function(a){return o(Math.floor(i(a)))},ceil:function(a){return o(Math.ceil(i(a)))}}))},e}function yc(){var t=mc(Ro()).domain([1,10]);return t.copy=function(){return Kr(t,yc()).base(t.base())},ct.apply(t,arguments),t}function cd(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function ud(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Ac(t){var e=1,n=t(cd(e),ud(e));return n.constant=function(r){return arguments.length?t(cd(e=+r),ud(e)):e},vn(n)}function ld(){var t=Ac(Ro());return t.copy=function(){return Kr(t,ld()).constant(t.constant())},ct.apply(t,arguments)}function fd(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function px(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function gx(t){return t<0?-t*t:t*t}function bc(t){var e=t(ke,ke),n=1;function r(){return n===1?t(ke,ke):n===.5?t(px,gx):t(fd(n),fd(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},vn(e)}function xc(){var t=bc(Ro());return t.copy=function(){return Kr(t,xc()).exponent(t.exponent())},ct.apply(t,arguments),t}function mx(){return xc.apply(null,arguments).exponent(.5)}function hd(){var t=[],e=[],n=[],r;function i(){var s=0,a=Math.max(1,e.length);for(n=new Array(a-1);++s<a;)n[s-1]=yf(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[Nr(n,s)]}return o.invertExtent=function(s){var a=e.indexOf(s);return a<0?[NaN,NaN]:[a>0?n[a-1]:t[0],a<n.length?n[a]:t[t.length-1]]},o.domain=function(s){if(!arguments.length)return t.slice();t=[];for(let a of s)a!=null&&!isNaN(a=+a)&&t.push(a);return t.sort(jn),i()},o.range=function(s){return arguments.length?(e=Array.from(s),i()):e.slice()},o.unknown=function(s){return arguments.length?(r=s,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return hd().domain(t).range(e).unknown(r)},ct.apply(o,arguments)}function dd(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function s(c){return c!=null&&c<=c?i[Nr(r,c,0,n)]:o}function a(){var c=-1;for(r=new Array(n);++c<n;)r[c]=((c+1)*e-(c-n)*t)/(n+1);return s}return s.domain=function(c){return arguments.length?([t,e]=c,t=+t,e=+e,a()):[t,e]},s.range=function(c){return arguments.length?(n=(i=Array.from(c)).length-1,a()):i.slice()},s.invertExtent=function(c){var u=i.indexOf(c);return u<0?[NaN,NaN]:u<1?[t,r[0]]:u>=n?[r[n-1],e]:[r[u-1],r[u]]},s.unknown=function(c){return arguments.length&&(o=c),s},s.thresholds=function(){return r.slice()},s.copy=function(){return dd().domain([t,e]).range(i).unknown(o)},ct.apply(vn(s),arguments)}function pd(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[Nr(t,o,0,r)]:n}return i.domain=function(o){return arguments.length?(t=Array.from(o),r=Math.min(t.length,e.length-1),i):t.slice()},i.range=function(o){return arguments.length?(e=Array.from(o),r=Math.min(t.length,e.length-1),i):e.slice()},i.invertExtent=function(o){var s=e.indexOf(o);return[t[s-1],t[s]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return pd().domain(t).range(e).unknown(n)},ct.apply(i,arguments)}function yx(t){return new Date(t)}function Ax(t){return t instanceof Date?+t:+new Date(+t)}function vc(t,e,n,r,i,o,s,a,c,u){var f=ed(),l=f.invert,h=f.domain,p=u(".%L"),d=u(":%S"),g=u("%I:%M"),m=u("%I %p"),y=u("%a %d"),x=u("%b %d"),v=u("%B"),S=u("%Y");function b(A){return(c(A)<A?p:a(A)<A?d:s(A)<A?g:o(A)<A?m:r(A)<A?i(A)<A?y:x:n(A)<A?v:S)(A)}return f.invert=function(A){return new Date(l(A))},f.domain=function(A){return arguments.length?h(Array.from(A,Ax)):h().map(yx)},f.ticks=function(A){var w=h();return t(w[0],w[w.length-1],A==null?10:A)},f.tickFormat=function(A,w){return w==null?b:u(w)},f.nice=function(A){var w=h();return(!A||typeof A.range!="function")&&(A=e(w[0],w[w.length-1],A==null?10:A)),A?h(id(w,A)):f},f.copy=function(){return Kr(f,vc(t,e,n,r,i,o,s,a,c,u))},f}function bx(){return ct.apply(vc(wA,EA,Gt,yo,mo,gn,Sa,Ea,jt,ka).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function xx(){return ct.apply(vc(xA,vA,Ht,bo,Ao,yn,Ma,Da,jt,Oa).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Uo(){var t=0,e=1,n,r,i,o,s=ke,a=!1,c;function u(l){return l==null||isNaN(l=+l)?c:s(i===0?.5:(l=(o(l)-n)*i,a?Math.max(0,Math.min(1,l)):l))}u.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),u):[t,e]},u.clamp=function(l){return arguments.length?(a=!!l,u):a},u.interpolator=function(l){return arguments.length?(s=l,u):s};function f(l){return function(h){var p,d;return arguments.length?([p,d]=h,s=l(p,d),u):[s(0),s(1)]}}return u.range=f(_t),u.rangeRound=f(Zr),u.unknown=function(l){return arguments.length?(c=l,u):c},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),u}}function Yt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function wc(){var t=vn(Uo()(ke));return t.copy=function(){return Yt(t,wc())},Qt.apply(t,arguments)}function gd(){var t=mc(Uo()).domain([1,10]);return t.copy=function(){return Yt(t,gd()).base(t.base())},Qt.apply(t,arguments)}function md(){var t=Ac(Uo());return t.copy=function(){return Yt(t,md()).constant(t.constant())},Qt.apply(t,arguments)}function Ec(){var t=bc(Uo());return t.copy=function(){return Yt(t,Ec()).exponent(t.exponent())},Qt.apply(t,arguments)}function vx(){return Ec.apply(null,arguments).exponent(.5)}function jo(){var t=0,e=.5,n=1,r=1,i,o,s,a,c,u=ke,f,l=!1,h;function 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,x,v;return arguments.length?([y,x,v]=m,u=dc(g,[y,x,v]),p):[u(0),u(.5),u(1)]}}return p.range=d(_t),p.rangeRound=d(Zr),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 yd(){var t=vn(jo()(ke));return t.copy=function(){return Yt(t,yd())},Qt.apply(t,arguments)}function Ad(){var t=mc(jo()).domain([.1,1,10]);return t.copy=function(){return Yt(t,Ad()).base(t.base())},Qt.apply(t,arguments)}function bd(){var t=Ac(jo());return t.copy=function(){return Yt(t,bd()).constant(t.constant())},Qt.apply(t,arguments)}function Sc(){var t=bc(jo());return t.copy=function(){return Yt(t,Sc()).exponent(t.exponent())},Qt.apply(t,arguments)}function wx(){return Sc.apply(null,arguments).exponent(.5)}function Cc(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const Ex="identity",qn="linear",Wt="log",Jr="pow",$r="sqrt",Go="symlog",xd="time",vd="utc",ht="sequential",Zn="diverging",Dc="quantile",wd="quantize",Ed="threshold",Mc="ordinal",Ic="point",Sd="band",Tc="bin-ordinal",le="continuous",ei="discrete",ti="discretizing",We="interpolating",Cd="temporal";function Sx(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 Cx(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,s,a,c,u;for(i<r&&(a=r,r=i,i=a),c=0,u=n.length;c<u;++c)n[c]>=r&&n[c]<=i&&(o<0&&(o=c),s=c);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[s]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function Nc(){const t=Xa().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,s=!1,a=0,c=0,u=.5;delete t.unknown;function f(){const l=e().length,h=r[1]<r[0],p=r[1-h],d=Cc(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=ho(l).map(y=>g+i*y);return n(h?m.reverse():m)}return t.domain=function(l){return arguments.length?(e(l),f()):e()},t.range=function(l){return arguments.length?(r=[+l[0],+l[1]],f()):r.slice()},t.rangeRound=function(l){return r=[+l[0],+l[1]],s=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(s=!!l,f()):s},t.padding=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),a=c,f()):a},t.paddingInner=function(l){return arguments.length?(a=Math.max(0,Math.min(1,l)),f()):a},t.paddingOuter=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.align=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const h=r[1]<r[0],p=h?n().reverse():n(),d=p.length-1;let g=+l[0],m=+l[1],y,x,v;if(!(g!==g||m!==m)&&(m<g&&(v=g,g=m,m=v),!(m<p[0]||g>r[1-h])))return y=Math.max(0,la(p,g)-1),x=g===m?y:la(p,m)-1,g-p[y]>o+1e-10&&++y,h&&(v=y,y=d-x,x=d-v),y>x?void 0:e().slice(y,x+1)},t.invert=function(l){const h=t.invertRange([l,l]);return h&&h[0]},t.copy=function(){return Nc().domain(e()).range(r).round(s).paddingInner(a).paddingOuter(c).align(u)},f()}function Dd(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return Dd(e())},t}function Dx(){return Dd(Nc().paddingInner(1))}var Mx=Array.prototype.map;function Ix(t){return Mx.call(t,Ir)}const Tx=Array.prototype.slice;function Md(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(Nr(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=Ix(r),n):t.slice()},n.range=function(r){return arguments.length?(e=Tx.call(r),n):e.slice()},n.tickFormat=function(r,i){return td(t[0],et(t),r==null?10:r,i)},n.copy=function(){return Md().domain(n.domain()).range(n.range())},n}const Ho={};function Nx(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?Sx(o):o.invertExtent?Cx(o):void 0),o.type=t,o};return r.metadata=lo(ia(n)),r}function W(t,e,n){return arguments.length>1?(Ho[t]=Nx(t,e,n),this):Lx(t)?Ho[t]:void 0}W(Ex,rd),W(qn,nd,le),W(Wt,yc,[le,Wt]),W(Jr,xc,le),W($r,mx,le),W(Go,ld,le),W(xd,bx,[le,Cd]),W(vd,xx,[le,Cd]),W(ht,wc,[le,We]),W("".concat(ht,"-").concat(qn),wc,[le,We]),W("".concat(ht,"-").concat(Wt),gd,[le,We,Wt]),W("".concat(ht,"-").concat(Jr),Ec,[le,We]),W("".concat(ht,"-").concat($r),vx,[le,We]),W("".concat(ht,"-").concat(Go),md,[le,We]),W("".concat(Zn,"-").concat(qn),yd,[le,We]),W("".concat(Zn,"-").concat(Wt),Ad,[le,We,Wt]),W("".concat(Zn,"-").concat(Jr),Sc,[le,We]),W("".concat(Zn,"-").concat($r),wx,[le,We]),W("".concat(Zn,"-").concat(Go),bd,[le,We]),W(Dc,hd,[ti,Dc]),W(wd,dd,ti),W(Ed,pd,ti),W(Tc,Md,[ei,ti]),W(Mc,Xa,ei),W(Sd,Nc,ei),W(Ic,Dx,ei);function Lx(t){return dn(Ho,t)}function ni(t,e){const n=Ho[t];return n&&n.metadata[e]}function nt(t){return ni(t,le)}function Xt(t){return ni(t,ei)}function Kn(t){return ni(t,ti)}function Id(t){return ni(t,Wt)}function Qo(t){return ni(t,We)}function kx(t,e){const n=e[0],r=et(e)-n;return function(i){return t(n+i*r)}}function Vo(t,e,n){return dc(Td(e||"rgb",n),t)}function Ox(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function Td(t,e){const n=ix[Bx(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function Bx(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const Px={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"},Fx={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"};function Nd(t){const e=t.length/6|0,n=new Array(e);for(let r=0;r<e;)n[r]="#"+t.slice(r*6,++r*6);return n}function Ld(t,e){for(const n in t)Lc(n,e(t[n]))}const kd={};Ld(Fx,Nd),Ld(Px,t=>Vo(Nd(t)));function Lc(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(kd[t]=e,this):kd[t]}var mT="";function zx(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?zy(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:c,formatRow:u,formatValue:f}}var Ry=lf(" "),Uy=Ry.parseRows;function jy(t){return t}function Gy(t){if(t==null)return jy;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 Hy(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Qy(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return ff(t,n)})}:ff(t,e)}function ff(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=hf(t,e);return n==null&&r==null?{type:"Feature",properties:i,geometry:o}:r==null?{type:"Feature",id:n,properties:i,geometry:o}:{type:"Feature",id:n,bbox:r,properties:i,geometry:o}}function hf(t,e){var n=Gy(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&&Hy(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 Vy(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 _y(t){return hf(t,Yy.apply(this,arguments))}function Yy(t,e,n){var r,i,o;if(arguments.length>1)r=Wy(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:Vy(t,r)}}function Wy(t,e,n){var r=[],i=[],o;function s(l){var h=l<0?~l:l;(i[h]||(i[h]=[])).push({i:l,g:o})}function a(l){l.forEach(s)}function c(l){l.forEach(a)}function u(l){l.forEach(c)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":a(l.arcs);break;case"MultiLineString":case"Polygon":c(l.arcs);break;case"MultiPolygon":u(l.arcs);break}}return f(e),i.forEach(n==null?function(l){r.push(l[0].i)}:function(l){n(l[0].g,l[l.length-1].g)&&r.push(l[0].i)}),r}function jn(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function ua(t){let e=t,n=t;t.length===1&&(e=(s,a)=>t(s)-a,n=Xy(t));function r(s,a,c,u){for(c==null&&(c=0),u==null&&(u=s.length);c<u;){const f=c+u>>>1;n(s[f],a)<0?c=f+1:u=f}return c}function i(s,a,c,u){for(c==null&&(c=0),u==null&&(u=s.length);c<u;){const f=c+u>>>1;n(s[f],a)>0?u=f:c=f+1}return c}function o(s,a,c,u){c==null&&(c=0),u==null&&(u=s.length);const f=r(s,a,c,u-1);return f>c&&e(s[f-1],a)>-e(s[f],a)?f-1:f}return{left:r,center:o,right:i}}function Xy(t){return(e,n)=>jn(t(e),n)}function df(t){return t===null?NaN:+t}const la=ua(jn).right;ua(df).center;var Nr=la;class qy extends Map{constructor(e,n=Jy){super();if(Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(pf(this,e))}has(e){return super.has(pf(this,e))}set(e,n){return super.set(Zy(this,e),n)}delete(e){return super.delete(Ky(this,e))}}function pf({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Zy({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Ky({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(n),t.delete(r)),n}function Jy(t){return t!==null&&typeof t=="object"?t.valueOf():t}function gf(t){return t}function $y(t,...e){return eA(t,gf,gf,e)}function eA(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new qy,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 tA(t,e){return Array.from(e,n=>t[n])}function nA(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[n=jn]=e;if(n.length===1||e.length>1){const r=Uint32Array.from(t,(i,o)=>o);return e.length>1?(e=e.map(i=>t.map(i)),r.sort((i,o)=>{for(const s of e){const a=jn(s[i],s[o]);if(a)return a}})):(n=t.map(n),r.sort((i,o)=>jn(n[i],n[o]))),tA(t,r)}return t.sort(n)}var fa=Math.sqrt(50),ha=Math.sqrt(10),da=Math.sqrt(2);function pa(t,e,n){var r,i=-1,o,s,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(a=mf(t,e,n))===0||!isFinite(a))return[];if(a>0){let c=Math.round(t/a),u=Math.round(e/a);for(c*a<t&&++c,u*a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)*a}else{a=-a;let c=Math.round(t*a),u=Math.round(e*a);for(c/a<t&&++c,u/a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)/a}return r&&s.reverse(),s}function mf(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=fa?10:o>=ha?5:o>=da?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=fa?10:o>=ha?5:o>=da?2:1)}function fo(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=fa?i*=10:o>=ha?i*=5:o>=da&&(i*=2),e<t?-i:i}function yf(t,e,n=df){if(!!(r=t.length)){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),s=+n(t[o],o,t),a=+n(t[o+1],o+1,t);return s+(a-s)*(i-o)}}function ho(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function rA(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function po(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function Gn(t){return t=po(Math.abs(t)),t?t[1]:NaN}function iA(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 oA(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var sA=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Hn(t){if(!(e=sA.exec(t)))throw new Error("invalid format: "+t);var e;return new ga({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}Hn.prototype=ga.prototype;function ga(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}ga.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function aA(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var Af;function cA(t,e){var n=po(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Af=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+po(t,Math.max(0,e+o-1))[0]}function bf(t,e){var n=po(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}var xf={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:rA,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>bf(t*100,e),r:bf,s:cA,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function vf(t){return t}var wf=Array.prototype.map,Ef=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function uA(t){var e=t.grouping===void 0||t.thousands===void 0?vf:iA(wf.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?vf:oA(wf.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=Hn(l);var h=l.fill,p=l.align,d=l.sign,g=l.symbol,m=l.zero,y=l.width,x=l.comma,v=l.precision,S=l.trim,b=l.type;b==="n"?(x=!0,b="g"):xf[b]||(v===void 0&&(v=12),S=!0,b="g"),(m||h==="0"&&p==="=")&&(m=!0,h="0",p="=");var A=g==="$"?n:g==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",w=g==="$"?r:/[%p]/.test(b)?s:"",E=xf[b],B=/[defgprs%]/.test(b);v=v===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function O(D){var k=A,z=w,G,ue,Ae;if(b==="c")z=E(D)+z,D="";else{D=+D;var Ge=D<0||1/D<0;if(D=isNaN(D)?c:E(Math.abs(D),v),S&&(D=aA(D)),Ge&&+D==0&&d!=="+"&&(Ge=!1),k=(Ge?d==="("?d:a:d==="-"||d==="("?"":d)+k,z=(b==="s"?Ef[8+Af/3]:"")+z+(Ge&&d==="("?")":""),B){for(G=-1,ue=D.length;++G<ue;)if(Ae=D.charCodeAt(G),48>Ae||Ae>57){z=(Ae===46?i+D.slice(G+1):D.slice(G))+z,D=D.slice(0,G);break}}}x&&!m&&(D=e(D,1/0));var R=k.length+D.length+z.length,ie=R<y?new Array(y-R+1).join(h):"";switch(x&&m&&(D=e(ie+D,ie.length?y-z.length:1/0),ie=""),p){case"<":D=k+D+z+ie;break;case"=":D=k+ie+D+z;break;case"^":D=ie.slice(0,R=ie.length>>1)+k+D+z+ie.slice(R);break;default:D=ie+k+D+z;break}return o(D)}return O.toString=function(){return l+""},O}function f(l,h){var p=u((l=Hn(l),l.type="f",l)),d=Math.max(-8,Math.min(8,Math.floor(Gn(h)/3)))*3,g=Math.pow(10,-d),m=Ef[8+d/3];return function(y){return p(g*y)+m}}return{format:u,formatPrefix:f}}var go,Qn,ma;lA({thousands:",",grouping:[3],currency:["$",""]});function lA(t){return go=uA(t),Qn=go.format,ma=go.formatPrefix,go}function Sf(t){return Math.max(0,-Gn(Math.abs(t)))}function Cf(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Gn(e)/3)))*3-Gn(Math.abs(t)))}function Df(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Gn(e)-Gn(t))+1}var ya=new Date,Aa=new Date;function fe(t,e,n,r){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=function(o){return t(o=new Date(+o)),o},i.ceil=function(o){return t(o=new Date(o-1)),e(o,1),t(o),o},i.round=function(o){var s=i(o),a=i.ceil(o);return o-s<a-o?s:a},i.offset=function(o,s){return e(o=new Date(+o),s==null?1:Math.floor(s)),o},i.range=function(o,s,a){var c=[],u;if(o=i.ceil(o),a=a==null?1:Math.floor(a),!(o<s)||!(a>0))return c;do c.push(u=new Date(+o)),e(o,a),t(o);while(u<o&&o<s);return c},i.filter=function(o){return fe(function(s){if(s>=s)for(;t(s),!o(s);)s.setTime(s-1)},function(s,a){if(s>=s)if(a<0)for(;++a<=0;)for(;e(s,-1),!o(s););else for(;--a>=0;)for(;e(s,1),!o(s););})},n&&(i.count=function(o,s){return ya.setTime(+o),Aa.setTime(+s),t(ya),t(Aa),Math.floor(n(ya,Aa))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(s){return r(s)%o==0}:function(s){return i.count(0,s)%o==0}):i}),i}var ba=fe(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});ba.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?fe(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):ba};var xa=ba;const St=1e3,Ye=St*60,Ct=Ye*60,pn=Ct*24,va=pn*7,Mf=pn*30,wa=pn*365;var fA=fe(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*St)},function(t,e){return(e-t)/St},function(t){return t.getUTCSeconds()}),jt=fA,hA=fe(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*St)},function(t,e){t.setTime(+t+e*Ye)},function(t,e){return(e-t)/Ye},function(t){return t.getMinutes()}),Ea=hA,dA=fe(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*St-t.getMinutes()*Ye)},function(t,e){t.setTime(+t+e*Ct)},function(t,e){return(e-t)/Ct},function(t){return t.getHours()}),Sa=dA,pA=fe(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ye)/pn,t=>t.getDate()-1),gn=pA;function mn(t){return fe(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,n){e.setDate(e.getDate()+n*7)},function(e,n){return(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*Ye)/va})}var mo=mn(0),Ca=mn(1);mn(2),mn(3);var Lr=mn(4);mn(5),mn(6);var gA=fe(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()}),yo=gA,If=fe(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});If.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:fe(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)})};var Gt=If,mA=fe(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Ye)},function(t,e){return(e-t)/Ye},function(t){return t.getUTCMinutes()}),Da=mA,yA=fe(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*Ct)},function(t,e){return(e-t)/Ct},function(t){return t.getUTCHours()}),Ma=yA,AA=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=AA;function An(t){return fe(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCDate(e.getUTCDate()+n*7)},function(e,n){return(n-e)/va})}var Ao=An(0),Ia=An(1);An(2),An(3);var kr=An(4);An(5),An(6);var bA=fe(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()}),bo=bA,Tf=fe(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});Tf.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:fe(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})};var Ht=Tf;function Nf(t,e,n,r,i,o){const s=[[jt,1,St],[jt,5,5*St],[jt,15,15*St],[jt,30,30*St],[o,1,Ye],[o,5,5*Ye],[o,15,15*Ye],[o,30,30*Ye],[i,1,Ct],[i,3,3*Ct],[i,6,6*Ct],[i,12,12*Ct],[r,1,pn],[r,2,2*pn],[n,1,va],[e,1,Mf],[e,3,3*Mf],[t,1,wa]];function a(u,f,l){const h=f<u;h&&([u,f]=[f,u]);const 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=ua(([,,m])=>m).right(s,h);if(p===s.length)return t.every(fo(u/wa,f/wa,l));if(p===0)return xa.every(Math.max(fo(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[xA,vA]=Nf(Ht,bo,Ao,yn,Ma,Da),[wA,EA]=Nf(Gt,yo,mo,gn,Sa,Ea),Or="year",Br="quarter",Pr="month",Fr="week",zr="date",xo="day",Ta="dayofyear",Rr="hours",Ur="minutes",jr="seconds",vo="milliseconds";[Or,Br,Pr,Fr,zr,xo,Ta,Rr,Ur,jr,vo].reduce((t,e,n)=>(t[e]=1+n,t),{});const SA={[Or]:Gt,[Br]:yo.every(3),[Pr]:yo,[Fr]:mo,[zr]:gn,[xo]:gn,[Ta]:gn,[Rr]:Sa,[Ur]:Ea,[jr]:jt,[vo]:xa},CA={[Or]:Ht,[Br]:bo.every(3),[Pr]:bo,[Fr]:Ao,[zr]:yn,[xo]:yn,[Ta]:yn,[Rr]:Ma,[Ur]:Da,[jr]:jt,[vo]:xa};function DA(t){return SA[t]}function MA(t){return CA[t]}function Na(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function La(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Gr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Lf(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,s=t.shortDays,a=t.months,c=t.shortMonths,u=Hr(i),f=Qr(i),l=Hr(o),h=Qr(o),p=Hr(s),d=Qr(s),g=Hr(a),m=Qr(a),y=Hr(c),x=Qr(c),v={a:Ge,A:R,b:ie,B:eo,c:null,d:zf,e:zf,f:ZA,g:s2,G:c2,H:WA,I:XA,j:qA,L:Rf,m:KA,M:JA,p:to,q:ea,Q:Vf,s:_f,S:$A,u:e2,U:t2,V:n2,w:r2,W:i2,x:null,X:null,y:o2,Y:a2,Z:u2,"%":Qf},S={a:ef,A:aT,b:cT,B:uT,c:null,d:jf,e:jf,f:d2,g:E2,G:C2,H:l2,I:f2,j:h2,L:Gf,m:p2,M:g2,p:lT,q:fT,Q:Vf,s:_f,S:m2,u:y2,U:A2,V:b2,w:x2,W:v2,x:null,X:null,y:w2,Y:S2,Z:D2,"%":Qf},b={a:O,A:D,b:k,B:z,c:G,d:Pf,e:Pf,f:QA,g:Bf,G:Of,H:Ff,I:Ff,j:UA,L:HA,m:RA,M:jA,p:B,q:zA,Q:_A,s:YA,S:GA,u:kA,U:OA,V:BA,w:LA,W:PA,x:ue,X:Ae,y:Bf,Y:Of,Z:FA,"%":VA};v.x=A(n,v),v.X=A(r,v),v.c=A(e,v),S.x=A(n,S),S.X=A(r,S),S.c=A(e,S);function A(L,j){return function(V){var I=[],Fe=-1,K=0,He=L.length,Qe,Un,sy;for(V instanceof Date||(V=new Date(+V));++Fe<He;)L.charCodeAt(Fe)===37&&(I.push(L.slice(K,Fe)),(Un=kf[Qe=L.charAt(++Fe)])!=null?Qe=L.charAt(++Fe):Un=Qe==="e"?" ":"0",(sy=j[Qe])&&(Qe=sy(V,Un)),I.push(Qe),K=Fe+1);return I.push(L.slice(K,Fe)),I.join("")}}function w(L,j){return function(V){var I=Gr(1900,void 0,1),Fe=E(I,L,V+="",0),K,He;if(Fe!=V.length)return null;if("Q"in I)return new Date(I.Q);if("s"in I)return new Date(I.s*1e3+("L"in I?I.L:0));if(j&&!("Z"in I)&&(I.Z=0),"p"in I&&(I.H=I.H%12+I.p*12),I.m===void 0&&(I.m="q"in I?I.q:0),"V"in I){if(I.V<1||I.V>53)return null;"w"in I||(I.w=1),"Z"in I?(K=La(Gr(I.y,0,1)),He=K.getUTCDay(),K=He>4||He===0?Ia.ceil(K):Ia(K),K=yn.offset(K,(I.V-1)*7),I.y=K.getUTCFullYear(),I.m=K.getUTCMonth(),I.d=K.getUTCDate()+(I.w+6)%7):(K=Na(Gr(I.y,0,1)),He=K.getDay(),K=He>4||He===0?Ca.ceil(K):Ca(K),K=gn.offset(K,(I.V-1)*7),I.y=K.getFullYear(),I.m=K.getMonth(),I.d=K.getDate()+(I.w+6)%7)}else("W"in I||"U"in I)&&("w"in I||(I.w="u"in I?I.u%7:"W"in I?1:0),He="Z"in I?La(Gr(I.y,0,1)).getUTCDay():Na(Gr(I.y,0,1)).getDay(),I.m=0,I.d="W"in I?(I.w+6)%7+I.W*7-(He+5)%7:I.w+I.U*7-(He+6)%7);return"Z"in I?(I.H+=I.Z/100|0,I.M+=I.Z%100,La(I)):Na(I)}}function E(L,j,V,I){for(var Fe=0,K=j.length,He=V.length,Qe,Un;Fe<K;){if(I>=He)return-1;if(Qe=j.charCodeAt(Fe++),Qe===37){if(Qe=j.charAt(Fe++),Un=b[Qe in kf?j.charAt(Fe++):Qe],!Un||(I=Un(L,V,I))<0)return-1}else if(Qe!=V.charCodeAt(I++))return-1}return I}function B(L,j,V){var I=u.exec(j.slice(V));return I?(L.p=f.get(I[0].toLowerCase()),V+I[0].length):-1}function O(L,j,V){var I=p.exec(j.slice(V));return I?(L.w=d.get(I[0].toLowerCase()),V+I[0].length):-1}function D(L,j,V){var I=l.exec(j.slice(V));return I?(L.w=h.get(I[0].toLowerCase()),V+I[0].length):-1}function k(L,j,V){var I=y.exec(j.slice(V));return I?(L.m=x.get(I[0].toLowerCase()),V+I[0].length):-1}function z(L,j,V){var I=g.exec(j.slice(V));return I?(L.m=m.get(I[0].toLowerCase()),V+I[0].length):-1}function G(L,j,V){return E(L,e,j,V)}function ue(L,j,V){return E(L,n,j,V)}function Ae(L,j,V){return E(L,r,j,V)}function Ge(L){return s[L.getDay()]}function R(L){return o[L.getDay()]}function ie(L){return c[L.getMonth()]}function eo(L){return a[L.getMonth()]}function to(L){return i[+(L.getHours()>=12)]}function ea(L){return 1+~~(L.getMonth()/3)}function ef(L){return s[L.getUTCDay()]}function aT(L){return o[L.getUTCDay()]}function cT(L){return c[L.getUTCMonth()]}function uT(L){return a[L.getUTCMonth()]}function lT(L){return i[+(L.getUTCHours()>=12)]}function fT(L){return 1+~~(L.getUTCMonth()/3)}return{format:function(L){var j=A(L+="",v);return j.toString=function(){return L},j},parse:function(L){var j=w(L+="",!1);return j.toString=function(){return L},j},utcFormat:function(L){var j=A(L+="",S);return j.toString=function(){return L},j},utcParse:function(L){var j=w(L+="",!0);return j.toString=function(){return L},j}}}var kf={"-":"",_:" ","0":"0"},he=/^\s*\d+/,IA=/^%/,TA=/[\\^$*+?|[\]().{}]/g;function H(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function NA(t){return t.replace(TA,"\\$&")}function Hr(t){return new RegExp("^(?:"+t.map(NA).join("|")+")","i")}function Qr(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function LA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function kA(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 BA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function PA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Of(t,e,n){var r=he.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Bf(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function FA(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 zA(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 RA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Pf(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function UA(t,e,n){var r=he.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Ff(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function jA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function GA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function HA(t,e,n){var r=he.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function QA(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 VA(t,e,n){var r=IA.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function _A(t,e,n){var r=he.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function YA(t,e,n){var r=he.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function zf(t,e){return H(t.getDate(),e,2)}function WA(t,e){return H(t.getHours(),e,2)}function XA(t,e){return H(t.getHours()%12||12,e,2)}function qA(t,e){return H(1+gn.count(Gt(t),t),e,3)}function Rf(t,e){return H(t.getMilliseconds(),e,3)}function ZA(t,e){return Rf(t,e)+"000"}function KA(t,e){return H(t.getMonth()+1,e,2)}function JA(t,e){return H(t.getMinutes(),e,2)}function $A(t,e){return H(t.getSeconds(),e,2)}function e2(t){var e=t.getDay();return e===0?7:e}function t2(t,e){return H(mo.count(Gt(t)-1,t),e,2)}function Uf(t){var e=t.getDay();return e>=4||e===0?Lr(t):Lr.ceil(t)}function n2(t,e){return t=Uf(t),H(Lr.count(Gt(t),t)+(Gt(t).getDay()===4),e,2)}function r2(t){return t.getDay()}function i2(t,e){return H(Ca.count(Gt(t)-1,t),e,2)}function o2(t,e){return H(t.getFullYear()%100,e,2)}function s2(t,e){return t=Uf(t),H(t.getFullYear()%100,e,2)}function a2(t,e){return H(t.getFullYear()%1e4,e,4)}function c2(t,e){var n=t.getDay();return t=n>=4||n===0?Lr(t):Lr.ceil(t),H(t.getFullYear()%1e4,e,4)}function u2(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+H(e/60|0,"0",2)+H(e%60,"0",2)}function jf(t,e){return H(t.getUTCDate(),e,2)}function l2(t,e){return H(t.getUTCHours(),e,2)}function f2(t,e){return H(t.getUTCHours()%12||12,e,2)}function h2(t,e){return H(1+yn.count(Ht(t),t),e,3)}function Gf(t,e){return H(t.getUTCMilliseconds(),e,3)}function d2(t,e){return Gf(t,e)+"000"}function p2(t,e){return H(t.getUTCMonth()+1,e,2)}function g2(t,e){return H(t.getUTCMinutes(),e,2)}function m2(t,e){return H(t.getUTCSeconds(),e,2)}function y2(t){var e=t.getUTCDay();return e===0?7:e}function A2(t,e){return H(Ao.count(Ht(t)-1,t),e,2)}function Hf(t){var e=t.getUTCDay();return e>=4||e===0?kr(t):kr.ceil(t)}function b2(t,e){return t=Hf(t),H(kr.count(Ht(t),t)+(Ht(t).getUTCDay()===4),e,2)}function x2(t){return t.getUTCDay()}function v2(t,e){return H(Ia.count(Ht(t)-1,t),e,2)}function w2(t,e){return H(t.getUTCFullYear()%100,e,2)}function E2(t,e){return t=Hf(t),H(t.getUTCFullYear()%100,e,2)}function S2(t,e){return H(t.getUTCFullYear()%1e4,e,4)}function C2(t,e){var n=t.getUTCDay();return t=n>=4||n===0?kr(t):kr.ceil(t),H(t.getUTCFullYear()%1e4,e,4)}function D2(){return"+0000"}function Qf(){return"%"}function Vf(t){return+t}function _f(t){return Math.floor(+t/1e3)}var Vn,ka,Yf,Oa,Wf;M2({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 M2(t){return Vn=Lf(t),ka=Vn.format,Yf=Vn.parse,Oa=Vn.utcFormat,Wf=Vn.utcParse,Vn}function Vr(t){const e={};return n=>e[n]||(e[n]=t(n))}function I2(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=Vr(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=Hn(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return I2(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=Hn(s==null?",f":s);const a=fo(r,i,o),c=Math.max(Math.abs(r),Math.abs(i));let u;if(s.precision==null)switch(s.type){case"s":return isNaN(u=Cf(a,c))||(s.precision=u),n(s,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=Df(a,c))||(s.precision=u-(s.type==="e"));break}case"f":case"%":{isNaN(u=Sf(a))||(s.precision=u-(s.type==="%")*2);break}}return e(s)}}}L2();function L2(){return N2({format:Qn,formatPrefix:ma})}function Xf(t,e,n){n=n||{},ze(n)||re("Invalid time multi-format specifier: ".concat(n));const r=e(jr),i=e(Ur),o=e(Rr),s=e(zr),a=e(Fr),c=e(Pr),u=e(Br),f=e(Or),l=t(n[vo]||".%L"),h=t(n[jr]||":%S"),p=t(n[Ur]||"%I:%M"),d=t(n[Rr]||"%I %p"),g=t(n[zr]||n[xo]||"%a %d"),m=t(n[Fr]||"%b %d"),y=t(n[Pr]||"%B"),x=t(n[Br]||"%B"),v=t(n[Or]||"%Y");return S=>(r(S)<S?l:i(S)<S?h:o(S)<S?p:s(S)<S?d:c(S)<S?a(S)<S?g:m:f(S)<S?u(S)<S?y:x:v)(S)}function qf(t){const e=Vr(t.format),n=Vr(t.utcFormat);return{timeFormat:r=>oe(r)?e(r):Xf(e,DA,r),utcFormat:r=>oe(r)?n(r):Xf(n,MA,r),timeParse:Vr(t.parse),utcParse:Vr(t.utcParse)}}let Ba;k2();function k2(){return Ba=qf({format:ka,parse:Yf,utcFormat:Oa,utcParse:Wf})}function O2(t){return qf(Lf(t))}function B2(t){return arguments.length?Ba=O2(t):Ba}const P2=/^(data:|([A-Za-z]+:)?\/\/)/,F2=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,z2=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Zf="file://";function R2(t,e){return n=>({options:n||{},sanitize:j2,load:U2,fileAccess:!!e,file:G2(e),http:Q2(t)})}async function U2(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function j2(t,e){e=oa({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=F2.test(t.replace(z2,""));(t==null||typeof t!="string"||!a)&&re("Sanitize failure, invalid URI: "+uo(t));const c=P2.test(t);return(s=e.baseURL)&&!c&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(Zf))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(Zf.length):t.startsWith("//")&&(e.defaultProtocol==="file"?(t=t.slice(2),o=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!o}),r.href=t,e.target&&(r.target=e.target+""),e.rel&&(r.rel=e.rel+""),e.context==="image"&&e.crossOrigin&&(r.crossOrigin=e.crossOrigin+""),r}function G2(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):H2}async function H2(){re("No file system access.")}function Q2(t){return t?async function(e,n){const r=oa({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Te(o[i])?o[i]():o.text():re(o.status+""+o.statusText)}:V2}async function V2(){re("No HTTP fetch method available.")}const _2=t=>t!=null&&t===t,Y2=t=>t==="true"||t==="false"||t===!0||t===!1,W2=t=>!Number.isNaN(Date.parse(t)),Kf=t=>!Number.isNaN(+t)&&!(t instanceof Date),X2=t=>Kf(t)&&Number.isInteger(+t),Jf={boolean:Ly,integer:Ir,number:Ir,date:Oy,string:By,unknown:ro},wo=[Y2,X2,Kf,W2],q2=["boolean","integer","number","date"];function $f(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=wo.length,i=wo.map((o,s)=>s+1);for(let o=0,s=0,a,c;o<n;++o)for(c=e?t[o][e]:t[o],a=0;a<r;++a)if(i[a]&&_2(c)&&!wo[a](c)&&(i[a]=0,++s,s===wo.length))return"string";return q2[i.reduce((o,s)=>o===0?s:o,0)-1]}function Z2(t,e){return e.reduce((n,r)=>(n[r]=$f(t,r),n),{})}function eh(t){const e=function(n,r){const i={delimiter:t};return Pa(n,r?oa(r,i):i)};return e.responseType="text",e}function Pa(t,e){return e.header&&(t=e.header.map(uo).join(e.delimiter)+`
6
+ `+t),lf(e.delimiter).parse(t+"")}Pa.responseType="text";function K2(t){return typeof Buffer=="function"&&Te(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function Fa(t,e){const n=e&&e.property?no(e.property):ro;return ze(t)&&!K2(t)?J2(n(t),e):n(JSON.parse(t))}Fa.responseType="json";function J2(t,e){return!_e(t)&&Ty(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const $2={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function th(t,e){let n,r,i,o;return t=Fa(t,e),e&&e.feature?(n=Qy,i=e.feature):e&&e.mesh?(n=_y,i=e.mesh,o=$2[e.filter]):re("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):re("Invalid TopoJSON object: "+i),r&&r.features||[r]}th.responseType="json";const za={dsv:Pa,csv:eh(","),tsv:eh(" "),json:Fa,topojson:th};function nh(t,e){return arguments.length>1?(za[t]=e,this):dn(za,t)?za[t]:null}function rh(t,e,n,r){e=e||{};const i=nh(e.type||"json");return i||re("Unknown data format type: "+e.type),t=i(t,e),e.parse&&eb(t,e.parse,n,r),dn(t,"columns")&&delete t.columns,t}function eb(t,e,n,r){if(!t.length)return;const i=B2();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=Z2(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(!Jf[d])throw Error("Illegal format pattern: "+p+":"+d);return Jf[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 _r=R2(typeof fetch!="undefined"&&fetch,null);function Ra(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Eo(t){let e=t,n=t,r=t;t.length!==2&&(e=(a,c)=>t(a)-c,n=Ra,r=(a,c)=>Ra(t(a),c));function i(a,c,u=0,f=a.length){if(u<f){if(n(c,c)!==0)return f;do{const l=u+f>>>1;r(a[l],c)<0?u=l+1:f=l}while(u<f)}return u}function o(a,c,u=0,f=a.length){if(u<f){if(n(c,c)!==0)return f;do{const l=u+f>>>1;r(a[l],c)<=0?u=l+1:f=l}while(u<f)}return u}function s(a,c,u=0,f=a.length){const l=i(a,c,u,f-1);return l>u&&e(a[l-1],c)>-e(a[l],c)?l-1:l}return{left:i,center:s,right:o}}function ih(t){return t===null?NaN:+t}const oh=Eo(Ra),tb=oh.right;oh.left,Eo(ih).center;var nb=tb;function rb(t,e){let n,r;if(e===void 0)for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));else{let i=-1;for(let o of t)(o=e(o,++i,t))!=null&&(n===void 0?o>=o&&(n=r=o):(n>o&&(n=o),r<o&&(r=o)))}return[n,r]}class So extends Map{constructor(e,n=sb){super();if(Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(sh(this,e))}has(e){return super.has(sh(this,e))}set(e,n){return super.set(ib(this,e),n)}delete(e){return super.delete(ob(this,e))}}function sh({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function ib({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function ob({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function sb(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Co(t){return t}function Do(t,...e){return Ua(t,Co,Co,e)}function ab(t,...e){return Ua(t,Array.from,Co,e)}function cb(t,e,...n){return Ua(t,Co,e,n)}function Ua(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new So,c=r[s++];let u=-1;for(const f of o){const l=c(f,++u,o),h=a.get(l);h?h.push(f):a.set(l,[f])}for(const[f,l]of a)a.set(f,i(l,s));return e(a)}(t,0)}var ja=Math.sqrt(50),Ga=Math.sqrt(10),Ha=Math.sqrt(2);function ub(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=lb(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 lb(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=ja?10:o>=Ga?5:o>=Ha?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=ja?10:o>=Ga?5:o>=Ha?2:1)}function Qa(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=ja?i*=10:o>=Ga?i*=5:o>=Ha&&(i*=2),e<t?-i:i}function fb(t,e,n=ih){if(!!(r=t.length)){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),s=+n(t[o],o,t),a=+n(t[o+1],o+1,t);return s+(a-s)*(i-o)}}function Mo(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function Io(t,e){let n=0;if(e===void 0)for(let r of t)(r=+r)&&(n+=r);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}function hb(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function To(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function db(t){return t=To(Math.abs(t)),t?t[1]:NaN}function pb(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 gb(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var mb=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function No(t){if(!(e=mb.exec(t)))throw new Error("invalid format: "+t);var e;return new Va({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}No.prototype=Va.prototype;function Va(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}Va.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function yb(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var ah;function Ab(t,e){var n=To(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(ah=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+To(t,Math.max(0,e+o-1))[0]}function ch(t,e){var n=To(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}var uh={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:hb,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>ch(t*100,e),r:ch,s:Ab,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function lh(t){return t}var fh=Array.prototype.map,hh=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function bb(t){var e=t.grouping===void 0||t.thousands===void 0?lh:pb(fh.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?lh:gb(fh.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=No(l);var h=l.fill,p=l.align,d=l.sign,g=l.symbol,m=l.zero,y=l.width,x=l.comma,v=l.precision,S=l.trim,b=l.type;b==="n"?(x=!0,b="g"):uh[b]||(v===void 0&&(v=12),S=!0,b="g"),(m||h==="0"&&p==="=")&&(m=!0,h="0",p="=");var A=g==="$"?n:g==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",w=g==="$"?r:/[%p]/.test(b)?s:"",E=uh[b],B=/[defgprs%]/.test(b);v=v===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function O(D){var k=A,z=w,G,ue,Ae;if(b==="c")z=E(D)+z,D="";else{D=+D;var Ge=D<0||1/D<0;if(D=isNaN(D)?c:E(Math.abs(D),v),S&&(D=yb(D)),Ge&&+D==0&&d!=="+"&&(Ge=!1),k=(Ge?d==="("?d:a:d==="-"||d==="("?"":d)+k,z=(b==="s"?hh[8+ah/3]:"")+z+(Ge&&d==="("?")":""),B){for(G=-1,ue=D.length;++G<ue;)if(Ae=D.charCodeAt(G),48>Ae||Ae>57){z=(Ae===46?i+D.slice(G+1):D.slice(G))+z,D=D.slice(0,G);break}}}x&&!m&&(D=e(D,1/0));var R=k.length+D.length+z.length,ie=R<y?new Array(y-R+1).join(h):"";switch(x&&m&&(D=e(ie+D,ie.length?y-z.length:1/0),ie=""),p){case"<":D=k+D+z+ie;break;case"=":D=k+ie+D+z;break;case"^":D=ie.slice(0,R=ie.length>>1)+k+D+z+ie.slice(R);break;default:D=ie+k+D+z;break}return o(D)}return O.toString=function(){return l+""},O}function f(l,h){var p=u((l=No(l),l.type="f",l)),d=Math.max(-8,Math.min(8,Math.floor(db(h)/3)))*3,g=Math.pow(10,-d),m=hh[8+d/3];return function(y){return p(g*y)+m}}return{format:u,formatPrefix:f}}var _a,Le;xb({thousands:",",grouping:[3],currency:["$",""]});function xb(t){return _a=bb(t),Le=_a.format,_a}const dh=1;function Ya(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,s=.5,a=0;const u=f=>(f-t[0])/n*r+e[0];return u.invert=f=>(f-e[0])/r*n+t[0],u.domain=function(f){if(arguments.length){if(t=rb(f),n=t[1]-t[0],n<dh){n=dh;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return u}else return t},u.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],u):e},u.numberingOffset=function(f){return arguments.length?(a=f,u):a},u.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),u):i},u.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),u):i},u.paddingOuter=function(f){return arguments.length?(o=f,u):o},u.align=function(f){return arguments.length?(s=Math.max(0,Math.min(1,f)),u):s},u.step=()=>r/n,u.bandwidth=()=>u.step(),u.ticks=f=>{const l=u.align(),h=u.numberingOffset();return ub(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=Qa(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?Le(","):Le(".3s");return d=>p(d+a)},u.copy=()=>Ya().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),u}function vb(){const t=Ya().numberingOffset(1);let e;t.genome=function(r){return arguments.length?(e=r,t):e},t.ticks=r=>{if(!e)return[];const i=t.domain(),o=t.numberingOffset(),[s,a]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),c=Math.max(1,Qa(i[0],i[1],r)),u=[];for(let f=s.index;f<=a.index;f++){const l=e.chromosomes[f],h=Math.max(l.continuousStart+c,i[0]-(i[0]-l.continuousStart)%c),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=Qa(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?Le(","):Le(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>u(f(l)+a)};const n=t.copy;return t.copy=()=>n().genome(e),t}function wb(t){return t.type=="locus"}function ct(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function Qt(t,e){switch(arguments.length){case 0:break;case 1:{typeof t=="function"?this.interpolator(t):this.range(t);break}default:{this.domain(t),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const Wa=Symbol("implicit");function Xa(){var t=new Map,e=[],n=[],r=Wa;function i(o){var s=o+"",a=t.get(s);if(!a){if(r!==Wa)return r;t.set(s,a=e.push(o))}return n[(a-1)%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Map;for(const s of o){const a=s+"";t.has(a)||t.set(a,e.push(s))}return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return Xa(e,n).unknown(r)},ct.apply(i,arguments),i}function _n(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Yr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Vt(){}var bn=.7,Yn=1/bn,Wn="\\s*([+-]?\\d+)\\s*",Wr="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",ut="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Eb=/^#([0-9a-f]{3,8})$/,Sb=new RegExp("^rgb\\("+[Wn,Wn,Wn]+"\\)$"),Cb=new RegExp("^rgb\\("+[ut,ut,ut]+"\\)$"),Db=new RegExp("^rgba\\("+[Wn,Wn,Wn,Wr]+"\\)$"),Mb=new RegExp("^rgba\\("+[ut,ut,ut,Wr]+"\\)$"),Ib=new RegExp("^hsl\\("+[Wr,ut,ut]+"\\)$"),Tb=new RegExp("^hsla\\("+[Wr,ut,ut,Wr]+"\\)$"),ph={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};_n(Vt,Xr,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:gh,formatHex:gh,formatHsl:Nb,formatRgb:mh,toString:mh});function gh(){return this.rgb().formatHex()}function Nb(){return vh(this).formatHsl()}function mh(){return this.rgb().formatRgb()}function Xr(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Eb.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?yh(e):n===3?new me(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Lo(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Lo(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Sb.exec(t))?new me(e[1],e[2],e[3],1):(e=Cb.exec(t))?new me(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Db.exec(t))?Lo(e[1],e[2],e[3],e[4]):(e=Mb.exec(t))?Lo(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Ib.exec(t))?xh(e[1],e[2]/100,e[3]/100,1):(e=Tb.exec(t))?xh(e[1],e[2]/100,e[3]/100,e[4]):ph.hasOwnProperty(t)?yh(ph[t]):t==="transparent"?new me(NaN,NaN,NaN,0):null}function yh(t){return new me(t>>16&255,t>>8&255,t&255,1)}function Lo(t,e,n,r){return r<=0&&(t=e=n=NaN),new me(t,e,n,r)}function qa(t){return t instanceof Vt||(t=Xr(t)),t?(t=t.rgb(),new me(t.r,t.g,t.b,t.opacity)):new me}function ko(t,e,n,r){return arguments.length===1?qa(t):new me(t,e,n,r==null?1:r)}function me(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}_n(me,ko,Yr(Vt,{brighter:function(t){return t=t==null?Yn:Math.pow(Yn,t),new me(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=t==null?bn:Math.pow(bn,t),new me(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ah,formatHex:Ah,formatRgb:bh,toString:bh}));function Ah(){return"#"+Za(this.r)+Za(this.g)+Za(this.b)}function bh(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(t===1?")":", "+t+")")}function Za(t){return t=Math.max(0,Math.min(255,Math.round(t)||0)),(t<16?"0":"")+t.toString(16)}function xh(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new lt(t,e,n,r)}function vh(t){if(t instanceof lt)return new lt(t.h,t.s,t.l,t.opacity);if(t instanceof Vt||(t=Xr(t)),!t)return new lt;if(t instanceof lt)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,a=o-i,c=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=c<.5?o+i:2-o-i,s*=60):a=c>0&&c<1?0:s,new lt(s,a,c,t.opacity)}function Ka(t,e,n,r){return arguments.length===1?vh(t):new lt(t,e,n,r==null?1:r)}function lt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}_n(lt,Ka,Yr(Vt,{brighter:function(t){return t=t==null?Yn:Math.pow(Yn,t),new lt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?bn:Math.pow(bn,t),new lt(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new me(Ja(t>=240?t-240:t+120,i,r),Ja(t,i,r),Ja(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"hsl(":"hsla(")+(this.h||0)+", "+(this.s||0)*100+"%, "+(this.l||0)*100+"%"+(t===1?")":", "+t+")")}}));function Ja(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const wh=Math.PI/180,Eh=180/Math.PI,Oo=18,Sh=.96422,Ch=1,Dh=.82521,Mh=4/29,Xn=6/29,Ih=3*Xn*Xn,Lb=Xn*Xn*Xn;function Th(t){if(t instanceof ft)return new ft(t.l,t.a,t.b,t.opacity);if(t instanceof Dt)return Nh(t);t instanceof me||(t=qa(t));var e=rc(t.r),n=rc(t.g),r=rc(t.b),i=ec((.2225045*e+.7168786*n+.0606169*r)/Ch),o,s;return e===n&&n===r?o=s=i:(o=ec((.4360747*e+.3850649*n+.1430804*r)/Sh),s=ec((.0139322*e+.0971045*n+.7141733*r)/Dh)),new ft(116*i-16,500*(o-i),200*(i-s),t.opacity)}function $a(t,e,n,r){return arguments.length===1?Th(t):new ft(t,e,n,r==null?1:r)}function ft(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}_n(ft,$a,Yr(Vt,{brighter:function(t){return new ft(this.l+Oo*(t==null?1:t),this.a,this.b,this.opacity)},darker:function(t){return new ft(this.l-Oo*(t==null?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=Sh*tc(e),t=Ch*tc(t),n=Dh*tc(n),new me(nc(3.1338561*e-1.6168667*t-.4906146*n),nc(-.9787684*e+1.9161415*t+.033454*n),nc(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function ec(t){return t>Lb?Math.pow(t,1/3):t/Ih+Mh}function tc(t){return t>Xn?t*t*t:Ih*(t-Mh)}function nc(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function rc(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function kb(t){if(t instanceof Dt)return new Dt(t.h,t.c,t.l,t.opacity);if(t instanceof ft||(t=Th(t)),t.a===0&&t.b===0)return new Dt(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Eh;return new Dt(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function ic(t,e,n,r){return arguments.length===1?kb(t):new Dt(t,e,n,r==null?1:r)}function Dt(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function Nh(t){if(isNaN(t.h))return new ft(t.l,0,0,t.opacity);var e=t.h*wh;return new ft(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}_n(Dt,ic,Yr(Vt,{brighter:function(t){return new Dt(this.h,this.c,this.l+Oo*(t==null?1:t),this.opacity)},darker:function(t){return new Dt(this.h,this.c,this.l-Oo*(t==null?1:t),this.opacity)},rgb:function(){return Nh(this).rgb()}}));var Lh=-.14861,oc=1.78277,sc=-.29227,Bo=-.90649,qr=1.97294,kh=qr*Bo,Oh=qr*oc,Bh=oc*sc-Bo*Lh;function Ob(t){if(t instanceof xn)return new xn(t.h,t.s,t.l,t.opacity);t instanceof me||(t=qa(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(Bh*r+kh*e-Oh*n)/(Bh+kh-Oh),o=r-i,s=(qr*(n-i)-sc*o)/Bo,a=Math.sqrt(s*s+o*o)/(qr*i*(1-i)),c=a?Math.atan2(s,o)*Eh-120:NaN;return new xn(c<0?c+360:c,a,i,t.opacity)}function ac(t,e,n,r){return arguments.length===1?Ob(t):new xn(t,e,n,r==null?1:r)}function xn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}_n(xn,ac,Yr(Vt,{brighter:function(t){return t=t==null?Yn:Math.pow(Yn,t),new xn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?bn:Math.pow(bn,t),new xn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*wh,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new me(255*(e+n*(Lh*r+oc*i)),255*(e+n*(sc*r+Bo*i)),255*(e+n*(qr*r)),this.opacity)}}));function Ph(t,e,n,r,i){var o=t*t,s=o*t;return((1-3*t+3*o-s)*e+(4-6*o+3*s)*n+(1+3*t+3*o-3*s)*r+s*i)/6}function Fh(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],s=r>0?t[r-1]:2*i-o,a=r<e-1?t[r+2]:2*o-i;return Ph((n-r/e)*e,s,i,o,a)}}function zh(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],s=t[(r+1)%e],a=t[(r+2)%e];return Ph((n-r/e)*e,i,o,s,a)}}var Po=t=>()=>t;function Rh(t,e){return function(n){return t+n*e}}function Bb(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Fo(t,e){var n=e-t;return n?Rh(t,n>180||n<-180?n-360*Math.round(n/360):n):Po(isNaN(t)?e:t)}function Pb(t){return(t=+t)==1?de:function(e,n){return n-e?Bb(e,n,t):Po(isNaN(e)?n:e)}}function de(t,e){var n=e-t;return n?Rh(t,n):Po(isNaN(t)?e:t)}var cc=function t(e){var n=Pb(e);function r(i,o){var s=n((i=ko(i)).r,(o=ko(o)).r),a=n(i.g,o.g),c=n(i.b,o.b),u=de(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r}(1);function Uh(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),s,a;for(s=0;s<n;++s)a=ko(e[s]),r[s]=a.r||0,i[s]=a.g||0,o[s]=a.b||0;return r=t(r),i=t(i),o=t(o),a.opacity=1,function(c){return a.r=r(c),a.g=i(c),a.b=o(c),a+""}}}var Fb=Uh(Fh),zb=Uh(zh);function uc(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function jh(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Rb(t,e){return(jh(e)?uc:Gh)(t,e)}function Gh(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),s;for(s=0;s<r;++s)i[s]=_t(t[s],e[s]);for(;s<n;++s)o[s]=e[s];return function(a){for(s=0;s<r;++s)o[s]=i[s](a);return o}}function Hh(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function tt(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function Qh(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=_t(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var lc=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,fc=new RegExp(lc.source,"g");function Ub(t){return function(){return t}}function jb(t){return function(e){return t(e)+""}}function Vh(t,e){var n=lc.lastIndex=fc.lastIndex=0,r,i,o,s=-1,a=[],c=[];for(t=t+"",e=e+"";(r=lc.exec(t))&&(i=fc.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,c.push({i:s,x:tt(r,i)})),n=fc.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?c[0]?jb(c[0].x):Ub(e):(e=c.length,function(u){for(var f=0,l;f<e;++f)a[(l=c[f]).i]=l.x(u);return a.join("")})}function _t(t,e){var n=typeof e,r;return e==null||n==="boolean"?Po(e):(n==="number"?tt:n==="string"?(r=Xr(e))?(e=r,cc):Vh:e instanceof Xr?cc:e instanceof Date?Hh:jh(e)?uc:Array.isArray(e)?Gh:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?Qh:tt)(t,e)}function Gb(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function Hb(t,e){var n=Fo(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function Zr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var _h=180/Math.PI,hc={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Yh(t,e,n,r,i,o){var s,a,c;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,c/=a),t*r<e*n&&(t=-t,e=-e,c=-c,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*_h,skewX:Math.atan(c)*_h,scaleX:s,scaleY:a}}var zo;function Qb(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?hc:Yh(e.a,e.b,e.c,e.d,e.e,e.f)}function Vb(t){return t==null||(zo||(zo=document.createElementNS("http://www.w3.org/2000/svg","g")),zo.setAttribute("transform",t),!(t=zo.transform.baseVal.consolidate()))?hc:(t=t.matrix,Yh(t.a,t.b,t.c,t.d,t.e,t.f))}function Wh(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,h,p,d){if(u!==l||f!==h){var g=p.push("translate(",null,e,null,n);d.push({i:g-4,x:tt(u,l)},{i:g-2,x:tt(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:tt(u,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(u,f,l,h){u!==f?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:tt(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,h,p,d){if(u!==l||f!==h){var g=p.push(i(p)+"scale(",null,",",null,")");d.push({i:g-4,x:tt(u,l)},{i:g-2,x:tt(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 _b=Wh(Qb,"px, ","px)","deg)"),Yb=Wh(Vb,", ",")",")"),Wb=1e-12;function Xh(t){return((t=Math.exp(t))+1/t)/2}function Xb(t){return((t=Math.exp(t))-1/t)/2}function qb(t){return((t=Math.exp(2*t))-1)/(t+1)}var qh=function t(e,n,r){function i(o,s){var a=o[0],c=o[1],u=o[2],f=s[0],l=s[1],h=s[2],p=f-a,d=l-c,g=p*p+d*d,m,y;if(g<Wb)y=Math.log(h/u)/e,m=function(w){return[a+w*p,c+w*d,u*Math.exp(e*w*y)]};else{var x=Math.sqrt(g),v=(h*h-u*u+r*g)/(2*u*n*x),S=(h*h-u*u-r*g)/(2*h*n*x),b=Math.log(Math.sqrt(v*v+1)-v),A=Math.log(Math.sqrt(S*S+1)-S);y=(A-b)/e,m=function(w){var E=w*y,B=Xh(b),O=u/(n*x)*(B*qb(e*E+b)-Xb(b));return[a+O*p,c+O*d,u*B/Xh(e*E+b)]}}return m.duration=y*1e3*e/Math.SQRT2,m}return i.rho=function(o){var s=Math.max(.001,+o),a=s*s,c=a*a;return t(s,a,c)},i}(Math.SQRT2,2,4);function Zh(t){return function(e,n){var r=t((e=Ka(e)).h,(n=Ka(n)).h),i=de(e.s,n.s),o=de(e.l,n.l),s=de(e.opacity,n.opacity);return function(a){return e.h=r(a),e.s=i(a),e.l=o(a),e.opacity=s(a),e+""}}}var Zb=Zh(Fo),Kb=Zh(de);function Jb(t,e){var n=de((t=$a(t)).l,(e=$a(e)).l),r=de(t.a,e.a),i=de(t.b,e.b),o=de(t.opacity,e.opacity);return function(s){return t.l=n(s),t.a=r(s),t.b=i(s),t.opacity=o(s),t+""}}function Kh(t){return function(e,n){var r=t((e=ic(e)).h,(n=ic(n)).h),i=de(e.c,n.c),o=de(e.l,n.l),s=de(e.opacity,n.opacity);return function(a){return e.h=r(a),e.c=i(a),e.l=o(a),e.opacity=s(a),e+""}}}var $b=Kh(Fo),ex=Kh(de);function Jh(t){return function e(n){n=+n;function r(i,o){var s=t((i=ac(i)).h,(o=ac(o)).h),a=de(i.s,o.s),c=de(i.l,o.l),u=de(i.opacity,o.opacity);return function(f){return i.h=s(f),i.s=a(f),i.l=c(Math.pow(f,n)),i.opacity=u(f),i+""}}return r.gamma=e,r}(1)}var tx=Jh(Fo),nx=Jh(de);function dc(t,e){e===void 0&&(e=t,t=_t);for(var n=0,r=e.length-1,i=e[0],o=new Array(r<0?0:r);n<r;)o[n]=t(i,i=e[++n]);return function(s){var a=Math.max(0,Math.min(r-1,Math.floor(s*=r)));return o[a](s-a)}}function rx(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var ix=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",interpolate:_t,interpolateArray:Rb,interpolateBasis:Fh,interpolateBasisClosed:zh,interpolateDate:Hh,interpolateDiscrete:Gb,interpolateHue:Hb,interpolateNumber:tt,interpolateNumberArray:uc,interpolateObject:Qh,interpolateRound:Zr,interpolateString:Vh,interpolateTransformCss:_b,interpolateTransformSvg:Yb,interpolateZoom:qh,interpolateRgb:cc,interpolateRgbBasis:Fb,interpolateRgbBasisClosed:zb,interpolateHsl:Zb,interpolateHslLong:Kb,interpolateLab:Jb,interpolateHcl:$b,interpolateHclLong:ex,interpolateCubehelix:tx,interpolateCubehelixLong:nx,piecewise:dc,quantize:rx});function ox(t){return function(){return t}}function pc(t){return+t}var $h=[0,1];function ke(t){return t}function gc(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:ox(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 ax(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=gc(i,r),o=n(s,o)):(r=gc(r,i),o=n(o,s)),function(a){return o(r(a))}}function cx(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),s=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<r;)i[s]=gc(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var c=Nr(t,a,1,r)-1;return o[c](i[c](a))}}function Kr(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Ro(){var t=$h,e=$h,n=_t,r,i,o,s=ke,a,c,u;function f(){var h=Math.min(t.length,e.length);return s!==ke&&(s=sx(t[0],t[h-1])),a=h>2?cx:ax,c=u=null,l}function l(h){return h==null||isNaN(h=+h)?o:(c||(c=a(t.map(r),e,n)))(r(s(h)))}return l.invert=function(h){return s(i((u||(u=a(e,t.map(r),tt)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,pc),f()):t.slice()},l.range=function(h){return arguments.length?(e=Array.from(h),f()):e.slice()},l.rangeRound=function(h){return e=Array.from(h),n=Zr,f()},l.clamp=function(h){return arguments.length?(s=h?!0:ke,f()):s!==ke},l.interpolate=function(h){return arguments.length?(n=h,f()):n},l.unknown=function(h){return arguments.length?(o=h,l):o},function(h,p){return r=h,i=p,f()}}function ed(){return Ro()(ke,ke)}function td(t,e,n,r){var i=fo(t,e,n),o;switch(r=Hn(r==null?",f":r),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=Cf(i,s))&&(r.precision=o),ma(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Df(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=Sf(i))&&(r.precision=o-(r.type==="%")*2);break}}return Qn(r)}function vn(t){var e=t.domain;return t.ticks=function(n){var r=e();return pa(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return td(i[0],i[i.length-1],n==null?10:n,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,s=r[i],a=r[o],c,u,f=10;for(a<s&&(u=s,s=a,a=u,u=i,i=o,o=u);f-- >0;){if(u=mf(s,a,n),u===c)return r[i]=s,r[o]=a,e(r);if(u>0)s=Math.floor(s/u)*u,a=Math.ceil(a/u)*u;else if(u<0)s=Math.ceil(s*u)/u,a=Math.floor(a*u)/u;else break;c=u}return t},t}function nd(){var t=ed();return t.copy=function(){return Kr(t,nd())},ct.apply(t,arguments),vn(t)}function rd(t){var e;function n(r){return r==null||isNaN(r=+r)?e:r}return n.invert=n,n.domain=n.range=function(r){return arguments.length?(t=Array.from(r,pc),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return rd(t).unknown(e)},t=arguments.length?Array.from(t,pc):[0,1],vn(n)}function id(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],s;return o<i&&(s=n,n=r,r=s,s=i,i=o,o=s),t[n]=e.floor(i),t[r]=e.ceil(o),t}function od(t){return Math.log(t)}function sd(t){return Math.exp(t)}function ux(t){return-Math.log(-t)}function lx(t){return-Math.exp(-t)}function fx(t){return isFinite(t)?+("1e"+t):t<0?0:t}function hx(t){return t===10?fx:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}function dx(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),function(e){return Math.log(e)/t})}function ad(t){return function(e){return-t(-e)}}function mc(t){var e=t(od,sd),n=e.domain,r=10,i,o;function s(){return i=dx(r),o=hx(r),n()[0]<0?(i=ad(i),o=ad(o),t(ux,lx)):t(od,sd),e}return e.base=function(a){return arguments.length?(r=+a,s()):r},e.domain=function(a){return arguments.length?(n(a),s()):n()},e.ticks=function(a){var c=n(),u=c[0],f=c[c.length-1],l;(l=f<u)&&(h=u,u=f,f=h);var h=i(u),p=i(f),d,g,m,y=a==null?10:+a,x=[];if(!(r%1)&&p-h<y){if(h=Math.floor(h),p=Math.ceil(p),u>0){for(;h<=p;++h)for(g=1,d=o(h);g<r;++g)if(m=d*g,!(m<u)){if(m>f)break;x.push(m)}}else for(;h<=p;++h)for(g=r-1,d=o(h);g>=1;--g)if(m=d*g,!(m<u)){if(m>f)break;x.push(m)}x.length*2<y&&(x=pa(u,f,y))}else x=pa(h,p,Math.min(p-h,y)).map(o);return l?x.reverse():x},e.tickFormat=function(a,c){if(c==null&&(c=r===10?".0e":","),typeof c!="function"&&(c=Qn(c)),a===1/0)return c;a==null&&(a=10);var u=Math.max(1,r*a/e.ticks().length);return function(f){var l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=u?c(f):""}},e.nice=function(){return n(id(n(),{floor:function(a){return o(Math.floor(i(a)))},ceil:function(a){return o(Math.ceil(i(a)))}}))},e}function yc(){var t=mc(Ro()).domain([1,10]);return t.copy=function(){return Kr(t,yc()).base(t.base())},ct.apply(t,arguments),t}function cd(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function ud(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Ac(t){var e=1,n=t(cd(e),ud(e));return n.constant=function(r){return arguments.length?t(cd(e=+r),ud(e)):e},vn(n)}function ld(){var t=Ac(Ro());return t.copy=function(){return Kr(t,ld()).constant(t.constant())},ct.apply(t,arguments)}function fd(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function px(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function gx(t){return t<0?-t*t:t*t}function bc(t){var e=t(ke,ke),n=1;function r(){return n===1?t(ke,ke):n===.5?t(px,gx):t(fd(n),fd(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},vn(e)}function xc(){var t=bc(Ro());return t.copy=function(){return Kr(t,xc()).exponent(t.exponent())},ct.apply(t,arguments),t}function mx(){return xc.apply(null,arguments).exponent(.5)}function hd(){var t=[],e=[],n=[],r;function i(){var s=0,a=Math.max(1,e.length);for(n=new Array(a-1);++s<a;)n[s-1]=yf(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[Nr(n,s)]}return o.invertExtent=function(s){var a=e.indexOf(s);return a<0?[NaN,NaN]:[a>0?n[a-1]:t[0],a<n.length?n[a]:t[t.length-1]]},o.domain=function(s){if(!arguments.length)return t.slice();t=[];for(let a of s)a!=null&&!isNaN(a=+a)&&t.push(a);return t.sort(jn),i()},o.range=function(s){return arguments.length?(e=Array.from(s),i()):e.slice()},o.unknown=function(s){return arguments.length?(r=s,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return hd().domain(t).range(e).unknown(r)},ct.apply(o,arguments)}function dd(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function s(c){return c!=null&&c<=c?i[Nr(r,c,0,n)]:o}function a(){var c=-1;for(r=new Array(n);++c<n;)r[c]=((c+1)*e-(c-n)*t)/(n+1);return s}return s.domain=function(c){return arguments.length?([t,e]=c,t=+t,e=+e,a()):[t,e]},s.range=function(c){return arguments.length?(n=(i=Array.from(c)).length-1,a()):i.slice()},s.invertExtent=function(c){var u=i.indexOf(c);return u<0?[NaN,NaN]:u<1?[t,r[0]]:u>=n?[r[n-1],e]:[r[u-1],r[u]]},s.unknown=function(c){return arguments.length&&(o=c),s},s.thresholds=function(){return r.slice()},s.copy=function(){return dd().domain([t,e]).range(i).unknown(o)},ct.apply(vn(s),arguments)}function pd(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[Nr(t,o,0,r)]:n}return i.domain=function(o){return arguments.length?(t=Array.from(o),r=Math.min(t.length,e.length-1),i):t.slice()},i.range=function(o){return arguments.length?(e=Array.from(o),r=Math.min(t.length,e.length-1),i):e.slice()},i.invertExtent=function(o){var s=e.indexOf(o);return[t[s-1],t[s]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return pd().domain(t).range(e).unknown(n)},ct.apply(i,arguments)}function yx(t){return new Date(t)}function Ax(t){return t instanceof Date?+t:+new Date(+t)}function vc(t,e,n,r,i,o,s,a,c,u){var f=ed(),l=f.invert,h=f.domain,p=u(".%L"),d=u(":%S"),g=u("%I:%M"),m=u("%I %p"),y=u("%a %d"),x=u("%b %d"),v=u("%B"),S=u("%Y");function b(A){return(c(A)<A?p:a(A)<A?d:s(A)<A?g:o(A)<A?m:r(A)<A?i(A)<A?y:x:n(A)<A?v:S)(A)}return f.invert=function(A){return new Date(l(A))},f.domain=function(A){return arguments.length?h(Array.from(A,Ax)):h().map(yx)},f.ticks=function(A){var w=h();return t(w[0],w[w.length-1],A==null?10:A)},f.tickFormat=function(A,w){return w==null?b:u(w)},f.nice=function(A){var w=h();return(!A||typeof A.range!="function")&&(A=e(w[0],w[w.length-1],A==null?10:A)),A?h(id(w,A)):f},f.copy=function(){return Kr(f,vc(t,e,n,r,i,o,s,a,c,u))},f}function bx(){return ct.apply(vc(wA,EA,Gt,yo,mo,gn,Sa,Ea,jt,ka).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function xx(){return ct.apply(vc(xA,vA,Ht,bo,Ao,yn,Ma,Da,jt,Oa).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Uo(){var t=0,e=1,n,r,i,o,s=ke,a=!1,c;function u(l){return l==null||isNaN(l=+l)?c:s(i===0?.5:(l=(o(l)-n)*i,a?Math.max(0,Math.min(1,l)):l))}u.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),u):[t,e]},u.clamp=function(l){return arguments.length?(a=!!l,u):a},u.interpolator=function(l){return arguments.length?(s=l,u):s};function f(l){return function(h){var p,d;return arguments.length?([p,d]=h,s=l(p,d),u):[s(0),s(1)]}}return u.range=f(_t),u.rangeRound=f(Zr),u.unknown=function(l){return arguments.length?(c=l,u):c},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),u}}function Yt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function wc(){var t=vn(Uo()(ke));return t.copy=function(){return Yt(t,wc())},Qt.apply(t,arguments)}function gd(){var t=mc(Uo()).domain([1,10]);return t.copy=function(){return Yt(t,gd()).base(t.base())},Qt.apply(t,arguments)}function md(){var t=Ac(Uo());return t.copy=function(){return Yt(t,md()).constant(t.constant())},Qt.apply(t,arguments)}function Ec(){var t=bc(Uo());return t.copy=function(){return Yt(t,Ec()).exponent(t.exponent())},Qt.apply(t,arguments)}function vx(){return Ec.apply(null,arguments).exponent(.5)}function jo(){var t=0,e=.5,n=1,r=1,i,o,s,a,c,u=ke,f,l=!1,h;function 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,x,v;return arguments.length?([y,x,v]=m,u=dc(g,[y,x,v]),p):[u(0),u(.5),u(1)]}}return p.range=d(_t),p.rangeRound=d(Zr),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 yd(){var t=vn(jo()(ke));return t.copy=function(){return Yt(t,yd())},Qt.apply(t,arguments)}function Ad(){var t=mc(jo()).domain([.1,1,10]);return t.copy=function(){return Yt(t,Ad()).base(t.base())},Qt.apply(t,arguments)}function bd(){var t=Ac(jo());return t.copy=function(){return Yt(t,bd()).constant(t.constant())},Qt.apply(t,arguments)}function Sc(){var t=bc(jo());return t.copy=function(){return Yt(t,Sc()).exponent(t.exponent())},Qt.apply(t,arguments)}function wx(){return Sc.apply(null,arguments).exponent(.5)}function Cc(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const Ex="identity",qn="linear",Wt="log",Jr="pow",$r="sqrt",Go="symlog",xd="time",vd="utc",ht="sequential",Zn="diverging",Dc="quantile",wd="quantize",Ed="threshold",Mc="ordinal",Ic="point",Sd="band",Tc="bin-ordinal",le="continuous",ei="discrete",ti="discretizing",We="interpolating",Cd="temporal";function Sx(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 Cx(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,s,a,c,u;for(i<r&&(a=r,r=i,i=a),c=0,u=n.length;c<u;++c)n[c]>=r&&n[c]<=i&&(o<0&&(o=c),s=c);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[s]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function Nc(){const t=Xa().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,s=!1,a=0,c=0,u=.5;delete t.unknown;function f(){const l=e().length,h=r[1]<r[0],p=r[1-h],d=Cc(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=ho(l).map(y=>g+i*y);return n(h?m.reverse():m)}return t.domain=function(l){return arguments.length?(e(l),f()):e()},t.range=function(l){return arguments.length?(r=[+l[0],+l[1]],f()):r.slice()},t.rangeRound=function(l){return r=[+l[0],+l[1]],s=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(s=!!l,f()):s},t.padding=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),a=c,f()):a},t.paddingInner=function(l){return arguments.length?(a=Math.max(0,Math.min(1,l)),f()):a},t.paddingOuter=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.align=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const h=r[1]<r[0],p=h?n().reverse():n(),d=p.length-1;let g=+l[0],m=+l[1],y,x,v;if(!(g!==g||m!==m)&&(m<g&&(v=g,g=m,m=v),!(m<p[0]||g>r[1-h])))return y=Math.max(0,la(p,g)-1),x=g===m?y:la(p,m)-1,g-p[y]>o+1e-10&&++y,h&&(v=y,y=d-x,x=d-v),y>x?void 0:e().slice(y,x+1)},t.invert=function(l){const h=t.invertRange([l,l]);return h&&h[0]},t.copy=function(){return Nc().domain(e()).range(r).round(s).paddingInner(a).paddingOuter(c).align(u)},f()}function Dd(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return Dd(e())},t}function Dx(){return Dd(Nc().paddingInner(1))}var Mx=Array.prototype.map;function Ix(t){return Mx.call(t,Ir)}const Tx=Array.prototype.slice;function Md(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(Nr(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=Ix(r),n):t.slice()},n.range=function(r){return arguments.length?(e=Tx.call(r),n):e.slice()},n.tickFormat=function(r,i){return td(t[0],et(t),r==null?10:r,i)},n.copy=function(){return Md().domain(n.domain()).range(n.range())},n}const Ho={};function Nx(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?Sx(o):o.invertExtent?Cx(o):void 0),o.type=t,o};return r.metadata=lo(ia(n)),r}function W(t,e,n){return arguments.length>1?(Ho[t]=Nx(t,e,n),this):Lx(t)?Ho[t]:void 0}W(Ex,rd),W(qn,nd,le),W(Wt,yc,[le,Wt]),W(Jr,xc,le),W($r,mx,le),W(Go,ld,le),W(xd,bx,[le,Cd]),W(vd,xx,[le,Cd]),W(ht,wc,[le,We]),W("".concat(ht,"-").concat(qn),wc,[le,We]),W("".concat(ht,"-").concat(Wt),gd,[le,We,Wt]),W("".concat(ht,"-").concat(Jr),Ec,[le,We]),W("".concat(ht,"-").concat($r),vx,[le,We]),W("".concat(ht,"-").concat(Go),md,[le,We]),W("".concat(Zn,"-").concat(qn),yd,[le,We]),W("".concat(Zn,"-").concat(Wt),Ad,[le,We,Wt]),W("".concat(Zn,"-").concat(Jr),Sc,[le,We]),W("".concat(Zn,"-").concat($r),wx,[le,We]),W("".concat(Zn,"-").concat(Go),bd,[le,We]),W(Dc,hd,[ti,Dc]),W(wd,dd,ti),W(Ed,pd,ti),W(Tc,Md,[ei,ti]),W(Mc,Xa,ei),W(Sd,Nc,ei),W(Ic,Dx,ei);function Lx(t){return dn(Ho,t)}function ni(t,e){const n=Ho[t];return n&&n.metadata[e]}function nt(t){return ni(t,le)}function Xt(t){return ni(t,ei)}function Kn(t){return ni(t,ti)}function Id(t){return ni(t,Wt)}function Qo(t){return ni(t,We)}function kx(t,e){const n=e[0],r=et(e)-n;return function(i){return t(n+i*r)}}function Vo(t,e,n){return dc(Td(e||"rgb",n),t)}function Ox(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function Td(t,e){const n=ix[Bx(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function Bx(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const Px={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"},Fx={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"};function Nd(t){const e=t.length/6|0,n=new Array(e);for(let r=0;r<e;)n[r]="#"+t.slice(r*6,++r*6);return n}function Ld(t,e){for(const n in t)Lc(n,e(t[n]))}const kd={};Ld(Fx,Nd),Ld(Px,t=>Vo(Nd(t)));function Lc(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(kd[t]=e,this):kd[t]}var yT="";function zx(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
@@ -1552,7 +1552,7 @@ void main() {
1552
1552
  `)+" };");return n.properties=e,n}class Ng extends se{get behavior(){return Nt}constructor(){super();const e=n=>{const r=cM(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{Hp(n)&&(this.handle=e),super.beginBatch(n)}}}class Lg{constructor(){this._dataSourcesByHost=new Map,this._collectorsByHost=new Map,this._observers=new Map}get dataSources(){return[...new Set(this._dataSourcesByHost.values()).values()]}get collectors(){return[...this._collectorsByHost.values()]}addObserver(e,n){let r=this._observers.get(n);r||(r=[],this._observers.set(n,r)),r.push(e)}_relayObserverCallback(e,n){const r=this._observers.get(n);if(r)for(const i of r)i(e)}addDataSource(e,n){this._dataSourcesByHost.set(n,e)}findDataSourceByKey(e){return this._dataSourcesByHost.get(e)}addCollector(e,n){this._collectorsByHost.set(n,e),e.observers.push(r=>this._relayObserverCallback(r,n))}findCollectorByKey(e){return this._collectorsByHost.get(e)}initialize(){for(const e of this.dataSources)e.visit(n=>n.initialize())}}function uM(t){return"name"in t}class lM extends On{constructor(e,n){super();this.getNamedData=n,this.params=e}get identifier(){return this.params.name}_getValues(){const e=this.getNamedData(this.params.name);if(e)return e;throw new Error("Cannot find named data: "+this.params.name)}loadSynchronously(){const e=this._getValues();let n=r=>r;if(Array.isArray(e))e.length>0&&(n=Ds(e[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const r of e)this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}function kg(t,e){const n=[];let r;const i=e!=null?e:new Lg,o=[];function s(f,l=()=>{}){if(!r)throw l()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(f),r=f,f}function a(f,l){return s(f,()=>new Error(`Cannot append a transform because no (inherited) data are available! ${l?JSON.stringify(l):""}`))}function c(f,l){for(const h of f){let p;try{p=$D(h,l)}catch(d){throw console.warn(d),new Error(`Cannot initialize "${h.type}" transform: ${d}`)}p.behavior&rn&&a(new Ng),a(p)}}const u=f=>{if(n.push(r),f.spec.data){const l=CD(f.spec.data)?f.getDynamicDataSource():uM(f.spec.data)?new lM(f.spec.data,f.context.getNamedData):Tg(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&c(f.spec.transform,f),f instanceof Pe){if(!r)throw new Error("A unit view has no (inherited) data source");const l=fM(f);if(l){o.push(l.rewrite);for(const p of l.transforms)a(p)}f.mark.isPickingParticipant()&&a(new Mg({type:"identifier"}));const h=new Ui({type:"collect",groupby:f.getFacetFields(),sort:hM(f,l==null?void 0:l.rewrittenEncoding)});s(h),i.addCollector(h,f)}dg(f.spec)};return u.postOrder=f=>{r=n.pop()},t.visit(u),o.forEach(f=>f()),i}function fM(t){var o,s,a,c;const e=[],n={},r=[];for(const[u,f]of Object.entries(t.getEncoding())){const l=u;yi(l)&&r0(f)&&r.push({channel:l,chromPosDef:f})}const i=Do(r,u=>nr(u.channel),u=>u.chromPosDef.chrom);for(const[u,f]of i.entries())for(const[l,h]of f.entries()){const p=[],d=[],g=[];for(const{channel:m,chromPosDef:y}of h){const x=b=>b.replace(/[^A-Za-z0-9_]/g,""),v=["_linearized_",x(y.chrom),"_",x(y.pos)].join(""),S=F(T({},(a=(s=(o=t.spec.encoding)==null?void 0:o[m])!=null?s:t.getEncoding()[m])!=null?a:{}),{field:v});delete S.chrom,delete S.pos,!S.type&&y.type&&(S.type=y.type),n[m]=S,p.push(y.pos),g.push((c=y.offset)!=null?c:0),d.push(v)}e.push(new Eg({type:"linearizeGenomicCoordinate",channel:u,chrom:l,pos:p,offset:g,as:d},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding=T(T({},t.spec.encoding),n),Bp(t.mark,"encoding")}}:void 0}function hM(t,e){var r;const n=T(T({},t.getEncoding()),e).x;if(Ke(n)&&((r=t.getScaleResolution("x"))==null?void 0:r.isZoomable())){if(Mn(n))return{field:n.field};if(!gi(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function dM(t,...e){let n=t;for(const o of e)n.addChild(o),n=o;let r;n instanceof Ui?r=n:(r=new Ui,n.addChild(r));let i;return t instanceof On?i=async()=>(await t.load(),r.getData()):i=async()=>{throw new Error("The root node is not derived from DataSource!")},{dataSource:t,collector:r,loadAndCollect:i}}function Og(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!Og(n,t))return!1;return!0}function Xu(t,e=!1){if(t instanceof Ng)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&Xu(n,e);return}t.behavior&Nt&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)Xu(t.children[n],e||n<r-1)}function pM(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 gM(t){if(Xu(t),!Og(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function mM(t){for(const e of t.dataSources)gM(e);pM(t)}function yM(t){const e=[];return t.visit(n=>{e.push(n)}),e}function Bg(t){t.visit(n=>{n instanceof Pe&&n.resolve("scale")});const e=new Set;t.visit(n=>{for(const r of Object.values(n.resolutions.scale)){const i=r.name;if(i&&e.has(i))throw new Error(`The same scale name "${i}" occurs in multiple scale resolutions!`);e.add(i)}}),t.visit(n=>{n instanceof Pe&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function AM(t){for(const e of mi){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}function bM(t){let e=t;const n=r=>r&&!Ze(r);return t.visit(r=>{if(r instanceof Ri||r instanceof Pe){const i=r.getEncoding();if(r instanceof Pe&&!n(i.x)&&!n(i.y))return gr;const o=r.parent,s=new Yu(r.context,o);if(r.parent=s,s.child=r,s.name=r.name+"_decorator",o)if(o instanceof At)o.replaceChild(r,s);else{let a;if(t.visit(wM((c,u)=>{if(c===r)return a=pe(u),kn})),a instanceof At)a.replaceChild(r,s);else throw new Error("Cannot find parent while decorating: "+r.getPathString())}return s.resolutions=r.resolutions,r.resolutions={scale:{},axis:{}},s.spec.height=r.spec.height,r.spec.height="container",s.spec.width=r.spec.width,r.spec.width="container",s.spec.padding=r.spec.padding,r.spec.padding=void 0,r===t&&(e=s),s.initialize(),gr}}),e}function xM(t){const e=[];return t.visit(n=>{if(n instanceof Pe){const r=n.getEncoding();for(const[i,o]of Object.entries(r))Mn(o)&&"type"in o&&e.push({view:n,channel:i,field:o.field,type:o.type});return gr}}),e}async function vM(t,e,n){var s;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=_r({baseURL:e}),i=t.import.url,o=JSON.parse(await r.load(i).catch(a=>{throw new Error(`Could not load imported view spec: ${i}
1553
1553
  Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]*\//))==null?void 0:s[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function Pg(t){const e=[];t.visit(n=>{if(n instanceof fg)return e.push(n),gr});for(const n of e){const r=n.context,i=await vM(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await Pg(o)}}function wM(t){const e=[],n=r=>t(r,e);return n.beforeChildren=r=>{e.push(r)},n.afterChildren=r=>{e.pop()},n}function EM(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...cb(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const SM=t=>!/^(layer|concat)\d+$/.test(t);class qu{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Fg extends qu{constructor(e,n){super(e);this.webGLHelper=n,this.buffer=[],this.coords=void 0,this.views=new Set}pushView(e,n){this.views.add(e),this.coords=n}renderMark(e,n){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const r=e.render(n);r&&this.buffer.push({mark:e,callback:r,coords:this.coords,clipRect:n.clipRect})}renderDeferred(){if(this.batch||this._buildBatch(),this.batch.length==0)return;const e=this.webGLHelper.gl,n=this.globalOptions.picking;e.bindFramebuffer(e.FRAMEBUFFER,n?this.webGLHelper._pickingBufferInfo.framebuffer:null),this.webGLHelper.clearAll();for(const r of this.views)r.onBeforeRender();for(const r of this.batch)r();n&&e.bindFramebuffer(e.FRAMEBUFFER,null)}_buildBatch(){this.batch=[];let e=!0,n=!0;const r=s=>()=>{e&&s()},i=s=>()=>{e&&n&&s()},o=Do(this.buffer,s=>s.mark);for(const[s,a]of o.entries()){if(!s.isReady())continue;this.batch.push(()=>{e=s.unitView.getEffectiveOpacity()>0}),this.batch.push(r(()=>s.prepareRender(this.globalOptions)));let c;for(const u of a){const f=u.coords;f.equals(c)||this.batch.push(r(()=>{n=s.setViewport(f,u.clipRect)})),this.batch.push(i(u.callback)),c=u.coords}}}}class CM extends qu{constructor(e){super(e);this.root=void 0,this.stack=[],this.lastAddition=void 0}pushView(e,n){const r=new DM(e,n);this.root?pe(this.stack).addChild(r):this.root=r,this.stack.push(r)}popView(e){this.stack.pop()}getLayout(){return this.root}}class DM{constructor(e,n){this.view=e,this.coords=n,this.children=[]}addChild(e){const n=pe(this.children);n&&e.view===n.view&&e.coords.equals(n.coords)||this.children.push(e)}dispatchInteractionEvent(e){if(this.coords.containsPoint(e.point.x,e.point.y)){if(this.view.handleInteractionEvent(this.coords,e,!0),e.stopped)return;if(this.children.length==0)e.target=this.view;else for(const n of this.children){if(n.dispatchInteractionEvent(e),e.target)break;if(e.stopped)return}this.view.handleInteractionEvent(this.coords,e,!1)}}}class MM extends qu{constructor(...e){super({});this.contexts=e}pushView(e,n){for(const r of this.contexts)r.pushView(e,n)}popView(e){for(const n of this.contexts)n.popView(e)}renderMark(e,n){for(const r of this.contexts)r.renderMark(e,n)}}class IM{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 TM{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 NM=t=>new Promise(e=>setTimeout(e,t));function Ms(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n==null?void 0:n.aborted)return o("aborted");const s=performance.now(),a=s+(t.duration||1e3),c=typeof t.from=="number"?t.from:0,u=typeof t.to=="number"?t.to:1,f=t.easingFunction||(g=>g),l=g=>(g-s)/(a-s),h=g=>g*(u-c)+c,p=g=>Math.max(0,Math.min(1,g)),d=g=>{(n==null?void 0: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?void 0:n.aborted)?Promise.reject("aborted"):NM(t.delay).then(r):r()}class LM{constructor(e){this._renderCallback=e,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(e){this.cancelTransition(e),this.transitions.push(e),this.requestRender()}cancelTransition(e){const n=this.transitions.indexOf(e);n>=0&&this.transitions.splice(n,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;const n=this.transitions;this.transitions=[];let r;for(;r=n.shift();)r(e);this._renderCallback(e)}))}transition(e){return Ms(T({requestAnimationFrame:n=>this.requestTransition(n)},e))}}function zg(){const t=e=>e;return t.invert=e=>e,t.copy=zg,t.invertRange=()=>{},t}class kM{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new rD(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 OM="data:image/png;base64,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";const BM={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class PM{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new So([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Iu(Sg),texture:this._createTextureNow(OM)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(oe(r)&&(r=BM[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=zM(r,n),o=this.fontRepository+Rg(n.family)+"/"+i.replace(/\.\w+/,""),s=this._createTexture(o+".png"),a=this._loadFont(o+".json");e.texture=await s,e.metrics=await a}catch(r){console.log("Cannot load font. Using default.",r),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let n=this._fontPromises.get(e);return n||(n=fetch(e).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>Iu(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=Rg(e);let r=this._metadataPromises.get(n);return r||(r=fetch(this.fontRepository+n+"/METADATA.pb").then(i=>{if(!i.ok)throw new Error("Could not load font metadata: "+i.status);return i}).then(i=>i.text()).then(i=>FM(i)).catch(i=>{console.warn(i)}),this._metadataPromises.set(n,r)),r}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){const n=this._webGLHelper.gl;return new Promise((r,i)=>{Si(n,{src:e,min:n.LINEAR},(o,s,a)=>{o?i(o):r(s)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((o,s)=>{r=Si(n,{src:e,min:n.LINEAR},(a,c,u)=>{a?s(a):o(c)})});return this._promises.push(i),r}}function Rg(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function FM(t){const e=t.split(`
1554
1554
  `),n=[];let r;for(const i of e)if(i.startsWith("fonts {")&&(r={name:void 0,style:void 0,weight:void 0,filename:void 0,post_script_name:void 0,full_name:void 0,copyright:void 0}),i.startsWith("}")&&(n.push(r),r=void 0),r){let o=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(o){const s=o[1];r[s]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const s=o[1];r[s]=+o[2]}}return n}function zM(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 RM(t,e){const n=[];let r;for(const i of t.split(`
1555
- `))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class UM{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 jM(t){const e={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in t){const o=i;!r.includes(i)&&n.includes(typeof t[o])&&(e[o]=t[o])}return e}function Is(t,e,n=!0){let r,i=s=>{};return function(...a){return new Promise((c,u)=>{const f=()=>{clearTimeout(r),i=l=>{},c(t(...a))};n&&i("debounced"),clearTimeout(r),i=u,r=setTimeout(f,e)})}}const Ug=new Map;async function GM(t,e,n){var o;const r=t.symbol;let i=(o=Ug.get(r))!=null?o:await VM(t.symbol);return i?(Ug.set(r,i),M`<div class="title"><strong>${i.name}</strong> ${i.description}</div><p class="summary">${i.summary}</p><p class="source">Source: NCBI RefSeq Gene</p>`):null}async function HM(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 QM=Is(HM,500);function VM(t){return QM(t)}const _M=Le(".4~r"),YM=Le(".4~e");function jg(t){return t===null?M`<span class="na">NA</span>`:oe(t)?t.substring(0,30):Number.isInteger(t)?""+t:ae(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?YM(t):_M(t):ao(t)?t?"True":"False":"?"+typeof t+" "+t}async function WM(t,e,n){const r=(s,a)=>{var c;for(const[u,f]of Object.entries(e.encoders))if((c=f==null?void 0:f.accessor)==null?void 0:c.fields.includes(s))switch(u){case"color":case"fill":case"stroke":return M`<span class="color-legend" style="${`background-color: ${f(a)}`}"></span>`}return""},i=M`<table class="attributes">${Object.entries(t).filter(([s,a])=>!s.startsWith("_")).map(([s,a])=>M`<tr><th>${s}</th><td>${jg(a)} ${r(s,t)}</td></tr>`)}</table>`,o=e.unitView.spec.title?M`<div class="title"><strong>${e.unitView.spec.title}</strong></div>`:"";return M`${o}${i}`}W("index",Ya,["continuous"]),W("locus",vb,["continuous"]),W("null",zg,[]),nh("fasta",RM);class Gg{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new mw,this.viewFactory=new yD,this.namedDataProviders=[],this.animator=new LM(()=>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 UM(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=T({default:WM,refseqgene:GM},(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 KS(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 qx(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 kM(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Lg,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new PM(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedData:this.getNamedData.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(a,c)=>{document.addEventListener(a,c);let u=this._keyboardListeners.get(a);u||(u=[],this._keyboardListeners.set(a,u)),u.push(c)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:a=>e.viewFactory.isViewSpec(a),createView:function(a,c,u){return e.viewFactory.createView(a,n,c,u)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(a=>r.datasets[a]),this.viewRoot=n.createView(r,null,"viewRoot"),await Pg(this.viewRoot),Bg(this.viewRoot),AM(this.viewRoot),this.viewRoot=bM(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof Pe&&i.push(a)});const o=kg(this.viewRoot,n.dataFlow);mM(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),XM(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 TM(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=c=>{this.layout.dispatchInteractionEvent(new IM(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=jM(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",F(T({},u),{deltaMode:0,deltaX:0,deltaY:f}));a(l)}),c.preventDefault();return}}if(r.type=="click"){const c=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(u=>u.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(u=>u(c))}a(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>e.addEventListener(r,n)),e.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),e.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(e,n){var o;const r=this._glHelper.readPickingPixel(e,n),i=r[0]|r[1]<<8|r[2]<<16;if(i==0){this._currentHover=null;return}if(i!==((o=this._currentHover)==null?void 0:o.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(s=>{if(s instanceof Pe){if(s.mark.isPickingParticipant()){const a=s.mark.encoders.uniqueId.accessor;s.getCollector().visitData(c=>{a(c)==i&&(this._currentHover={mark:s.mark,datum:c,uniqueId:i})})}if(this._currentHover)return kn}}),this._currentHover){const s=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async a=>{var u;if(!s.isPickingParticipant())return;const c=s.properties.tooltip;if(c!==null){const f=(u=c==null?void 0:c.handler)!=null?u:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(a,s,c==null?void 0:c.params)}})}}updateTooltip(e,n){if(!this._tooltipUpdateRequested||!e)this.tooltip.updateWithDatum(e,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const e=this.viewRoot;if(!e)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new Fg({picking:!1},this._glHelper),this._pickingContext=new Fg({picking:!0},this._glHelper);const r=new CM({});e.render(new MM(this._renderingContext,this._pickingContext,r),bt.create(0,0,n.width,n.height)),this.layout=r.getLayout(),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){!this._dirtyPickingBuffer||(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof Pe&&n.getAccessor("search")&&e.push(n)}),e}getNamedScaleResolutions(){const e=new Map;return this.viewRoot.visit(n=>{for(const r of Object.values(n.resolutions.scale))r.name&&e.set(r.name,r)}),e}}function XM(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 ET="",qM="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
1555
+ `))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class UM{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 jM(t){const e={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in t){const o=i;!r.includes(i)&&n.includes(typeof t[o])&&(e[o]=t[o])}return e}function Is(t,e,n=!0){let r,i=s=>{};return function(...a){return new Promise((c,u)=>{const f=()=>{clearTimeout(r),i=l=>{},c(t(...a))};n&&i("debounced"),clearTimeout(r),i=u,r=setTimeout(f,e)})}}const Ug=new Map;async function GM(t,e,n){var o;const r=t.symbol;let i=(o=Ug.get(r))!=null?o:await VM(t.symbol);return i?(Ug.set(r,i),M`<div class="title"><strong>${i.name}</strong> ${i.description}</div><p class="summary">${i.summary}</p><p class="source">Source: NCBI RefSeq Gene</p>`):null}async function HM(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 QM=Is(HM,500);function VM(t){return QM(t)}const _M=Le(".4~r"),YM=Le(".4~e");function jg(t){return t===null?M`<span class="na">NA</span>`:oe(t)?t.substring(0,30):Number.isInteger(t)?""+t:ae(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?YM(t):_M(t):ao(t)?t?"True":"False":"?"+typeof t+" "+t}async function WM(t,e,n){const r=(s,a)=>{var c;for(const[u,f]of Object.entries(e.encoders))if((c=f==null?void 0:f.accessor)==null?void 0:c.fields.includes(s))switch(u){case"color":case"fill":case"stroke":return M`<span class="color-legend" style="${`background-color: ${f(a)}`}"></span>`}return""},i=M`<table class="attributes">${Object.entries(t).filter(([s,a])=>!s.startsWith("_")).map(([s,a])=>M`<tr><th>${s}</th><td>${jg(a)} ${r(s,t)}</td></tr>`)}</table>`,o=e.unitView.spec.title?M`<div class="title"><strong>${e.unitView.spec.title}</strong></div>`:"";return M`${o}${i}`}W("index",Ya,["continuous"]),W("locus",vb,["continuous"]),W("null",zg,[]),nh("fasta",RM);class Gg{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new mw,this.viewFactory=new yD,this.namedDataProviders=[],this.animator=new LM(()=>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 UM(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=T({default:WM,refseqgene:GM},(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 KS(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 qx(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 kM(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Lg,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new PM(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedData:this.getNamedData.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(a,c)=>{document.addEventListener(a,c);let u=this._keyboardListeners.get(a);u||(u=[],this._keyboardListeners.set(a,u)),u.push(c)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:a=>e.viewFactory.isViewSpec(a),createView:function(a,c,u){return e.viewFactory.createView(a,n,c,u)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(a=>r.datasets[a]),this.viewRoot=n.createView(r,null,"viewRoot"),await Pg(this.viewRoot),Bg(this.viewRoot),AM(this.viewRoot),this.viewRoot=bM(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof Pe&&i.push(a)});const o=kg(this.viewRoot,n.dataFlow);mM(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),XM(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 TM(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=c=>{this.layout.dispatchInteractionEvent(new IM(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=jM(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",F(T({},u),{deltaMode:0,deltaX:0,deltaY:f}));a(l)}),c.preventDefault();return}}if(r.type=="click"){const c=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(u=>u.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(u=>u(c))}a(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>e.addEventListener(r,n)),e.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),e.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(e,n){var o;const r=this._glHelper.readPickingPixel(e,n),i=r[0]|r[1]<<8|r[2]<<16;if(i==0){this._currentHover=null;return}if(i!==((o=this._currentHover)==null?void 0:o.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(s=>{if(s instanceof Pe){if(s.mark.isPickingParticipant()){const a=s.mark.encoders.uniqueId.accessor;s.getCollector().visitData(c=>{a(c)==i&&(this._currentHover={mark:s.mark,datum:c,uniqueId:i})})}if(this._currentHover)return kn}}),this._currentHover){const s=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async a=>{var u;if(!s.isPickingParticipant())return;const c=s.properties.tooltip;if(c!==null){const f=(u=c==null?void 0:c.handler)!=null?u:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(a,s,c==null?void 0:c.params)}})}}updateTooltip(e,n){if(!this._tooltipUpdateRequested||!e)this.tooltip.updateWithDatum(e,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const e=this.viewRoot;if(!e)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new Fg({picking:!1},this._glHelper),this._pickingContext=new Fg({picking:!0},this._glHelper);const r=new CM({});e.render(new MM(this._renderingContext,this._pickingContext,r),bt.create(0,0,n.width,n.height)),this.layout=r.getLayout(),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){!this._dirtyPickingBuffer||(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof Pe&&n.getAccessor("search")&&e.push(n)}),e}getNamedScaleResolutions(){const e=new Map;return this.viewRoot.visit(n=>{for(const r of Object.values(n.resolutions.scale))r.name&&e.set(r.name,r)}),e}}function XM(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 ST="",qM="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
1556
1556
  * @license
1557
1557
  * Copyright 2019 Google LLC
1558
1558
  * SPDX-License-Identifier: BSD-3-Clause
@@ -2033,7 +2033,7 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
2033
2033
  * @license
2034
2034
  * Copyright 2018 Google LLC
2035
2035
  * SPDX-License-Identifier: BSD-3-Clause
2036
- */const Z8=br(class extends Gi{constructor(t){var e;if(super(t),t.type!==Ot.ATTRIBUTE||t.name!=="style"||((e=t.strings)===null||e===void 0?void 0:e.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce((e,n)=>{const r=t[n];return r==null?e:e+`${n=n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(t,[e]){const{style:n}=t.element;if(this.ut===void 0){this.ut=new Set;for(const r in e)this.ut.add(r);return this.render(e)}this.ut.forEach(r=>{e[r]==null&&(this.ut.delete(r),r.includes("-")?n.removeProperty(r):n[r]="")});for(const r in e){const i=e[r];i!=null&&(this.ut.add(r),r.includes("-")?n.setProperty(r,i):n[r]=i)}return xe}}),Em="close-dialog";function K8(){return new CustomEvent(Em,{bubbles:!0})}function Qi(t="default"){const e=document.createElement("div");e.classList.add("gs-modal"),t!="default"&&e.classList.add(t);const n=i=>{var o;switch(i.key){case"Escape":{e.querySelector(".btn-cancel").click(),i.stopPropagation();break}case"Enter":{if(((o=i.target)==null?void 0:o.tagName)=="TEXTAREA")return;e.querySelector(".btn-primary").click(),i.stopPropagation();break}}};e.addEventListener("keydown",n),Xe(M`<div class="backdrop"></div><div class="content"></div>`,e);const r=()=>{e.querySelector(".backdrop").addEventListener("transitionend",()=>e.remove()),e.classList.remove("visible"),document.body.classList.remove(En)};return e.addEventListener("keydown",i=>{i.stopPropagation()}),e.addEventListener(Em,r),document.body.appendChild(e),window.requestAnimationFrame(()=>e.classList.add("visible")),t!="tour"&&document.body.classList.add(En),{content:e.querySelector(".content"),close:r}}function st(t,e=void 0,n=!1){const r=Qi();return new Promise((i,o)=>{const s=()=>{r.close(),i(!0)},a=M`${e?M`<div class="modal-title">${e}</div>`:U}<div class="modal-body" style="max-width:700px">${t}</div><div class="modal-buttons">${n?M`<button @click="${()=>{r.close(),i(!1)}}">Cancel</button>`:U} <button @click="${s}">OK</button></div>`;Xe(a,r.content)})}function J8(t,e){var n,r;Xt((n=t.scale)==null?void 0:n.type)?$8(t,e):nt((r=t.scale)==null?void 0:r.type)?e6(t,e):st("Not implemented (yet).")}function $8(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=t.scale,i=Qi(),o=M`<div class="modal-title">Filter by <em>${t.name}</em></div>`,s=new Set,a=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=()=>M`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button ?disabled="${!s.size}" @click="${()=>a(!1)}">${te(Hi).node[0]} Retain</button> <button ?disabled="${!s.size}" @click="${()=>a(!0)}">${te(rl).node[0]} Remove</button></div>`,f=r,l=M`<p>Please select one or more categories and choose an action.</p><ul class="gs-checkbox-list" @input="${c}" tabindex="0">${r.domain().map(p=>M`<li><label class="checkbox"><span class="color" style="${Z8({backgroundColor:f(p).toString()})}"></span> <input type="checkbox" .value="${p}"> ${p}</label></li>`)}</ul>`;function h(){Xe(M`${o}<div class="modal-body">${l}</div>${u()}`,i.content)}h(),i.content.querySelector(".gs-checkbox-list input[type='checkbox']").focus()}function e6(t,e){const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=Qi(),s=M`<div class="modal-title">Filter by <em>${t.name}</em></div>`,a=p=>{n(e.actions.filterByQuantitative({attribute:t.attribute,operator:r,operand:i})),o.close()},c=()=>M`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>o.close()}">Cancel</button> <button class="btn-primary" ?disabled="${typeof i=="undefined"}" @click="${()=>a()}">${te(Hi).node[0]} Retain</button></div>`,u=p=>{r=p.target.value,h()},f=p=>{const d=p.target.value;i=d.length>0?+d:void 0,h()},l=M`<div class="gs-form-group"><label>Select samples where <em>${t.name}</em> is</label> <select .value="${r}" @change="${u}">${Object.entries(t6).map(([p,d])=>M`<option .value="${p}">${d}</option>`)}</select> <input type="number" placeholder="Please enter a numeric value" @input="${f}"></div>`;function h(){Xe(M`${s}<div class="modal-body">${l}</div>${c()}`,o.content)}h(),o.content.querySelector("select").focus()}const t6={lt:"less than",lte:"less than or equal to",eq:"equal to",gte:"greater than or equal to",gt:"greater than"};function dl(t,e,n,r){var l;const i=r.actions,o=e.attribute,s=r.provenance.storeHelper.getDispatcher(),a=[];t&&a.push({label:t,type:"header"});const c=h=>{const 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})),n6(n)?u(i.filterByQuantitative({attribute:o,operator:"gte",operand:+n}),i.filterByQuantitative({attribute:o,operator:"lte",operand:+n})):u(i.removeUndefined({attribute:o}))),f!=="identifier"&&a.push({icon:Hi,label:"Advanced filter...",callback:()=>J8(e,r)}),a}function n6(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function r6(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var sn={},Pn={};Object.defineProperty(Pn,"__esModule",{value:!0}),Pn.ActionCreators=Pn.ActionTypes=void 0;var Fn={UNDO:"@@redux-undo/UNDO",REDO:"@@redux-undo/REDO",JUMP_TO_FUTURE:"@@redux-undo/JUMP_TO_FUTURE",JUMP_TO_PAST:"@@redux-undo/JUMP_TO_PAST",JUMP:"@@redux-undo/JUMP",CLEAR_HISTORY:"@@redux-undo/CLEAR_HISTORY"};Pn.ActionTypes=Fn;var i6={undo:function(){return{type:Fn.UNDO}},redo:function(){return{type:Fn.REDO}},jumpToFuture:function(e){return{type:Fn.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:Fn.JUMP_TO_PAST,index:e}},jump:function(e){return{type:Fn.JUMP,index:e}},clearHistory:function(){return{type:Fn.CLEAR_HISTORY}}};Pn.ActionCreators=i6;var vt={};Object.defineProperty(vt,"__esModule",{value:!0}),vt.parseActions=Os,vt.isHistory=o6,vt.includeAction=s6,vt.excludeAction=a6,vt.combineFilters=c6,vt.groupByActionTypes=u6,vt.newHistory=l6;function Os(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function o6(t){return typeof t.present!="undefined"&&typeof t.future!="undefined"&&typeof t.past!="undefined"&&Array.isArray(t.future)&&Array.isArray(t.past)}function s6(t){var e=Os(t);return function(n){return e.indexOf(n.type)>=0}}function a6(t){var e=Os(t);return function(n){return e.indexOf(n.type)<0}}function c6(){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 u6(t){var e=Os(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function l6(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;return{past:t,present:e,future:n,group:r,_latestUnfiltered:e,index:t.length,limit:t.length+n.length+1}}var Sm={},vr={};Object.defineProperty(vr,"__esModule",{value:!0}),vr.set=b6,vr.start=m6,vr.end=y6,vr.log=A6;function wt(t){return d6(t)||h6(t)||f6()}function f6(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function h6(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function d6(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}var Bs,$e,pl={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function p6(){$e={header:[],prev:[],action:[],next:[],msgs:[]}}function g6(){var t=$e,e=t.header,n=t.prev,r=t.next,i=t.action,o=t.msgs;if(console.group){var s,a,c,u,f;(s=console).groupCollapsed.apply(s,wt(e)),(a=console).log.apply(a,wt(n)),(c=console).log.apply(c,wt(i)),(u=console).log.apply(u,wt(r)),(f=console).log.apply(f,wt(o)),console.groupEnd()}else{var l,h,p,d,g;(l=console).log.apply(l,wt(e)),(h=console).log.apply(h,wt(n)),(p=console).log.apply(p,wt(i)),(d=console).log.apply(d,wt(r)),(g=console).log.apply(g,wt(o))}}function gl(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function m6(t,e){p6(),Bs&&(console.group?($e.header=["%credux-undo","font-style: italic","action",t.type],$e.action=gl("action",pl.action,t),$e.prev=gl("prev history",pl.prevState,e)):($e.header=["redux-undo action",t.type],$e.action=["action",t],$e.prev=["prev history",e]))}function y6(t){Bs&&(console.group?$e.next=gl("next history",pl.nextState,t):$e.next=["next history",t],g6())}function A6(){if(Bs){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];$e.msgs=$e.msgs.concat([].concat(e,[`
2036
+ */const Z8=br(class extends Gi{constructor(t){var e;if(super(t),t.type!==Ot.ATTRIBUTE||t.name!=="style"||((e=t.strings)===null||e===void 0?void 0:e.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce((e,n)=>{const r=t[n];return r==null?e:e+`${n=n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(t,[e]){const{style:n}=t.element;if(this.ut===void 0){this.ut=new Set;for(const r in e)this.ut.add(r);return this.render(e)}this.ut.forEach(r=>{e[r]==null&&(this.ut.delete(r),r.includes("-")?n.removeProperty(r):n[r]="")});for(const r in e){const i=e[r];i!=null&&(this.ut.add(r),r.includes("-")?n.setProperty(r,i):n[r]=i)}return xe}}),Em="close-dialog";function K8(){return new CustomEvent(Em,{bubbles:!0})}function Qi(t="default"){const e=document.createElement("div");e.classList.add("gs-modal"),t!="default"&&e.classList.add(t);const n=i=>{var o;switch(i.key){case"Escape":{e.querySelector(".btn-cancel").click(),i.stopPropagation();break}case"Enter":{if(((o=i.target)==null?void 0:o.tagName)=="TEXTAREA")return;e.querySelector(".btn-primary").click(),i.stopPropagation();break}}};e.addEventListener("keydown",n),Xe(M`<div class="backdrop"></div><div class="content"></div>`,e);const r=()=>{e.querySelector(".backdrop").addEventListener("transitionend",()=>e.remove()),e.classList.remove("visible"),document.body.classList.remove(En)};return e.addEventListener("keydown",i=>{i.stopPropagation()}),e.addEventListener(Em,r),document.body.appendChild(e),window.requestAnimationFrame(()=>e.classList.add("visible")),t!="tour"&&document.body.classList.add(En),{content:e.querySelector(".content"),close:r}}function st(t,e={}){var i;const n=Qi(),r=e.title;return(i=e.okLabel)!=null||(e.okLabel="OK"),new Promise((o,s)=>{const a=()=>{n.close(),o(!0)},c=M`${r?M`<div class="modal-title">${r}</div>`:U}<div class="modal-body" style="max-width:700px">${t}</div><div class="modal-buttons">${e.cancelButton?M`<button @click="${()=>{n.close(),o(!1)}}">Cancel</button>`:U} <button @click="${a}">${e.okLabel}</button></div>`;Xe(c,n.content)})}function J8(t,e){var n,r;Xt((n=t.scale)==null?void 0:n.type)?$8(t,e):nt((r=t.scale)==null?void 0:r.type)?e6(t,e):st("Not implemented (yet).")}function $8(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=t.scale,i=Qi(),o=M`<div class="modal-title">Filter by <em>${t.name}</em></div>`,s=new Set,a=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=()=>M`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button ?disabled="${!s.size}" @click="${()=>a(!1)}">${te(Hi).node[0]} Retain</button> <button ?disabled="${!s.size}" @click="${()=>a(!0)}">${te(rl).node[0]} Remove</button></div>`,f=r,l=M`<p>Please select one or more categories and choose an action.</p><ul class="gs-checkbox-list" @input="${c}" tabindex="0">${r.domain().map(p=>M`<li><label class="checkbox"><span class="color" style="${Z8({backgroundColor:f(p).toString()})}"></span> <input type="checkbox" .value="${p}"> ${p}</label></li>`)}</ul>`;function h(){Xe(M`${o}<div class="modal-body">${l}</div>${u()}`,i.content)}h(),i.content.querySelector(".gs-checkbox-list input[type='checkbox']").focus()}function e6(t,e){const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=Qi(),s=M`<div class="modal-title">Filter by <em>${t.name}</em></div>`,a=p=>{n(e.actions.filterByQuantitative({attribute:t.attribute,operator:r,operand:i})),o.close()},c=()=>M`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>o.close()}">Cancel</button> <button class="btn-primary" ?disabled="${typeof i=="undefined"}" @click="${()=>a()}">${te(Hi).node[0]} Retain</button></div>`,u=p=>{r=p.target.value,h()},f=p=>{const d=p.target.value;i=d.length>0?+d:void 0,h()},l=M`<div class="gs-form-group"><label>Select samples where <em>${t.name}</em> is</label> <select .value="${r}" @change="${u}">${Object.entries(t6).map(([p,d])=>M`<option .value="${p}">${d}</option>`)}</select> <input type="number" placeholder="Please enter a numeric value" @input="${f}"></div>`;function h(){Xe(M`${s}<div class="modal-body">${l}</div>${c()}`,o.content)}h(),o.content.querySelector("select").focus()}const t6={lt:"less than",lte:"less than or equal to",eq:"equal to",gte:"greater than or equal to",gt:"greater than"};function dl(t,e,n,r){var l;const i=r.actions,o=e.attribute,s=r.provenance.storeHelper.getDispatcher(),a=[];t&&a.push({label:t,type:"header"});const c=h=>{const 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})),n6(n)?u(i.filterByQuantitative({attribute:o,operator:"gte",operand:+n}),i.filterByQuantitative({attribute:o,operator:"lte",operand:+n})):u(i.removeUndefined({attribute:o}))),f!=="identifier"&&a.push({icon:Hi,label:"Advanced filter...",callback:()=>J8(e,r)}),a}function n6(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function r6(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var sn={},Pn={};Object.defineProperty(Pn,"__esModule",{value:!0}),Pn.ActionCreators=Pn.ActionTypes=void 0;var Fn={UNDO:"@@redux-undo/UNDO",REDO:"@@redux-undo/REDO",JUMP_TO_FUTURE:"@@redux-undo/JUMP_TO_FUTURE",JUMP_TO_PAST:"@@redux-undo/JUMP_TO_PAST",JUMP:"@@redux-undo/JUMP",CLEAR_HISTORY:"@@redux-undo/CLEAR_HISTORY"};Pn.ActionTypes=Fn;var i6={undo:function(){return{type:Fn.UNDO}},redo:function(){return{type:Fn.REDO}},jumpToFuture:function(e){return{type:Fn.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:Fn.JUMP_TO_PAST,index:e}},jump:function(e){return{type:Fn.JUMP,index:e}},clearHistory:function(){return{type:Fn.CLEAR_HISTORY}}};Pn.ActionCreators=i6;var vt={};Object.defineProperty(vt,"__esModule",{value:!0}),vt.parseActions=Os,vt.isHistory=o6,vt.includeAction=s6,vt.excludeAction=a6,vt.combineFilters=c6,vt.groupByActionTypes=u6,vt.newHistory=l6;function Os(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function o6(t){return typeof t.present!="undefined"&&typeof t.future!="undefined"&&typeof t.past!="undefined"&&Array.isArray(t.future)&&Array.isArray(t.past)}function s6(t){var e=Os(t);return function(n){return e.indexOf(n.type)>=0}}function a6(t){var e=Os(t);return function(n){return e.indexOf(n.type)<0}}function c6(){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 u6(t){var e=Os(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function l6(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;return{past:t,present:e,future:n,group:r,_latestUnfiltered:e,index:t.length,limit:t.length+n.length+1}}var Sm={},vr={};Object.defineProperty(vr,"__esModule",{value:!0}),vr.set=b6,vr.start=m6,vr.end=y6,vr.log=A6;function wt(t){return d6(t)||h6(t)||f6()}function f6(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function h6(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function d6(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}var Bs,$e,pl={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function p6(){$e={header:[],prev:[],action:[],next:[],msgs:[]}}function g6(){var t=$e,e=t.header,n=t.prev,r=t.next,i=t.action,o=t.msgs;if(console.group){var s,a,c,u,f;(s=console).groupCollapsed.apply(s,wt(e)),(a=console).log.apply(a,wt(n)),(c=console).log.apply(c,wt(i)),(u=console).log.apply(u,wt(r)),(f=console).log.apply(f,wt(o)),console.groupEnd()}else{var l,h,p,d,g;(l=console).log.apply(l,wt(e)),(h=console).log.apply(h,wt(n)),(p=console).log.apply(p,wt(i)),(d=console).log.apply(d,wt(r)),(g=console).log.apply(g,wt(o))}}function gl(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function m6(t,e){p6(),Bs&&(console.group?($e.header=["%credux-undo","font-style: italic","action",t.type],$e.action=gl("action",pl.action,t),$e.prev=gl("prev history",pl.prevState,e)):($e.header=["redux-undo action",t.type],$e.action=["action",t],$e.prev=["prev history",e]))}function y6(t){Bs&&(console.group?$e.next=gl("next history",pl.nextState,t):$e.next=["next history",t],g6())}function A6(){if(Bs){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];$e.msgs=$e.msgs.concat([].concat(e,[`
2037
2037
  `]))}}function b6(t){Bs=t}(function(t){function e(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e=function(w){return typeof w}:e=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},e(b)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=S;var n=s(vr),r=Pn,i=vt;function o(){if(typeof WeakMap!="function")return null;var b=new WeakMap;return o=function(){return b},b}function s(b){if(b&&b.__esModule)return b;if(b===null||e(b)!=="object"&&typeof b!="function")return{default:b};var A=o();if(A&&A.has(b))return A.get(b);var w={},E=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var B in b)if(Object.prototype.hasOwnProperty.call(b,B)){var O=E?Object.getOwnPropertyDescriptor(b,B):null;O&&(O.get||O.set)?Object.defineProperty(w,B,O):w[B]=b[B]}return w.default=b,A&&A.set(b,w),w}function a(b,A){var w=Object.keys(b);if(Object.getOwnPropertySymbols){var E=Object.getOwnPropertySymbols(b);A&&(E=E.filter(function(B){return Object.getOwnPropertyDescriptor(b,B).enumerable})),w.push.apply(w,E)}return w}function c(b){for(var A=1;A<arguments.length;A++){var w=arguments[A]!=null?arguments[A]:{};A%2?a(Object(w),!0).forEach(function(E){u(b,E,w[E])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(w)):a(Object(w)).forEach(function(E){Object.defineProperty(b,E,Object.getOwnPropertyDescriptor(w,E))})}return b}function u(b,A,w){return A in b?Object.defineProperty(b,A,{value:w,enumerable:!0,configurable:!0,writable:!0}):b[A]=w,b}function f(b){return 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,w=new Array(b.length);A<b.length;A++)w[A]=b[A];return w}}function d(b,A){var w=(0,i.newHistory)([],b,[]);return A&&(w._latestUnfiltered=null),w}function g(b,A,w,E){var B=b.past.length+1;n.log("inserting",A),n.log("new free: ",w-B);var O=b.past,D=b._latestUnfiltered,k=w&&w<=B,z=O.slice(k?1:0),G=D!=null?[].concat(f(z),[D]):z;return(0,i.newHistory)(G,A,[],E)}function m(b,A){if(A<0||A>=b.future.length)return b;var w=b.past,E=b.future,B=b._latestUnfiltered,O=[].concat(f(w),[B],f(E.slice(0,A))),D=E[A],k=E.slice(A+1);return(0,i.newHistory)(O,D,k)}function y(b,A){if(A<0||A>=b.past.length)return b;var w=b.past,E=b.future,B=b._latestUnfiltered,O=w.slice(0,A),D=[].concat(f(w.slice(A+1)),[B],f(E)),k=w[A];return(0,i.newHistory)(O,k,D)}function x(b,A){return A>0?m(b,A-1):A<0?y(b,b.past.length+A):b}function v(b,A){return A.indexOf(b)>-1?b:!b}function S(b){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.set(A.debug);var w=c({limit:void 0,filter:function(){return!0},groupBy:function(){return null},undoType:r.ActionTypes.UNDO,redoType:r.ActionTypes.REDO,jumpToPastType:r.ActionTypes.JUMP_TO_PAST,jumpToFutureType:r.ActionTypes.JUMP_TO_FUTURE,jumpType:r.ActionTypes.JUMP,neverSkipReducer:!1,ignoreInitialState:!1,syncFilter:!1},A,{initTypes:(0,i.parseActions)(A.initTypes,["@@redux-undo/INIT"]),clearHistoryType:(0,i.parseActions)(A.clearHistoryType,[r.ActionTypes.CLEAR_HISTORY])}),E=w.neverSkipReducer?function(O,D){for(var k=arguments.length,z=new Array(k>2?k-2:0),G=2;G<k;G++)z[G-2]=arguments[G];return c({},O,{present:b.apply(void 0,[O.present,D].concat(z))})}:function(O){return O},B;return function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:B,D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(D,O);for(var k=O,z=arguments.length,G=new Array(z>2?z-2:0),ue=2;ue<z;ue++)G[ue-2]=arguments[ue];if(!B)if(n.log("history is uninitialized"),O===void 0){var Ae={type:"@@redux-undo/CREATE_HISTORY"},Ge=b.apply(void 0,[O,Ae].concat(G));return k=d(Ge,w.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(k),k}else(0,i.isHistory)(O)?(k=B=w.ignoreInitialState?O:(0,i.newHistory)(O.past,O.present,O.future),n.log("initialHistory initialized: initialState is a history",B)):(k=B=d(O,w.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",B));var R;switch(D.type){case void 0:return k;case w.undoType:return R=x(k,-1),n.log("perform undo"),n.end(R),E.apply(void 0,[R,D].concat(G));case w.redoType:return R=x(k,1),n.log("perform redo"),n.end(R),E.apply(void 0,[R,D].concat(G));case w.jumpToPastType:return R=y(k,D.index),n.log("perform jumpToPast to ".concat(D.index)),n.end(R),E.apply(void 0,[R,D].concat(G));case w.jumpToFutureType:return R=m(k,D.index),n.log("perform jumpToFuture to ".concat(D.index)),n.end(R),E.apply(void 0,[R,D].concat(G));case w.jumpType:return R=x(k,D.index),n.log("perform jump to ".concat(D.index)),n.end(R),E.apply(void 0,[R,D].concat(G));case v(D.type,w.clearHistoryType):return R=d(k.present,w.ignoreInitialState),n.log("perform clearHistory"),n.end(R),E.apply(void 0,[R,D].concat(G));default:if(R=b.apply(void 0,[k.present,D].concat(G)),w.initTypes.some(function(ef){return ef===D.type}))return n.log("reset history due to init action"),n.end(B),B;if(k._latestUnfiltered===R)return k;var ie=typeof w.filter=="function"&&!w.filter(D,R,k);if(ie){var eo=(0,i.newHistory)(k.past,R,k.future,k.group);return w.syncFilter||(eo._latestUnfiltered=k._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(eo),eo}var to=w.groupBy(D,R,k);if(to!=null&&to===k.group){var ea=(0,i.newHistory)(k.past,R,k.future,k.group);return n.log("groupBy grouped the action with the previous action"),n.end(ea),ea}return k=g(k,R,w.limit,to),n.log("inserted new state into history"),n.end(k),k}}}})(Sm),function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ActionTypes",{enumerable:!0,get:function(){return e.ActionTypes}}),Object.defineProperty(t,"ActionCreators",{enumerable:!0,get:function(){return e.ActionCreators}}),Object.defineProperty(t,"parseActions",{enumerable:!0,get:function(){return n.parseActions}}),Object.defineProperty(t,"isHistory",{enumerable:!0,get:function(){return n.isHistory}}),Object.defineProperty(t,"includeAction",{enumerable:!0,get:function(){return n.includeAction}}),Object.defineProperty(t,"excludeAction",{enumerable:!0,get:function(){return n.excludeAction}}),Object.defineProperty(t,"combineFilters",{enumerable:!0,get:function(){return n.combineFilters}}),Object.defineProperty(t,"groupByActionTypes",{enumerable:!0,get:function(){return n.groupByActionTypes}}),Object.defineProperty(t,"newHistory",{enumerable:!0,get:function(){return n.newHistory}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.default}});var e=Pn,n=vt,r=i(Sm);function i(o){return o&&o.__esModule?o:{default:o}}}(sn);var x6=r6(sn);function ml(t){return t.split("-")[0]}function Cm(t){return t.split("-")[1]}function Dm(t){return["top","bottom"].includes(ml(t))?"x":"y"}function Mm(t){return t==="y"?"height":"width"}function Im(t){let{reference:e,floating:n,placement:r}=t;const i=e.x+e.width/2-n.width/2,o=e.y+e.height/2-n.height/2;let s;switch(ml(r)){case"top":s={x:i,y:e.y-n.height};break;case"bottom":s={x:i,y:e.y+e.height};break;case"right":s={x:e.x+e.width,y:o};break;case"left":s={x:e.x-n.width,y:o};break;default:s={x:e.x,y:e.y}}const a=Dm(r),c=Mm(a);switch(Cm(r)){case"start":s[a]=s[a]-(e[c]/2-n[c]/2);break;case"end":s[a]=s[a]+(e[c]/2-n[c]/2);break}return s}const v6=async(t,e,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:s}=n;let a=await s.getElementRects({reference:t,floating:e,strategy:i}),{x:c,y:u}=Im(F(T({},a),{placement:r})),f=r,l={};for(let h=0;h<o.length;h++){const{name:p,fn:d}=o[h],{x:g,y:m,data:y,reset:x}=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:{}}),x){typeof x=="object"&&(x.placement&&(f=x.placement),x.rects&&(a=x.rects===!0?await s.getElementRects({reference:t,floating:e,strategy:i}):x.rects),{x:c,y:u}=Im(F(T({},a),{placement:f}))),h=-1;continue}}return{x:c,y:u,placement:f,strategy:i,middlewareData:l}};function w6(t){return T({top:0,right:0,bottom:0,left:0},t)}function E6(t){return typeof t!="number"?w6(t):{top:t,right:t,bottom:t,left:t}}function yl(t){return F(T({},t),{top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height})}async function S6(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=E6(h),g=s[l?f==="floating"?"reference":"floating":f],m=await i.getClippingClientRect({element:await i.isElement(g)?g:g.contextElement||await i.getDocumentElement({element:s.floating}),boundary:c,rootBoundary:u}),y=yl(await i.convertOffsetParentRelativeRectToViewportRelativeRect({rect:f==="floating"?F(T({},o.floating),{x:n,y:r}):o.reference,offsetParent:await i.getOffsetParent({element:s.floating}),strategy:a}));return{top:m.top-y.top+p.top,bottom:y.bottom-m.bottom+p.bottom,left:m.left-y.left+p.left,right:y.right-m.right+p.right}}const C6={left:"right",right:"left",bottom:"top",top:"bottom"};function Ps(t){return t.replace(/left|right|bottom|top/g,e=>C6[e])}function D6(t,e){const n=Cm(t)==="start",r=Dm(t),i=Mm(r);let o=r==="x"?n?"right":"left":n?"bottom":"top";return e.reference[i]>e.floating[i]&&(o=Ps(o)),{main:o,cross:Ps(o)}}const M6={start:"end",end:"start"};function Tm(t){return t.replace(/start|end/g,e=>M6[e])}function I6(t){const e=Ps(t);return[Tm(t),e,Tm(e)]}const T6=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=ly(E,["mainAxis","crossAxis","fallbackPlacements","fallbackStrategy","flipAlignment"]),d=ml(i),m=f||(d===a||!h?[Ps(a)]:I6(a)),y=[a,...m],x=await S6(e,p),v=[];let S=((r=o.flip)==null?void 0:r.overflows)||[];if(c&&v.push(x[d]),u){const{main:B,cross:O}=D6(i,s);v.push(x[B],x[O])}if(S=[...S,{placement:i,overflows:v}],!v.every(B=>B<=0)){var b,A;const B=((b=(A=o.flip)==null?void 0:A.index)!=null?b:0)+1,O=y[B];if(O)return{data:{index:B,overflows:S},reset:{placement:O}};let D="bottom";switch(l){case"bestFit":{var w;const k=(w=S.slice().sort((z,G)=>z.overflows.filter(ue=>ue>0).reduce((ue,Ae)=>ue+Ae,0)-G.overflows.filter(ue=>ue>0).reduce((ue,Ae)=>ue+Ae,0))[0])==null?void 0:w.placement;k&&(D=k);break}case"initialPlacement":D=a;break}return{data:{skip:!0},reset:{placement:D}}}return{}}}};function Al(t){return(t==null?void 0:t.toString())==="[object Window]"}function an(t){if(t==null)return window;if(!Al(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function Fs(t){return an(t).getComputedStyle(t)}function Ft(t){return Al(t)?"":t?(t.nodeName||"").toLowerCase():""}function zt(t){return t instanceof an(t).HTMLElement}function zs(t){return t instanceof an(t).Element}function N6(t){return t instanceof an(t).Node}function Nm(t){const e=an(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Rs(t){const{overflow:e,overflowX:n,overflowY:r}=Fs(t);return/auto|scroll|overlay|hidden/.test(e+r+n)}function L6(t){return["table","td","th"].includes(Ft(t))}function Lm(t){const e=navigator.userAgent.toLowerCase().includes("firefox"),n=Fs(t);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||e&&n.willChange==="filter"||e&&(n.filter?n.filter!=="none":!1)}const km=Math.min,Vi=Math.max,Us=Math.round;function wr(t,e){e===void 0&&(e=!1);const n=t.getBoundingClientRect();let r=1,i=1;return e&&zt(t)&&(r=t.offsetWidth>0&&Us(n.width)/t.offsetWidth||1,i=t.offsetHeight>0&&Us(n.height)/t.offsetHeight||1),{width:n.width/r,height:n.height/i,top:n.top/i,right:n.right/r,bottom:n.bottom/i,left:n.left/r,x:n.left/r,y:n.top/i}}function cn(t){return((N6(t)?t.ownerDocument:t.document)||window.document).documentElement}function js(t){return Al(t)?{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}:{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function Om(t){return wr(cn(t)).left+js(t).scrollLeft}function k6(t){const e=wr(t);return Us(e.width)!==t.offsetWidth||Us(e.height)!==t.offsetHeight}function O6(t,e,n){const r=zt(e),i=cn(e),o=wr(t,r&&k6(e));let s={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if(r||!r&&n!=="fixed")if((Ft(e)!=="body"||Rs(i))&&(s=js(e)),zt(e)){const c=wr(e,!0);a.x=c.x+e.clientLeft,a.y=c.y+e.clientTop}else i&&(a.x=Om(i));return{x:o.left+s.scrollLeft-a.x,y:o.top+s.scrollTop-a.y,width:o.width,height:o.height}}function Gs(t){return Ft(t)==="html"?t:t.assignedSlot||t.parentNode||(Nm(t)?t.host:null)||cn(t)}function Bm(t){return!zt(t)||getComputedStyle(t).position==="fixed"?null:t.offsetParent}function B6(t){let e=Gs(t);for(;zt(e)&&!["html","body"].includes(Ft(e));){if(Lm(e))return e;e=e.parentNode}return null}function bl(t){const e=an(t);let n=Bm(t);for(;n&&L6(n)&&getComputedStyle(n).position==="static";)n=Bm(n);return n&&(Ft(n)==="html"||Ft(n)==="body"&&getComputedStyle(n).position==="static"&&!Lm(n))?e:n||B6(t)||e}function Pm(t){return{width:t.offsetWidth,height:t.offsetHeight}}function P6(t){let{rect:e,offsetParent:n,strategy:r}=t;const i=zt(n),o=cn(n);if(n===o)return e;let s={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if((i||!i&&r!=="fixed")&&((Ft(n)!=="body"||Rs(o))&&(s=js(n)),zt(n))){const c=wr(n,!0);a.x=c.x+n.clientLeft,a.y=c.y+n.clientTop}return F(T({},e),{x:e.x-s.scrollLeft+a.x,y:e.y-s.scrollTop+a.y})}function F6(t){const e=an(t),n=cn(t),r=e.visualViewport;let i=n.clientWidth,o=n.clientHeight,s=0,a=0;return r&&(i=r.width,o=r.height,Math.abs(e.innerWidth/r.scale-r.width)<.01&&(s=r.offsetLeft,a=r.offsetTop)),{width:i,height:o,x:s,y:a}}function z6(t){var e;const n=cn(t),r=js(t),i=(e=t.ownerDocument)==null?void 0:e.body,o=Vi(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),s=Vi(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0);let a=-r.scrollLeft+Om(t);const c=-r.scrollTop;return Fs(i||n).direction==="rtl"&&(a+=Vi(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:s,x:a,y:c}}function Fm(t){return["html","body","#document"].includes(Ft(t))?t.ownerDocument.body:zt(t)&&Rs(t)?t:Fm(Gs(t))}function zm(t,e){var n;e===void 0&&(e=[]);const r=Fm(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),o=an(r),s=i?[o].concat(o.visualViewport||[],Rs(r)?r:[]):r,a=e.concat(s);return i?a:a.concat(zm(Gs(s)))}function R6(t,e){const n=e.getRootNode==null?void 0:e.getRootNode();if(t.contains(e))return!0;if(n&&Nm(n)){let r=e;do{if(r&&t===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function U6(t){const e=wr(t),n=e.top+t.clientTop,r=e.left+t.clientLeft;return{top:n,left:r,x:r,y:n,right:r+t.clientWidth,bottom:n+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}function Rm(t,e){return e==="viewport"?yl(F6(t)):zs(e)?U6(e):yl(z6(cn(t)))}function j6(t){const e=zm(Gs(t)),r=["absolute","fixed"].includes(Fs(t).position)&&zt(t)?bl(t):t;return zs(r)?e.filter(i=>zs(i)&&R6(i,r)&&Ft(i)!=="body"):[]}function G6(t){let{element:e,boundary:n,rootBoundary:r}=t;const o=[...n==="clippingParents"?j6(e):[].concat(n),r],s=o[0],a=o.reduce((c,u)=>{const f=Rm(e,u);return c.top=Vi(f.top,c.top),c.right=km(f.right,c.right),c.bottom=km(f.bottom,c.bottom),c.left=Vi(f.left,c.left),c},Rm(e,s));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}const H6={getElementRects:t=>{let{reference:e,floating:n,strategy:r}=t;return{reference:O6(e,bl(n),r),floating:F(T({},Pm(n)),{x:0,y:0})}},convertOffsetParentRelativeRectToViewportRelativeRect:t=>P6(t),getOffsetParent:t=>{let{element:e}=t;return bl(e)},isElement:t=>zs(t),getDocumentElement:t=>{let{element:e}=t;return cn(e)},getClippingClientRect:t=>G6(t),getDimensions:t=>{let{element:e}=t;return Pm(e)},getClientRects:t=>{let{element:e}=t;return e.getClientRects()}},Q6=(t,e,n)=>v6(t,e,T({platform:H6},n));let Et;const _i=[],xl=Is(t=>t(),150,!1);function Yi(t){if((t==null?void 0:t.type)=="contextmenu"){t.preventDefault();return}Et&&(Et.remove(),Et=void 0,document.body.classList.remove(En))}function Um(t){var e;if(!(t<1)){for(let n=t;n<_i.length;n++)(e=_i[n])==null||e.remove(),_i[n]=void 0;for(const n of _i[t-1].querySelectorAll("li.active"))n.classList.remove("active")}}const V6=()=>M`<li class="menu-divider"></li>`,_6=t=>M`<li class="menu-header">${t.label||"-"}</li>`,Y6=(t,e)=>M`<li><a class="submenu-item" @click="${n=>n.stopPropagation()}" @mouseup="${n=>n.stopPropagation()}" @mouseenter="${n=>xl(()=>{const r=n.target.closest("li");q6(t.submenu,r,e+1),n.stopPropagation()})}" @mouseleave="${()=>xl(()=>Um(e+1))}"><span>${t.label}</span></a></li>`,W6=t=>M`<li><a @mouseup="${()=>{Yi(),t.callback()}}">${t.icon?te(t.icon).node[0]:""} ${t.label}</a> ${t.ellipsisCallback?M`<a class="menu-ellipsis" @click="${t.ellipsisCallback}">${te(i8).node[0]}</a>`:U}</li>`,X6=t=>M`<li><span class="disabled-item">${t.icon?te(t.icon).node[0]:""} ${t.label||"-"}</span></li>`;function jm(t,e=1){switch(t.type){case"divider":return V6();case"header":return _6(t);default:return t.submenu?Y6(t,e):t.callback?W6(t):X6(t)}}function q6(t,e,n){Gm(t,e,n,"right-start"),e.classList.add("active")}function Gm(t,e,n,r){const i=document.createElement("ul");i.classList.add("gs-context-menu"),i.addEventListener("mouseenter",()=>{xl(()=>{})}),Xe(t.map(o=>jm(o,n)),i),Et.appendChild(i),Um(n),_i[n]=i,Q6(e,i,{placement:r!=null?r:"right-start",middleware:[T6()]}).then(({x:o,y:s})=>{const a=i.querySelector(":scope > li");a&&(s-=a.getBoundingClientRect().top),i.style.left=`${o}px`,i.style.top=`${s}px`})}function Hm(t,e,n){n!=null||(n="bottom-start"),Yi();const r=performance.now(),i=document.body;Et=document.createElement("div"),Et.classList.add("gs-context-menu-backdrop"),Et.addEventListener("click",Yi),Et.addEventListener("contextmenu",Yi),Et.addEventListener("mouseup",()=>{performance.now()-r>500&&Yi()},{once:!0}),i.appendChild(Et),document.body.classList.add(En),Gm(t.items,e,0,n)}function Qm(t,e){Hm(t,Z6(e),"right-start"),e.preventDefault()}function Z6(t){return{getBoundingClientRect(){return{width:0,height:0,x:t.clientX,y:t.clientY,top:t.clientY,left:t.clientX,right:t.clientX,bottom:t.clientY,toJSON:void 0}}}}const vl={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},Hs="SAMPLE_ATTRIBUTE",Vm="SAMPLE_NAME",K6=/^attribute-(.*)$/;class _m extends yr{constructor(e){super({title:"Sample metadata",data:{dynamicSource:!0},hconcat:[],spacing:1,resolve:{scale:{default:"independent"},axis:{default:"independent"}}},e.context,void 0,"sample-metadata");this.sampleView=e,this._attributeHighlighState={backgroundOpacity:1,currentAttribute:void 0,abortController:new AbortController},this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(Hs,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(Vm,n=>Ym),this.addInteractionEventListener("contextmenu",this.handleContextMenu.bind(this)),this.addInteractionEventListener("mousemove",(n,r)=>{var a;const i=r.target,o=this._findSampleForMouseEvent(n,r),s=i&&((a=this.getAttributeInfoFromView(i))==null?void 0:a.name)||void 0;if(o){const c=JSON.stringify([o.id,s]);this.context.updateTooltip(c,u=>Promise.resolve(this.sampleToTooltip(u)))}this._handleAttributeHighlight(s)}),pe([...this.sampleView.getAncestors()]).addInteractionEventListener("mousemove",(n,r)=>{if(!!this._attributeHighlighState.currentAttribute){if(r.target){for(const i of r.target.getAncestors())if(i==this)return}this._handleAttributeHighlight(void 0)}})}getEncoding(e){return{}}render(e,n,r={}){!this.isVisible()||super.render(e,n,F(T({},r),{clipRect:this.sampleView._clipBySummary(n)}))}_handleAttributeHighlight(e){const n=this._attributeHighlighState;e!=n.currentAttribute&&(n.abortController.abort(),n.abortController=new AbortController,this.context.animator.transition(T({from:n.backgroundOpacity,onUpdate:r=>{n.backgroundOpacity=r},easingFunction:ug,signal:n.abortController.signal},e?{to:.1,duration:1e3,delay:n.backgroundOpacity<1?0:500}:{to:1,duration:200,delay:150})).catch(r=>{}),this.context.animator.requestRender()),n.currentAttribute=e}getSample(e){var n;return(n=this.sampleView.sampleHierarchy.sampleData)==null?void 0:n.entities[e]}_findSampleForMouseEvent(e,n){return this.sampleView.getSampleAt(n.point.y-e.y)}_getAttributeOpacity(e){const n=this._attributeHighlighState;return e==n.currentAttribute?1:n.backgroundOpacity}handleContextMenu(e,n){const r=n.uiEvent,i=this._findSampleForMouseEvent(e,n);if(!i){r.preventDefault();return}const o=[],s=this.getAttributeInfoFromView(n.target);if(s){const a=i.attributes[s.name];o.push(...dl(M`Attribute: <strong>${s.name}</strong>`,s,a,this.sampleView))}else o.push(...dl(M`Sample: <strong>${i.displayName}</strong>`,Ym,i.id,this.sampleView));Qm({items:o},r)}_setSamples(e){if(this.children.length)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;kg(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof Pe){const s=o.mark;i.push(s.initializeGraphics().then(a=>s)),n.addObserver(a=>{s.initializeEncoders(),s.initializeData(),s.updateGraphicsData()},o)}}),Promise.allSettled(i).then(o=>{for(const s of o)"value"in s?s.value.finalizeGraphicsInitialization():"reason"in s&&console.error(s.reason)}),r.publishData(e)}_createViews(){this.addChildBySpec($6());for(const e of this._getAttributeNames()){const n=this.addChildBySpec(this._createAttributeViewSpec(e));n.opacityFunction=r=>r*this._getAttributeOpacity(e)}Bg(this)}_getAttributeDef(e){var n,r;return(r=(n=this.sampleView.spec.samples)==null?void 0:n.attributes)==null?void 0:r[e]}_getAttributeNames(){return this._cache("attributeNames",()=>[...this.sampleView.getSamples().flatMap(r=>Object.keys(r.attributes)).reduce((r,i)=>r.add(i),new Set)])}_createAttributeViewSpec(e){const n=this._getAttributeDef(e);let r=n?n.type:void 0;if(!r){const i=this.sampleView.getSamples();switch($f(i.map(o=>o.attributes[e]))){case"integer":case"number":r=vl.QUANTITATIVE;break;default:r=vl.NOMINAL}}return J6(e,F(T({},n||{}),{type:r}))}_findViewForAttribute(e){return this.children[this._getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e.name.match(K6);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:Hs,specifier:i},accessor:(o,s)=>s.sampleData.entities[o].attributes[i],type:r.type,scale:r.getScale(),title:M`<em class="attribute">${i}</em>`}}}getAttributeInfo(e){return this.getAttributeInfoFromView(this._findViewForAttribute(e))}sampleToTooltip(e){const[n,r]=JSON.parse(e),i=this.getSample(n),o=(a,c)=>e5(c)?this.getAttributeInfo(a).scale(c):"transparent",s=M`<table class="attributes">${Object.entries(i.attributes).map(([a,c])=>M`<tr class="${$M({hovered:a==r})}"><th>${a}</th><td>${jg(c)}</td><td class="color" .style="background-color: ${o(a,c)}"></td></tr>`)}</table>`;return M`<div class="title"><strong>${i.displayName||i.id}</strong></div>${s}`}getDefaultResolution(e,n){return"independent"}handleVerboseCommand(e){const n=e;for(const r of this._getAttributeNames()){const i=this.getAttributeInfo(r);if((i.type==Fu||i.type==zu)&&this.sampleView.getSamples().find(s=>s.attributes[i.name]==n)){const s=this.sampleView.actions.filterByNominal({attribute:{type:Hs,specifier:r},values:[n]}),a=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(a)&&!a.payload.remove&&a.payload.attribute.type==Hs&&a.payload.attribute.specifier==r&&a.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[sn.ActionCreators.undo(),s]:s),!0}}return!1}isPickingSupported(){return!1}}function J6(t,e){var i,o;const n=`attributes["${t}"]`,r={name:`attribute-${t}`,title:t,visible:(i=e.visible)!=null?i:!0,width:(o=e.width)!=null?o:10,transform:[{type:"filter",expr:`datum.${n} != null`}],mark:{type:"rect"},encoding:{facetIndex:{field:"indexNumber"},color:{field:n,type:e.type,scale:e.scale}},opacity:1};return e.barScale&&e.type==vl.QUANTITATIVE&&(r.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale}),r}function $6(){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 e5(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const Ym=Object.freeze({name:"sample",attribute:{type:Vm},accessor:t=>t,type:"identifier",scale:void 0});class t5 extends Ri{constructor(e){super({title:"Groups",width:{step:22},data:{dynamicSource:!0},transform:[{type:"filter",expr:"datum._depth > 0"},{type:"formula",as:"_y1",expr:"datum._index * 2"},{type:"formula",as:"_y2",expr:"datum._index * 2 + 1"},{type:"formula",as:"_NA",expr:"datum.label == null"},{type:"formula",as:"label",expr:"datum.label != null ? datum.label: 'NA'"}],encoding:{x:{field:"_depth",type:"ordinal",scale:{align:0,padding:.2272727},axis:null},y:{field:"_y1",type:"nominal",scale:{type:"ordinal",domain:ho(500)},axis:null},y2:{field:"_y2"}},layer:[{title:"Group",mark:{type:"rect",clip:!0,dynamicData:!0,color:"#e8e8e8"}},{mark:{type:"text",clip:!0,dynamicData:!0,angle:-90,paddingY:5,tooltip:null},encoding:{text:{field:"label"},opacity:{field:"_NA",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[1,.3]}}}}]},e.context,void 0,"sample-groups");this.sampleView=e,this._addBroadcastHandler("layoutComputed",()=>{this.updateRange()})}updateRange(){var o,s,a;const e=(o=this.sampleView.getLocations())==null?void 0:o.groups;if(!(e==null?void 0:e.length))return;const n=(a=(s=this.sampleView)==null?void 0:s._coords.height)!=null?a:0,r=this.getScaleResolution("y"),i=[];for(const c of e)i.push(1-(c.locSize.location+c.locSize.size)/n),i.push(1-c.locSize.location/n);r.getScale().range(i),this.context.glHelper.createRangeTexture(r,!0)}updateGroups(){var i,o;const e=(o=(i=this.sampleView.getLocations())==null?void 0:i.groups)!=null?o:[],n=this.context.dataFlow.findDataSourceByKey(this);if(!n)return;const r=e.map(s=>({_index:s.key.index,_name:s.key.group.name,_depth:s.key.depth,attribute:s.key.attributeLabel,label:s.key.group.label,n:s.key.n}));n.publishData(r),this.getScaleResolution("x").reconfigure(),this.getScaleResolution("y").reconfigure(),e.length&&this.updateRange(),pe([...this.getAncestors()]).visit(s=>ki(s,"size"))}}function at(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];throw Error("[Immer] minified error nr: "+t+(n.length?" "+n.map(function(i){return"'"+i+"'"}).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function un(t){return!!t&&!!t[ne]}function ln(t){return!!t&&(function(e){if(!e||typeof e!="object")return!1;var n=Object.getPrototypeOf(e);if(n===null)return!0;var r=Object.hasOwnProperty.call(n,"constructor")&&n.constructor;return r===Object||typeof r=="function"&&Function.toString.call(r)===l5}(t)||Array.isArray(t)||!!t[n1]||!!t.constructor[n1]||wl(t)||El(t))}function zn(t,e,n){n===void 0&&(n=!1),Er(t)===0?(n?Object.keys:Cr)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function Er(t){var e=t[ne];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:wl(t)?2:El(t)?3:0}function Sr(t,e){return Er(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function n5(t,e){return Er(t)===2?t.get(e):t[e]}function Wm(t,e,n){var r=Er(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function Xm(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function wl(t){return c5&&t instanceof Map}function El(t){return u5&&t instanceof Set}function Rn(t){return t.o||t.t}function Sl(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=r1(t);delete e[ne];for(var n=Cr(e),r=0;r<n.length;r++){var i=n[r],o=e[i];o.writable===!1&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(e[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:t[i]})}return Object.create(Object.getPrototypeOf(t),e)}function Cl(t,e){return e===void 0&&(e=!1),Dl(t)||un(t)||!ln(t)||(Er(t)>1&&(t.set=t.add=t.clear=t.delete=r5),Object.freeze(t),e&&zn(t,function(n,r){return Cl(r,!0)},!0)),t}function r5(){at(2)}function Dl(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function Rt(t){var e=Pl[t];return e||at(18,t),e}function i5(t,e){Pl[t]||(Pl[t]=e)}function Ml(){return Wi}function Il(t,e){e&&(Rt("Patches"),t.u=[],t.s=[],t.v=e)}function Qs(t){Tl(t),t.p.forEach(o5),t.p=null}function Tl(t){t===Wi&&(Wi=t.l)}function qm(t){return Wi={p:[],l:Wi,h:t,m:!0,_:0}}function o5(t){var e=t[ne];e.i===0||e.i===1?e.j():e.O=!0}function Nl(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||Rt("ES5").S(e,t,r),r?(n[ne].P&&(Qs(e),at(4)),ln(t)&&(t=Vs(e,t),e.l||_s(e,t)),e.u&&Rt("Patches").M(n[ne],t,e.u,e.s)):t=Vs(e,n,[]),Qs(e),e.u&&e.v(e.u,e.s),t!==t1?t:void 0}function Vs(t,e,n){if(Dl(e))return e;var r=e[ne];if(!r)return zn(e,function(o,s){return Zm(t,r,e,o,s,n)},!0),e;if(r.A!==t)return e;if(!r.P)return _s(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=Sl(r.k):r.o;zn(r.i===3?new Set(i):i,function(o,s){return Zm(t,r,i,o,s,n)}),_s(t,i,!1),n&&t.u&&Rt("Patches").R(r,n,t.u,t.s)}return r.o}function Zm(t,e,n,r,i,o){if(un(i)){var s=Vs(t,i,o&&e&&e.i!==3&&!Sr(e.D,r)?o.concat(r):void 0);if(Wm(n,r,s),!un(s))return;t.m=!1}if(ln(i)&&!Dl(i)){if(!t.h.F&&t._<1)return;Vs(t,i),e&&e.A.l||_s(t,i)}}function _s(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&Cl(e,n)}function Ll(t,e){var n=t[ne];return(n?Rn(n):t)[e]}function Km(t,e){if(e in t)for(var n=Object.getPrototypeOf(t);n;){var r=Object.getOwnPropertyDescriptor(n,e);if(r)return r;n=Object.getPrototypeOf(n)}}function fn(t){t.P||(t.P=!0,t.l&&fn(t.l))}function kl(t){t.o||(t.o=Sl(t.t))}function Ol(t,e,n){var r=wl(e)?Rt("MapSet").N(e,n):El(e)?Rt("MapSet").T(e,n):t.g?function(i,o){var s=Array.isArray(i),a={i:s?1:0,A:o?o.A:Ml(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=a,u=Dr;s&&(c=[a],u=Ys);var f=Proxy.revocable(c,u),l=f.revoke,h=f.proxy;return a.k=h,a.j=l,h}(e,n):Rt("ES5").J(e,n);return(n?n.A:Ml()).p.push(r),r}function s5(t){return un(t)||at(22,t),function e(n){if(!ln(n))return n;var r,i=n[ne],o=Er(n);if(i){if(!i.P&&(i.i<4||!Rt("ES5").K(i)))return i.t;i.I=!0,r=Jm(n,o),i.I=!1}else r=Jm(n,o);return zn(r,function(s,a){i&&n5(i.t,s)===a||Wm(r,s,e(a))}),o===3?new Set(r):r}(t)}function Jm(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return Sl(t)}function a5(){function t(o,s){var a=i[o];return a?a.enumerable=s:i[o]=a={configurable:!0,enumerable:s,get:function(){var c=this[ne];return Dr.get(c,o)},set:function(c){var u=this[ne];Dr.set(u,o,c)}},a}function e(o){for(var s=o.length-1;s>=0;s--){var a=o[s][ne];if(!a.P)switch(a.i){case 5:r(a)&&fn(a);break;case 4:n(a)&&fn(a)}}}function n(o){for(var s=o.t,a=o.k,c=Cr(a),u=c.length-1;u>=0;u--){var f=c[u];if(f!==ne){var l=s[f];if(l===void 0&&!Sr(s,f))return!0;var h=a[f],p=h&&h[ne];if(p?p.t!==l:!Xm(h,l))return!0}}var d=!!s[ne];return c.length!==Cr(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);return!(!a||a.get)}var i={};i5("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=r1(l);delete d[ne];for(var g=Cr(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:Ml(),P:!1,I:!1,D:{},l:s,t:o,k:c,o:null,O:!1,C:!1};return Object.defineProperty(c,ne,{value:u,writable:!0}),c},S:function(o,s,a){a?un(s)&&s[ne].A===o&&e(o.p):(o.u&&function c(u){if(u&&typeof u=="object"){var f=u[ne];if(f){var l=f.t,h=f.k,p=f.D,d=f.i;if(d===4)zn(h,function(v){v!==ne&&(l[v]!==void 0||Sr(l,v)?p[v]||c(h[v]):(p[v]=!0,fn(f)))}),zn(l,function(v){h[v]!==void 0||Sr(h,v)||(p[v]=!1,fn(f))});else if(d===5){if(r(f)&&(fn(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),x=0;x<y;x++)p[x]===void 0&&c(h[x])}}}}(o.p[0]),e(o.p))},K:function(o){return o.i===4?n(o):r(o)}})}var $m,Wi,Bl=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",c5=typeof Map!="undefined",u5=typeof Set!="undefined",e1=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",t1=Bl?Symbol.for("immer-nothing"):(($m={})["immer-nothing"]=!0,$m),n1=Bl?Symbol.for("immer-draftable"):"__$immer_draftable",ne=Bl?Symbol.for("immer-state"):"__$immer_state",l5=""+Object.prototype.constructor,Cr=typeof Reflect!="undefined"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,r1=Object.getOwnPropertyDescriptors||function(t){var e={};return Cr(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},Pl={},Dr={get:function(t,e){if(e===ne)return t;var n=Rn(t);if(!Sr(n,e))return function(i,o,s){var a,c=Km(o,s);return c?"value"in c?c.value:(a=c.get)===null||a===void 0?void 0:a.call(i.k):void 0}(t,n,e);var r=n[e];return t.I||!ln(r)?r:r===Ll(t.t,e)?(kl(t),t.o[e]=Ol(t.A.h,r,t)):r},has:function(t,e){return e in Rn(t)},ownKeys:function(t){return Reflect.ownKeys(Rn(t))},set:function(t,e,n){var r=Km(Rn(t),e);if(r==null?void 0:r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=Ll(Rn(t),e),o=i==null?void 0:i[ne];if(o&&o.t===n)return t.o[e]=n,t.D[e]=!1,!0;if(Xm(n,i)&&(n!==void 0||Sr(t.t,e)))return!0;kl(t),fn(t)}return t.o[e]===n&&typeof n!="number"&&(n!==void 0||e in t.o)||(t.o[e]=n,t.D[e]=!0,!0)},deleteProperty:function(t,e){return Ll(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,kl(t),fn(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=Rn(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.i!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},defineProperty:function(){at(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){at(12)}},Ys={};zn(Dr,function(t,e){Ys[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),Ys.deleteProperty=function(t,e){return Dr.deleteProperty.call(this,t[0],e)},Ys.set=function(t,e,n){return Dr.set.call(this,t[0],e,n,t[0])};var f5=function(){function t(n){var r=this;this.g=e1,this.F=!0,this.produce=function(i,o,s){if(typeof i=="function"&&typeof o!="function"){var a=o;o=i;var c=r;return function(p){var d=this;p===void 0&&(p=a);for(var g=arguments.length,m=Array(g>1?g-1:0),y=1;y<g;y++)m[y-1]=arguments[y];return c.produce(p,function(x){var v;return(v=o).call.apply(v,[d,x].concat(m))})}}var u;if(typeof o!="function"&&at(6),s!==void 0&&typeof s!="function"&&at(7),ln(i)){var f=qm(r),l=Ol(r,i,void 0),h=!0;try{u=o(l),h=!1}finally{h?Qs(f):Tl(f)}return typeof Promise!="undefined"&&u instanceof Promise?u.then(function(p){return Il(f,s),Nl(p,f)},function(p){throw Qs(f),p}):(Il(f,s),Nl(u,f))}if(!i||typeof i!="object")return(u=o(i))===t1?void 0:(u===void 0&&(u=i),r.F&&Cl(u,!0),u);at(21,i)},this.produceWithPatches=function(i,o){return typeof i=="function"?function(c){for(var u=arguments.length,f=Array(u>1?u-1:0),l=1;l<u;l++)f[l-1]=arguments[l];return r.produceWithPatches(c,function(h){return i.apply(void 0,[h].concat(f))})}:[r.produce(i,o,function(c,u){s=c,a=u}),s,a];var s,a},typeof(n==null?void 0:n.useProxies)=="boolean"&&this.setUseProxies(n.useProxies),typeof(n==null?void 0:n.autoFreeze)=="boolean"&&this.setAutoFreeze(n.autoFreeze)}var e=t.prototype;return e.createDraft=function(n){ln(n)||at(8),un(n)&&(n=s5(n));var r=qm(this),i=Ol(this,n,void 0);return i[ne].C=!0,Tl(r),i},e.finishDraft=function(n,r){var i=n&&n[ne],o=i.A;return Il(o,r),Nl(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!e1&&at(20),this.g=n},e.applyPatches=function(n,r){var i;for(i=r.length-1;i>=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}var s=Rt("Patches").$;return un(n)?s(n,r):this.produce(n,function(a){return s(a,r.slice(i+1))})},t}(),je=new f5,h5=je.produce;je.produceWithPatches.bind(je),je.setAutoFreeze.bind(je),je.setUseProxies.bind(je),je.applyPatches.bind(je),je.createDraft.bind(je),je.finishDraft.bind(je);var i1=h5;function d5(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o1(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function s1(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?o1(Object(n),!0).forEach(function(r){d5(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):o1(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Ce(t){return"Minified Redux error #"+t+"; visit https://redux.js.org/Errors?code="+t+" for the full message or use the non-minified dev environment for full errors. "}var a1=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Fl=function(){return Math.random().toString(36).substring(7).split("").join(".")},Ws={INIT:"@@redux/INIT"+Fl(),REPLACE:"@@redux/REPLACE"+Fl(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Fl()}};function p5(t){if(typeof t!="object"||t===null)return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function c1(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(Ce(0));if(typeof e=="function"&&typeof n=="undefined"&&(n=e,e=void 0),typeof n!="undefined"){if(typeof n!="function")throw new Error(Ce(1));return n(c1)(t,e)}if(typeof t!="function")throw new Error(Ce(2));var i=t,o=e,s=[],a=s,c=!1;function u(){a===s&&(a=s.slice())}function f(){if(c)throw new Error(Ce(3));return o}function l(g){if(typeof g!="function")throw new Error(Ce(4));if(c)throw new Error(Ce(5));var m=!0;return u(),a.push(g),function(){if(!!m){if(c)throw new Error(Ce(6));m=!1,u();var x=a.indexOf(g);a.splice(x,1),s=null}}}function h(g){if(!p5(g))throw new Error(Ce(7));if(typeof g.type=="undefined")throw new Error(Ce(8));if(c)throw new Error(Ce(9));try{c=!0,o=i(o,g)}finally{c=!1}for(var m=s=a,y=0;y<m.length;y++){var x=m[y];x()}return g}function p(g){if(typeof g!="function")throw new Error(Ce(10));i=g,h({type:Ws.REPLACE})}function d(){var g,m=l;return g={subscribe:function(x){if(typeof x!="object"||x===null)throw new Error(Ce(11));function v(){x.next&&x.next(f())}v();var S=m(v);return{unsubscribe:S}}},g[a1]=function(){return this},g}return h({type:Ws.INIT}),r={dispatch:h,subscribe:l,getState:f,replaceReducer:p},r[a1]=d,r}function g5(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:Ws.INIT});if(typeof r=="undefined")throw new Error(Ce(12));if(typeof n(void 0,{type:Ws.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error(Ce(13))})}function zl(t){for(var e=Object.keys(t),n={},r=0;r<e.length;r++){var i=e[r];typeof t[i]=="function"&&(n[i]=t[i])}var o=Object.keys(n),s;try{g5(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(Ce(14));l[p]=m,f=f||m!==g}return f=f||o.length!==Object.keys(c).length,f?l:c}}function Xs(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.length===0?function(r){return r}:e.length===1?e[0]:e.reduce(function(r,i){return function(){return r(i.apply(void 0,arguments))}})}function m5(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(r){return function(){var i=r.apply(void 0,arguments),o=function(){throw new Error(Ce(15))},s={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},a=e.map(function(c){return c(s)});return o=Xs.apply(void 0,a)(i.dispatch),s1(s1({},i),{},{dispatch:o})}}}function y5(t,e){return t===e}function A5(t,e,n){if(e===null||n===null||e.length!==n.length)return!1;for(var r=e.length,i=0;i<r;i++)if(!t(e[i],n[i]))return!1;return!0}function b5(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:y5,n=null,r=null;return function(){return A5(e,n,arguments)||(r=t.apply(null,arguments)),n=arguments,r}}function x5(t){var e=Array.isArray(t[0])?t[0]:t;if(!e.every(function(r){return typeof r=="function"})){var n=e.map(function(r){return typeof r}).join(", ");throw new Error("Selector creators expect all input-selectors to be functions, "+("instead received the following types: ["+n+"]"))}return e}function v5(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return function(){for(var i=arguments.length,o=Array(i),s=0;s<i;s++)o[s]=arguments[s];var a=0,c=o.pop(),u=x5(o),f=t.apply(void 0,[function(){return a++,c.apply(null,arguments)}].concat(n)),l=t(function(){for(var h=[],p=u.length,d=0;d<p;d++)h.push(u[d].apply(null,arguments));return f.apply(null,h)});return l.resultFunc=c,l.dependencies=u,l.recomputations=function(){return a},l.resetRecomputations=function(){return a=0},l}}var w5=v5(b5);function u1(t){return function(e){var n=e.dispatch,r=e.getState;return function(i){return function(o){return typeof o=="function"?o(n,r,t):i(o)}}}}var Rl=u1();Rl.withExtraArgument=u1;var E5=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();globalThis&&globalThis.__generator;var qs=globalThis&&globalThis.__spreadArray||function(t,e){for(var n=0,r=e.length,i=t.length;n<r;n++,i++)t[i]=e[n];return t},S5=Object.defineProperty,l1=Object.getOwnPropertySymbols,C5=Object.prototype.hasOwnProperty,D5=Object.prototype.propertyIsEnumerable,f1=function(t,e,n){return e in t?S5(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Xi=function(t,e){for(var n in e||(e={}))C5.call(e,n)&&f1(t,n,e[n]);if(l1)for(var r=0,i=l1(e);r<i.length;r++){var n=i[r];D5.call(e,n)&&f1(t,n,e[n])}return t},M5=typeof window!="undefined"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Xs:Xs.apply(null,arguments)};function I5(t){if(typeof t!="object"||t===null)return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}var T5=function(t){E5(e,t);function e(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var i=t.apply(this,n)||this;return Object.setPrototypeOf(i,e.prototype),i}return Object.defineProperty(e,Symbol.species,{get:function(){return e},enumerable:!1,configurable:!0}),e.prototype.concat=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return t.prototype.concat.apply(this,n)},e.prototype.prepend=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return n.length===1&&Array.isArray(n[0])?new(e.bind.apply(e,qs([void 0],n[0].concat(this)))):new(e.bind.apply(e,qs([void 0],n.concat(this))))},e}(Array);function N5(t){return typeof t=="boolean"}function L5(){return function(e){return k5(e)}}function k5(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new T5;return n&&(N5(n)?r.push(Rl):r.push(Rl.withExtraArgument(n.extraArgument))),r}var O5=!0;function B5(t){var e=L5(),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(I5(i))p=zl(i);else throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');var d=s;typeof d=="function"&&(d=d(e));var g=m5.apply(void 0,d),m=Xs;c&&(m=M5(Xi({trace:!O5},typeof c=="object"&&c)));var y=[g];Array.isArray(h)?y=qs([g],h):typeof h=="function"&&(y=h(y));var x=m.apply(void 0,y);return c1(p,f,x)}function h1(t,e){function n(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];if(e){var o=e.apply(void 0,r);if(!o)throw new Error("prepareAction did not return an object");return Xi(Xi({type:t,payload:o.payload},"meta"in o&&{meta:o.meta}),"error"in o&&{error:o.error})}return{type:t,payload:r[0]}}return n.toString=function(){return""+t},n.type=t,n.match=function(r){return r.type===t},n}function d1(t){var e={},n=[],r,i={addCase:function(o,s){var a=typeof o=="string"?o:o.type;if(a in e)throw new Error("addCase cannot be called with two reducers for the same action type");return e[a]=s,i},addMatcher:function(o,s){return n.push({matcher:o,reducer:s}),i},addDefaultCase:function(o){return r=o,i}};return t(i),[e,n,r]}function P5(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?d1(e):[e,n,r],o=i[0],s=i[1],a=i[2],c=i1(t,function(){});return function(u,f){u===void 0&&(u=c);var l=qs([o[f.type]],s.filter(function(h){var p=h.matcher;return p(f)}).map(function(h){var p=h.reducer;return p}));return l.filter(function(h){return!!h}).length===0&&(l=[a]),l.reduce(function(h,p){if(p)if(un(h)){var d=h,g=p(d,f);return typeof g=="undefined"?h:g}else{if(ln(h))return i1(h,function(m){return p(m,f)});var g=p(h,f);if(typeof g=="undefined"){if(h===null)return h;throw Error("A case reducer on a non-draftable value must not return undefined")}return g}return h},u)}}function F5(t,e){return t+"/"+e}function p1(t){var e=t.name,n=t.initialState;if(!e)throw new Error("`name` is a required option for createSlice");var r=t.reducers||{},i=typeof t.extraReducers=="function"?d1(t.extraReducers):[t.extraReducers],o=i[0],s=o===void 0?{}:o,a=i[1],c=a===void 0?[]:a,u=i[2],f=u===void 0?void 0:u,l=Object.keys(r),h={},p={},d={};l.forEach(function(y){var x=r[y],v=F5(e,y),S,b;"reducer"in x?(S=x.reducer,b=x.prepare):S=x,h[y]=S,p[v]=S,d[y]=b?h1(v,b):h1(v)});var g=Xi(Xi({},s),p),m=P5(n,g,c,f);return{name:e,reducer:m,actions:d,caseReducers:h}}a5();function g1(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=$y(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 z5(t,e){const n=Qn(".3~r"),r=j5(U5(t.samples,e,[0,.25,.5,.75,1]));r.length==1&&r.push(r[0]);const i=s=>`[${n(r[s])}, ${n(r[s+1])}${s<r.length-2?")":"]"}`,o=ho(r.length-1).reverse();g1(t,R5(e,r.slice(1,r.length-1)),o,o.map(i))}function R5(t,e){return r=>{const i=t(r);if(!(!ae(i)||isNaN(i))){for(let o=0;o<e.length;o++)if(i<e[o])return o;return e.length}}}function U5(t,e,n){const r=nA(t.map(e).filter(i=>ae(i)&&!isNaN(i)));return n.map(i=>yf(r,i))}function j5(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 G5(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var H5=[].forEach;function Q5(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],s=[];H5.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=G5),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 V5(t,e){const n=i=>i.copy().range(ho(0,i.domain().length)).unknown(-1);let r;switch(e.type){case"quantitative":r=i=>ae(i)&&!isNaN(i)?-i:-1/0;break;case"ordinal":r=n(e.scale);break;case"nominal":r=i=>i||"";break}return i=>r(t(i))}function _5(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 Y5(t,e,n=!1){return Q5(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const W5={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 X5(t,e,n,r){const i=W5[n];return t.filter(o=>i(e(o),r))}function q5(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 Z5(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}const m1="setSamples",y1="sortBy",A1="retainFirstOfEach",b1="filterByNominal",x1="filterByQuantitative",v1="removeUndefined",w1="groupByNominal",E1="groupToQuartiles",Mr="sampleView";function K5(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",label:"Root",samples:[]}}}function J5(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return p1({name:Mr,initialState:K5(),reducers:{[m1]:(n,r)=>{const i=r.payload.samples;if(n.sampleData)throw new Error("Samples have already been set!");if(i.some(s=>s.id===void 0||s.id===null))throw new Error('The sample metadata contains missing sample ids or the "sample" column is missing!');if(new Set(i.map(s=>s.id)).size!=i.length)throw new Error("The sample metadata contains duplicate sample ids!");const o=i.map((s,a)=>F(T({},s),{indexNumber:a}));n.sampleData={ids:o.map(s=>s.id),entities:Object.fromEntries(o.map(s=>[s.id,s]))},n.rootGroup={name:"ROOT",label:"Root",samples:n.sampleData.ids}},[y1]:(n,r)=>{qi(n,i=>Y5(i,V5(e(r.payload,n),t(r.payload.attribute)),!1))},[A1]:(n,r)=>{qi(n,i=>_5(i,e(r.payload,n)))},[x1]:(n,r)=>{qi(n,i=>X5(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[b1]:(n,r)=>{qi(n,i=>q5(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[v1]:(n,r)=>{qi(n,i=>Z5(i,e(r.payload,n)))},[w1]:(n,r)=>{S1(n,i=>g1(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[E1]:(n,r)=>{S1(n,i=>z5(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})}}})}function qi(t,e){for(const n of C1(t))n.samples=e(n.samples)}function S1(t,e){for(const n of C1(t))e(n)}function C1(t){return D1(t).map(e=>pe(e))}function Ul(t){return t.provenance.present[Mr]}function D1(t){const e=[],n=[],r=i=>{if(e.push(i),I1(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function M1(t){return"samples"in t}function I1(t){return"groups"in t}function*T1(t){if(yield[t],I1(t))for(const e of t.groups)for(const n of T1(e))yield[t,...n]}const $5=Qn(".4"),eI={lt:"<",lte:"\u2264",eq:"=",gte:"\u2265",gt:">"};function tI(t,e){if(!t.type.startsWith(Mr))return;const n=t.payload,r=n.attribute&&e(n.attribute),i=r==null?void 0:r.name,o=(r==null?void 0:r.title)||M`<em>${i}</em>`,s={attributeName:i};switch(t.type.substring(Mr.length+1)){case m1:return F(T({},s),{title:"The initial state",icon:t8});case y1:return F(T({},s),{title:"Sort by",provenanceTitle:M`Sort by ${o}`,icon:h8});case A1:return F(T({},s),{title:M`Retain first sample of each unique <em>${i}</em>`,provenanceTitle:M`Retain first sample of each unique ${o}`,icon:a8});case b1:{const c=n.values,u=c.length>1?M`{${c.map((l,h)=>M`${h>0?", ":""}<strong>${l}</strong>`)}}`:M`<strong>${c[0]}</strong>`,f=l=>M`${n.remove?"Remove":"Retain"} samples having ${c[0]===void 0||c[0]===null?M`undefined ${l}`:M`${l} ${c.length>1?"in":M`<span class="operator">=</span>`} ${u}`}`;return F(T({},s),{title:f(M`<em>${i}</em>`),provenanceTitle:f(o),icon:n.remove?rl:Hi})}case x1:{const c=u=>M`Retain samples having ${u} <span class="operator">${eI[n.operator]}</span> <strong>${$5(n.operand)}</strong>`;return F(T({},s),{title:c(M`<em>${i}</em>`),provenanceTitle:c(o),icon:Hi})}case v1:return F(T({},s),{title:"Remove samples having missing attribute",provenanceTitle:M`Remove samples having missing ${o}`,icon:rl});case w1:return F(T({},s),{title:"Group by",provenanceTitle:M`Group by ${o}`,icon:Kg});case E1:return F(T({},s),{title:"Group to quartiles",provenanceTitle:M`Group to quartiles by ${o}`,icon:Kg});default:return F(T({},s),{title:JSON.stringify(t),icon:qg})}}class nI{constructor(){this.attributeInfoSourcesByType={}}addAttributeInfoSource(e,n){this.attributeInfoSourcesByType[e]=n}getAttributeInfo(e){const n=this.attributeInfoSourcesByType[e.type];if(!n)throw new Error("Cannot find attribute info source for: "+JSON.stringify(e));const r=n(e);if(r)return r;throw new Error("Unknown attribute: "+JSON.stringify(e))}}function Zs(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function N1(t,{viewHeight:e=0,sampleHeight:n=0,groupSpacing:r=5,summaryHeight:i=0}){if(!e&&!n)throw new Error("viewHeight or sampleHeight must be provided!");const o=h=>pe(h),s=t.map(h=>({path:h,sampleGroup:o(h),samples:o(h).samples})).filter(h=>h.samples.length),a=n?h=>({px:h.length*n+i,grow:0}):h=>({px:i,grow:h.length}),c=[];Es(s.map(h=>a(h.samples)),e,{spacing:r}).forEach((h,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;Es(g.map(m=>d),Math.max(0,c[h].locSize.size-i),{offset:c[h].locSize.location+i}).forEach((m,y)=>{const{size:x,location:v}=m,S=x*.1*gg(15,22,x);m.location=v+S,m.size=x-2*S,u.push({key:g[y],locSize:m})})}function*f(){const h=[];for(const p of c){const d=p.key,g=pe(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 rI(t,e){return e.find(n=>Wp(n.locSize,t))}const L1="VALUE_AT_LOCUS",k1=10;class jl extends At{constructor(e,n,r,i,o){super(e,n,r,i);var u;this.provenance=o,this.spec=e,this.stickySummaries=(u=e.stickySummaries)!=null?u:!0,this.compositeAttributeInfoSource=new nI,this.child=n.createView(e.spec,this,"sample-facets"),this.summaryViews=new yr({vconcat:[]},n,this,"sampleSummaries"),this.child.visit(f=>{f instanceof Pe&&this.summaryViews.children.push(...f.sampleAggregateViews)}),this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new yr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},n,this,"sample-sidebar"),this.groupPanel=new t5(this),this.peripheryView.addChild(this.groupPanel),this.attributePanel=new _m(this),this.peripheryView.addChild(this.attributePanel),this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(Zs(f=>Ul(f).rootGroup,f=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(Zs(f=>Ul(f).sampleData,f=>{const l=f&&Object.values(f.entities);!l||(this.attributePanel._setSamples(l),this.facetTextureData=new Float32Array(Math.ceil(l.length*2/4)*4),this.groupPanel.updateGroups())})),this.compositeAttributeInfoSource.addAttributeInfoSource(L1,f=>{const l=f.specifier,h=this.findDescendantByPath(l.path);let p;if(ae(l.locus))p=l.locus;else{const m=this.getScaleResolution("x").getGenome();if(m)p=m.toContinuous(l.locus.chrom,l.locus.pos);else throw new Error("Encountered a complex locus but no genome is available!")}const d=m=>{var y;return(y=h.mark.findDatumAt(m,p))==null?void 0:y[l.field]};return{name:l.field,attribute:f,title:M`<em class="attribute">${l.field}</em> <span class="viewTitle">(${h.spec.title||h.name})</span> at <span class="locus">${O1(l.locus)}</span>`,accessor:d,type:"quantitative",scale:void 0}}),this._addBroadcastHandler("dataLoaded",()=>this.extractSamplesFromData()),this._addBroadcastHandler("layout",()=>{this._locations=void 0}),this._scrollOffset=0,this._scrollableHeight=0,this._peekState=0,this._lastMouseY=-1,this.addInteractionEventListener("mousemove",(f,l)=>{this._lastMouseY=l.point.y-f.y}),this.addInteractionEventListener("wheel",(f,l)=>{const h=l.uiEvent;this._peekState&&!h.ctrlKey&&(this._scrollOffset=Tu(this._scrollOffset+h.deltaY,0,this._scrollableHeight-this._coords.height),this.groupPanel.updateRange(),this.context.animator.requestRender(),l.uiEvent={type:h.type,deltaX:h.deltaX,preventDefault:h.preventDefault.bind(h)})},!0),n.addKeyboardListener("keydown",f=>{f.code=="KeyE"&&!f.repeat&&this._togglePeek()}),n.addKeyboardListener("keyup",f=>{f.code=="KeyE"&&this._togglePeek(!1)});const s=f=>this.compositeAttributeInfoSource.getAttributeInfo(f),a=J5(s);this.provenance.addReducer(a.name,a.reducer),this.provenance.addActionInfoSource(f=>tI(f,s)),this.actions=a.actions;const c=w5(f=>{var l;return(l=f.sampleData)==null?void 0:l.entities},f=>f&&Object.values(f));this.getSamples=()=>c(this.sampleHierarchy),this.spec.samples.data&&this.loadSamples()}getEffectivePadding(){return this._cache("size/effectivePadding",()=>{const e=this.peripheryView.isVisible()?this.peripheryView.getSize().width.px+k1:0,n=this.child.getEffectivePadding();return this.getPadding().add(new Je(0,n.right,0,n.left+e))})}*[Symbol.iterator](){yield this.child,yield this.peripheryView}replaceChild(e,n){const r=n;if(e===this.child)this.child=r;else throw new Error("Not my child!")}loadSamples(){if(!this.spec.samples.data)throw new Error("SampleView has no explicit sample metadata specified! Cannot load anything.");const{dataSource:e,collector:n}=dM(Tg(this.spec.samples.data,this.getBaseUrl()),new iI);n.observers.push(i=>{const o=i.getData();this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:o}))});const r="samples "+this.getPathString();this.context.dataFlow.addDataSource(e,r)}extractSamplesFromData(){if(this.getSamples())return;const e=this.getScaleResolution("sample");if(e){const n=e.getDataDomain().map((r,i)=>({id:r,displayName:r,indexNumber:i,attributes:[]}));this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:n}))}else throw new Error("No explicit sample data nor sample channels found!")}get sampleHierarchy(){return this.provenance.getPresentState()[Mr]}getLocations(){var e,n,r;if(!this._locations){if(!this._coords)return;const i=this.sampleHierarchy,o=D1(i),s=[null,...i.groupMetadata],a=(r=((e=this.summaryViews)==null?void 0:e.isVisible())&&((n=this.summaryViews)==null?void 0:n.getSize().height.px))!=null?r:0,c=N1(o,{viewHeight:this._coords.height,groupSpacing:5,summaryHeight:a}),u=N1(o,{sampleHeight:35,groupSpacing:15,summaryHeight:a}),f=()=>-this._scrollOffset,l=()=>this._peekState;this._scrollableLocations=u,this._scrollableHeight=u.summaries.map(g=>g.locSize.location+g.locSize.size).reduce((g,m)=>Math.max(g,m),0);const h=(g,m)=>{const y=[];for(let x=0;x<g.length;x++){const v=g[x].key;y.push({key:v,locSize:CC(g[x].locSize,DC(m[x].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?oe(y)?g.key.attributeLabel=y:(Xe(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=rI(e,this.getLocations().samples);if(n)return this.sampleHierarchy.sampleData.entities[n.key]}getSummaryAt(e){const n=this.getLocations().summaries,r=n.findIndex(i=>Wp(i.locSize,e));return r>=0?{index:r,location:n[r]}:void 0}_clipBySummary(e){if(this.stickySummaries&&this.summaryViews.children.length){const n=this.summaryViews.getSize().height.px;return e.modify({y:()=>e.y+n,height:()=>e.height-n})}}renderChild(e,n,r={}){const i=1/n.height,o=()=>i,s=this._clipBySummary(n);for(const a of this.getLocations().samples)this.child.render(e,n,F(T({},r),{sampleFacetRenderingOptions:{locSize:MC(a.locSize,o)},facetId:[a.key],clipRect:s}))}renderSummaries(e,n,r={}){r=F(T({},r),{clipRect:n});const i=this.summaryViews.getSize().height.px;for(const[o,s]of this.getLocations().summaries.entries()){const a=()=>{const c=s.locSize.location;let u=n.y+c;return this.stickySummaries?u+Tu(-c,0,s.locSize.size-i):u};this.summaryViews.render(e,n.modify({y:a,height:i}),F(T({},r),{facetId:[o]}))}}render(e,n,r={}){if(!this.isVisible())return;n=n.shrink(this.getPadding()),e.pushView(this,n),this._coords=n;const i=Es([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],n.width,{spacing:k1}),o=s=>n.modify({x:s.location+n.x,width:s.size});this.peripheryView.render(e,o(i[0]),r),this.renderChild(e,o(i[1]),r),this.renderSummaries(e,o(i[1]),r),e.popView(this)}onBeforeRender(){this._updateFacetTexture()}_updateFacetTexture(){var i;const e=this.facetTextureData;e.fill(0);const n=(i=this.sampleHierarchy.sampleData)==null?void 0:i.entities;if(n){const o=this.getLocations().samples,s=this._coords.height;for(const a of o){const c=n[a.key].indexNumber;e[c*2+0]=a.locSize.location/s,e[c*2+1]=a.locSize.size/s}}const r=this.context.glHelper.gl;this.facetTexture=Bi(r,{internalFormat:r.RG32F,format:r.RG,height:1},e,this.facetTexture)}_togglePeek(e){var r;if(this._peekState>0&&this._peekState<1||e!==void 0&&e==!!this._peekState)return;const n={requestAnimationFrame:i=>this.context.animator.requestTransition(i),onUpdate:i=>{this._peekState=Math.pow(i,2),this.groupPanel.updateRange(),this.context.animator.requestRender()},from:this._peekState};if(this._peekState==0){const i=this._lastMouseY,o=(r=this.getSampleAt(i))==null?void 0:r.id;let s;if(o)s=(c=>c.location+c.size/2)(this._scrollableLocations.samples.find(c=>c.key==o).locSize);else{const a=this.getSummaryAt(i);a&&(s=this._scrollableLocations.summaries[a.index].locSize.location-(a.location.locSize.location-i))}if(s?this._scrollOffset=s-i:this._scrollOffset=(this._scrollableHeight-this._coords.height)/2,this._scrollableHeight>this._coords.height)Ms(F(T({},n),{to:1,duration:500,easingFunction:lD}));else{const a=c=>(1-Math.pow(c*2-1,2))*.5;Ms(F(T({},n),{from:0,to:1,duration:300,easingFunction:a}))}}else Ms(F(T({},n),{to:0,duration:400,easingFunction:cD}))}_handleContextMenu(e,n){const r=n.uiEvent,i=e.normalizePoint(n.point.x,n.point.y).x,o=this.getScaleResolution("x").invertToComplex(i),s=xM(this.child).filter(u=>!["sample","x","x2"].includes(u.channel)).filter(u=>["rect","rule"].includes(u.view.getMarkType()));let a=[{label:`Locus: ${O1(o)}`,type:"header"},{type:"divider"}],c="";for(const[u,f]of s.entries()){let l=[...f.view.getAncestors()];l=l.slice(0,l.findIndex(g=>g===this));const h={path:l.map(g=>g.name).reverse(),field:f.field,locus:o},p=this.compositeAttributeInfoSource.getAttributeInfo({type:L1,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:dl(null,p,void 0,this)})}Qm({items:a},r)}getSampleFacetTexture(){return this.facetTexture}getDefaultResolution(e,n){switch(e){case"x":case"sample":return"shared";default:return"independent"}}}function O1(t){return!ae(t)&&"chrom"in t?eD(t):""+t}class iI extends se{constructor(){super();this.reset()}reset(){this._index=0}handle(e){this._propagate({id:e.sample,displayName:e.displayName||e.sample,indexNumber:this._index++,attributes:oI(e)})}}function oI(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function sI(t){return"samples"in t&&ze(t.samples)&&"spec"in t&&ze(t.spec)}const aI=(t,e)=>e.some(n=>t instanceof n);let B1,P1;function cI(){return B1||(B1=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function uI(){return P1||(P1=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const F1=new WeakMap,Gl=new WeakMap,z1=new WeakMap,Hl=new WeakMap,Ql=new WeakMap;function lI(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",s)},o=()=>{n(hn(t.result)),i()},s=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",s)});return e.then(n=>{n instanceof IDBCursor&&F1.set(n,t)}).catch(()=>{}),Ql.set(e,t),e}function fI(t){if(Gl.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",o),t.removeEventListener("error",s),t.removeEventListener("abort",s)},o=()=>{n(),i()},s=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",o),t.addEventListener("error",s),t.addEventListener("abort",s)});Gl.set(t,e)}let Vl={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return Gl.get(t);if(e==="objectStoreNames")return t.objectStoreNames||z1.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return hn(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function hI(t){Vl=t(Vl)}function dI(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(_l(this),e,...n);return z1.set(r,e.sort?e.sort():[e]),hn(r)}:uI().includes(t)?function(...e){return t.apply(_l(this),e),hn(F1.get(this))}:function(...e){return hn(t.apply(_l(this),e))}}function pI(t){return typeof t=="function"?dI(t):(t instanceof IDBTransaction&&fI(t),aI(t,cI())?new Proxy(t,Vl):t)}function hn(t){if(t instanceof IDBRequest)return lI(t);if(Hl.has(t))return Hl.get(t);const e=pI(t);return e!==t&&(Hl.set(t,e),Ql.set(e,t)),e}const _l=t=>Ql.get(t);function gI(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const s=indexedDB.open(t,e),a=hn(s);return r&&s.addEventListener("upgradeneeded",c=>{r(hn(s.result),c.oldVersion,c.newVersion,hn(s.transaction))}),n&&s.addEventListener("blocked",()=>n()),a.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),a}const mI=["get","getKey","getAll","getAllKeys","count"],yI=["put","add","delete","clear"],Yl=new Map;function R1(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(Yl.get(e))return Yl.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=yI.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||mI.includes(n)))return;const o=async function(s,...a){const c=this.transaction(s,i?"readwrite":"readonly");let u=c.store;return r&&(u=u.index(a.shift())),(await Promise.all([u[n](...a),i&&c.done]))[0]};return Yl.set(e,o),o}hI(t=>F(T({},t),{get:(e,n,r)=>R1(e,n)||t.get(e,n,r),has:(e,n)=>!!R1(e,n)||t.has(e,n)}));class U1{isReadonly(){return!0}async put(e,n){this._checkReadonly()}async delete(e){this._checkReadonly()}async getNames(){return[]}async get(e){}_checkReadonly(){if(this.isReadonly())throw new Error("This bookmark")}}const Zi="bookmarks";class AI extends U1{constructor(e){super();this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=gI(e,1,{upgrade(n,r,i,o){n.createObjectStore(Zi,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}isReadonly(){return!1}async put(e,n){const i=(await this._getDB()).transaction(Zi,"readwrite");try{n?(await i.store.delete(n),await i.store.put(e)):await i.store.put(e),await i.done}catch(o){throw i.abort(),o}}async delete(e){(await this._getDB()).delete(Zi,e)}async getNames(){return(await this._getDB()).getAllKeys(Zi)}async get(e){return(await this._getDB()).get(Zi,e)}}/**
2038
2038
  * @license
2039
2039
  * Copyright 2020 Google LLC
@@ -2062,5 +2062,5 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
2062
2062
  * @license
2063
2063
  * Copyright 2017 Google LLC
2064
2064
  * SPDX-License-Identifier: BSD-3-Clause
2065
- */const Z1=t=>!bI(t)&&typeof t.then=="function";class FI extends H1{constructor(){super(...arguments),this._$Cft=1073741823,this._$Cwt=[],this._$CG=new BI(this),this._$CK=new PI}render(...e){var n;return(n=e.find(r=>!Z1(r)))!==null&&n!==void 0?n:xe}update(e,n){const r=this._$Cwt;let i=r.length;this._$Cwt=n;const o=this._$CG,s=this._$CK;this.isConnected||this.disconnected();for(let a=0;a<n.length&&!(a>this._$Cft);a++){const c=n[a];if(!Z1(c))return this._$Cft=a,c;a<i&&c===r[a]||(this._$Cft=1073741823,i=0,Promise.resolve(c).then(async u=>{for(;s.get();)await s.get();const f=o.deref();if(f!==void 0){const l=f._$Cwt.indexOf(c);l>-1&&l<f._$Cft&&(f._$Cft=l,f.setValue(u))}}))}return xe}disconnected(){this._$CG.disconnect(),this._$CK.pause()}reconnected(){this._$CG.reconnect(this),this._$CK.resume()}}const zI=br(FI);var RI={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function K1(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function $i(t){return(t+"").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Kl(t,e){var n,r,i,o,s,a=/((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm,c=[],u="",f=e||{},l=0;function h(d){var g=RI[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()+'"':"")+">"+K1($i(s).replace(/^\n+|\n+$/g,""))+"</code></pre>":(s=i[6])?(s.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=Kl(K1(i[5].replace(/^\s*[>*+.-]/gm,""))),s==">"?s="blockquote":(s=s.match(/\./)?"ol":"ul",o=o.replace(/^(.*)(\n|$)/gm,"<li>$1</li>")),n="<"+s+">"+o+"</"+s+">"):i[8]?n='<img src="'+$i(i[8])+'" alt="'+$i(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+$i(i[11]||f[r.toLowerCase()])+'">'),n=p()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(s="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+Kl(i[12]||i[15],f)+"</"+s+">":i[16]?n="<code>"+$i(i[16])+"</code>":(i[17]||i[1])&&(n=h(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+p()).replace(/^\n+|\n+$/g,"")}function UI(t){const e=Kl(t),n=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${e}</div></body></html>`,"text/html");n.normalize(),J1(n.body);for(const i of n.querySelectorAll("a[href]"))i.setAttribute("target","blank"),i.setAttribute("rel","noopener noreferrer");const r=n.body.removeChild(n.querySelector("body > div"));return r.className="snarkdown",r}function J1(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--;)J1(t.childNodes[e])}}var Jl={exports:{}};(function(t){var e=function(){var n=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",o={};function s(c,u){if(!o[c]){o[c]={};for(var f=0;f<c.length;f++)o[c][c.charAt(f)]=f}return o[c][u]}var a={compressToBase64:function(c){if(c==null)return"";var u=a._compress(c,6,function(f){return r.charAt(f)});switch(u.length%4){default:case 0:return u;case 1:return u+"===";case 2:return u+"==";case 3:return u+"="}},decompressFromBase64:function(c){return c==null?"":c==""?null:a._decompress(c.length,32,function(u){return s(r,c.charAt(u))})},compressToUTF16:function(c){return c==null?"":a._compress(c,15,function(u){return n(u+32)})+" "},decompressFromUTF16:function(c){return c==null?"":c==""?null:a._decompress(c.length,16384,function(u){return c.charCodeAt(u)-32})},compressToUint8Array:function(c){for(var u=a.compress(c),f=new Uint8Array(u.length*2),l=0,h=u.length;l<h;l++){var 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="",x=2,v=3,S=2,b=[],A=0,w=0,E;for(E=0;E<c.length;E+=1)if(g=c.charAt(E),Object.prototype.hasOwnProperty.call(p,g)||(p[g]=v++,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<S;l++)A=A<<1,w==u-1?(w=0,b.push(f(A)),A=0):w++;for(h=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}else{for(h=1,l=0;l<S;l++)A=A<<1|h,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=0;for(h=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}x--,x==0&&(x=Math.pow(2,S),S++),delete d[y]}else for(h=p[y],l=0;l<S;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1;x--,x==0&&(x=Math.pow(2,S),S++),p[m]=v++,y=String(g)}if(y!==""){if(Object.prototype.hasOwnProperty.call(d,y)){if(y.charCodeAt(0)<256){for(l=0;l<S;l++)A=A<<1,w==u-1?(w=0,b.push(f(A)),A=0):w++;for(h=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}else{for(h=1,l=0;l<S;l++)A=A<<1|h,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=0;for(h=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}x--,x==0&&(x=Math.pow(2,S),S++),delete d[y]}else for(h=p[y],l=0;l<S;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1;x--,x==0&&(x=Math.pow(2,S),S++)}for(h=2,l=0;l<S;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1;for(;;)if(A=A<<1,w==u-1){b.push(f(A));break}else w++;return b.join("")},decompress:function(c){return c==null?"":c==""?null:a._decompress(c.length,32768,function(u){return c.charCodeAt(u)})},_decompress:function(c,u,f){var l=[],h=4,p=4,d=3,g="",m=[],y,x,v,S,b,A,w,E={val:f(0),position:u,index:1};for(y=0;y<3;y+=1)l[y]=y;for(v=0,b=Math.pow(2,2),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;switch(v){case 0:for(v=0,b=Math.pow(2,8),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;w=n(v);break;case 1:for(v=0,b=Math.pow(2,16),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;w=n(v);break;case 2:return""}for(l[3]=w,x=w,m.push(w);;){if(E.index>c)return"";for(v=0,b=Math.pow(2,d),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;switch(w=v){case 0:for(v=0,b=Math.pow(2,8),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;l[p++]=n(v),w=p-1,h--;break;case 1:for(v=0,b=Math.pow(2,16),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;l[p++]=n(v),w=p-1,h--;break;case 2:return m.join("")}if(h==0&&(h=Math.pow(2,d),d++),l[w])g=l[w];else if(w===p)g=x+x.charAt(0);else return null;m.push(g),l[p++]=x+g.charAt(0),h--,x=g,h==0&&(h=Math.pow(2,d),d++)}}};return a}();t!=null&&(t.exports=e)})(Jl);function jI(){const t=typeof process!="undefined"?require("util").TextEncoder:TextEncoder;return new t}let Js;function GI(){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 HI(t){Js!=null||(Js=GI());let e=0^-1;const n=jI().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^Js[(e^n[r])&255];return(e^-1)>>>0}function $1(t){return("00000000"+HI(t).toString(16)).slice(-8)}function ey(t){const e=Jl.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+$1(e)}function QI(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($1(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(Jl.exports.decompressFromEncodedURIComponent(e))}let Ut;async function ty(t,e){var n;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch(Ji.actions.setViewSettings(t.viewSettings));const r=[];for(const[i,o]of Object.entries((n=t.scaleDomains)!=null?n:{})){const s=e.genomeSpy.getNamedScaleResolutions().get(i);s?r.push(s.zoomTo(o)):console.warn(`Cannot restore scale domain. Unknown name: ${i}`)}await Promise.all(r)}catch(r){console.error(r),st(M`<p>Cannot restore the state:</p><p>${r}</p>`),e.provenance.activateState(0)}}async function $s(t,e,n={}){await ty(t,e),(Ut||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await VI(t,e,n)}async function VI(t,e,n={}){Ut!=null||(Ut=Qi("tour")),await _I(t,e,n)}async function _I(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?UI(t.notes):M`<span class="no-notes">No notes provided</span>`,u=()=>{Ut==null||Ut.close(),Ut=void 0},f=async m=>{const y=await r.get(i[m]);$s(y,e,n)},l=async()=>{if(await $l(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(m){console.warn(m),st(`Cannot import bookmark: ${m}`)}},h=M`<button @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?M`<button @click="${l}">${te(Xg).node[0]} Import bookmark</button>`:U} ${r?M`<button @click="${()=>f(o-1)}" ?disabled="${o<=0}">${te(d8).node[0]} Previous</button> <button @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${te(p8).node[0]}</button>`:U}`,d=M`<button title="Collapse" class="collapse" @click="${m=>m.target.closest(".gs-modal").classList.toggle("collapsed")}">${te(n8).node[0]}</button><div class="modal-title">${a}</div><div class="modal-body markdown" style="max-width:600px">${c}</div><div class="modal-buttons">${h}</div>`;Xe(d,Ut.content)}function ny(t){const e=JSON.stringify(t,void 0,2),n=window.location,r=n.origin+n.pathname+n.search+ey(t);st(M`<div style="width:600px"><div class="gs-form-group"><label for="bookmark-url">URL</label><div class="copy-url"><input id="bookmark-url" type="text" .value="${r}"> <button @click="${o=>navigator.clipboard.writeText(r).then(()=>o.target.dispatchEvent(K8())).catch(()=>st("Failed to copy!"))}">Copy</button></div><small>The bookmark URL contains all the bookmarked data, including the possible notes, which will be shown when the URL is opened.</small></div><div class="gs-form-group"><label for="bookmark-json">JSON</label> <textarea id="bookmark-json" style="height:250px">
2066
- ${e}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div>`,"Share a bookmark")}function $l(t,e,n){const r={add:"Add bookmark",edit:"Edit bookmark",share:"Share the current view state as a bookmark"}[n],i=(c,u)=>{var f,l;return M`<div class="modal-title">${r}</div><div class="modal-body" style="width:500px">${n=="edit"?M`<div class="gs-alert warning">${te(o8).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:U} ${n=="share"?M`<div class="gs-alert info">${te(Zg).node[0]} <span>You can add an optional title and notes, which will be shown to the recipient when the bookmark link is opened.</span></div>`:U}<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=ry(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=ry(h.target.value)}}"></textarea> <small>Notes will be shown when the bookmark is loaded. You can use <a href="https://www.markdownguide.org/basic-syntax/">markdown</a> for formatting.</small></div></div><div class="modal-buttons"><button class="btn-cancel" @click="${c}">Cancel</button> <button class="btn-primary" @click="${u}">${n=="share"?M`${te(nl).node[0]} Create a link`:"Save"}</button></div>`},o=e.name,s=()=>!!e.name,a=Qi();return new Promise(c=>{const u=()=>{a.close(),c(!1)},f=async()=>{if(!s()){st("Name is missing!","Error");return}let h=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(h=await st(M`A bookmark with the name <em>${e.name}</em> already exists. It will be overwritten.`,"Bookmark already exists",!0)),h&&(a.close(),c(!0))},l=()=>{a.close(),c(!0)};Xe(i(u,n=="share"?l:f),a.content),a.content.querySelector("#bookmark-title").focus()})}function ry(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class YI extends kt{constructor(){super();this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(W1("app",e=>{this.app=e}))}createRenderRoot(){return this}_createBookmarkWithCurrentState(){const e={name:void 0,timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}},n=this.app.storeHelper.state.viewSettings;Object.keys(n.visibilities).length&&(e.viewSettings=n);for(const[r,i]of this.app.genomeSpy.getNamedScaleResolutions().entries())i.isZoomable()&&(e.scaleDomains[r]=i.getComplexDomain());return e}async _shareCurrentState(){const e=this._createBookmarkWithCurrentState();await $l(void 0,e,"share")&&ny(e)}async _addBookmark(e,n){var s,a;const r=n?await e.get(n):void 0,i=!!r,o=this._createBookmarkWithCurrentState();if((s=o.name)!=null||(o.name=r==null?void 0:r.name),(a=o.notes)!=null||(o.notes=r==null?void 0:r.notes),await $l(e,o,i?"edit":"add"))try{await e.put(o,r==null?void 0:r.name),this.requestUpdate()}catch(c){st(`${c}`,"Cannot save the bookmark!")}}async _loadBookmark(e,n){const r=await e.get(n);r&&$s(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li");Hm({items:[{label:"Edit and replace...",icon:c8,callback:()=>this._addBookmark(e,n)},{label:"Delete",icon:g8,callback:()=>st(M`The bookmark <em>${n}</em> will be deleted.`,"Are you sure?",!0).then(async a=>{a&&(await e.delete(n),this.requestUpdate())})},{label:"Share...",icon:nl,callback:async()=>ny(await e.get(n))}]},i,"right-start")}async _makeBookmarkMenuItems(e,n){const i=(await e.getNames()).map(o=>({label:o,callback:()=>this._loadBookmark(e,o),ellipsisCallback:e.isReadonly()?void 0:s=>this._createContextMenu(e,o,s)}));return i.length?[{type:"divider"},{label:n,type:"header"},...i].map(o=>jm(o)):U}_getBookmarks(){const e=(n,r)=>n?zI(this._makeBookmarkMenuItems(n,r),M`Loading...`):U;return[e(this.app.globalBookmarkDatabase,"Global bookmarks"),e(this.app.localBookmarkDatabase,"Local bookmarks")]}render(){const e=this.app.localBookmarkDatabase,n=e?M`<li><a @click="${()=>this._addBookmark(e)}">Add bookmark...</a></li>`:U,r=e||this.app.globalBookmarkDatabase?M`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${i=>{ql(i)&&this.requestUpdate()}}">${te(Xg).node[0]}</button><ul class="gs-dropdown-menu">${n} ${this._getBookmarks()}</ul></div>`:U;return M`<div class="btn-group">${r} <button class="tool-btn" title="Share" @click="${()=>this._shareCurrentState()}">${te(nl).node[0]}</button></div>`}}customElements.define("genome-spy-bookmark-button",YI);class WI extends kt{constructor(){super();this.app=void 0,this.appInitialized=!1}static get properties(){return{app:{type:Object},appInitialized:{type:Boolean}}}createRenderRoot(){return this}_getToolButtons(){const e=this.app.getSampleView(),n=this.app.provenance,r=[];n.isEnabled()&&r.push(M`<genome-spy-provenance-buttons .provenance="${n}"></genome-spy-provenance-buttons>`),r.push(M`<genome-spy-view-visibility></genome-spy-view-visibility>`),e&&r.push(M`<button class="tool-btn" title="Peek (E)" @click="${()=>e._togglePeek()}">${te(e8).node[0]}</button>`),r.push(M`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const i=this.app.config.description?qe(this.app.config.description):[];return i.length>1&&r.push(M`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>st(M`${i.slice(1).map(o=>M`<p>${o}</p>`)}`,i[0])}">${te(Zg).node[0]}</button>`),i.length>0&&r.push(M`<span class="vis-title">${i[0]}</span>`),r.push(M`<span class="spacer"></span> <button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${te(s8).node[0]}</button> <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${te(u8).node[0]}</button>`),r}render(){const e=this.app.genomeSpy;return M`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${Y1}"></a><div class="title"><span>GenomeSpy</span></div>${this.appInitialized&&_1(e.viewRoot)?M`<genome-spy-search-field .genomeSpy="${e}"></genome-spy-search-field>`:U} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",WI);class XI{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=x6(zl(F(T({},this._reducers),{lastAction:i})),{ignoreInitialState:!0,filter:r}),this.storeHelper.dispatch({type:"@@redux/REPLACE"+Math.random().toString(36).substring(7).split("").join(".")})}get _storeState(){return this.storeHelper.store.getState()}get _provenanceState(){return this._storeState.provenance}isEnabled(){return!!this.getPresentState()}getPresentState(){return this._provenanceState.present}addActionInfoSource(e){this.actionInfoSources.push(e)}getActionInfo(e){for(const n of this.actionInfoSources){const r=n(e);if(r)return r}}dispatchBookmark(e){this.storeHelper.dispatch([...this.isUndoable()?[sn.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(sn.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(sn.ActionCreators.undo())}isAtInitialState(){return!this.isUndoable()}isEmpty(){const e=this._provenanceState;return!this.isEnabled()||e.past.length+e.future.length<=0}activateState(e){const n=this.getCurrentIndex();e<n?this.storeHelper.dispatch(sn.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(sn.ActionCreators.jumpToFuture(e-n-1))}getCurrentIndex(){var e;return(e=this._provenanceState.past)==null?void 0:e.length}getActionHistory(){const e=this._provenanceState;return e.present&&[...e.past,e.present].map(n=>n.lastAction)}getFullActionHistory(){const e=this._provenanceState;return[...e.past,e.present,...e.future].map(n=>n.lastAction)}getBookmarkableActionHistory(){var e;return(e=this.getActionHistory())==null?void 0:e.slice(1)}}function*qI(t,e=n=>+n){const n=t.length,r=new ji,i=new Array(n).fill(0);for(const[s,a]of t.entries())a.length&&r.push(s,e(a[0]));let o=0;for(;(o=r.pop())!==void 0;){const s=t[o];let a=i[o];if(yield s[a++],a<s.length){const u=e(s[a]);r.push(o,u),i[o]=a}}}const ZI="sampleCount";class KI extends se{constructor(e,n){super();this.view=n;const r=n.context.animator;for(const i of n.getAncestors())i instanceof jl&&(this.provenance=i.provenance,this.provenance.storeHelper.subscribe(o=>r.requestTransition(()=>{this.reset(),this._mergeAndPropagate(Ul(o)),this.complete()})));if(!this.provenance)throw new Error("No SampleView was found!");this.contextObject=void 0}initialize(){this.contextObject=Object.create(super.getGlobalObject());const e=this.view.parent.getEncoding().x;if(Mn(e))this.xAccessor=Z(e.field);else throw new Error("Crash!")}handle(e){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof Ui)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){this._mergeAndPropagate(this.provenance.getPresentState()[Mr]),super.complete()}_mergeAndPropagate(e){const n=[...T1(e.rootGroup)].filter(r=>M1(pe(r)));for(const[r,i]of n.entries()){const o=pe(i);if(M1(o)){this.contextObject[ZI]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const s=o.samples,a=this._getCollector(),c=qI(s.map(u=>{var f;return(f=a.facetBatches.get([u]))!=null?f:[]}),this.xAccessor);for(const u of c)this._propagate(u)}}this._updateScales()}setParent(e){super.setParent(e)}_updateScales(){const e=new Set;this.view.visit(n=>{if(n instanceof Pe&&n.mark.encoding.y){const r=n.getScaleResolution("y");r&&e.add(r)}});for(const n of e)n.reconfigure()}}var JI="BATCHING_REDUCER.BATCH";function $I(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:JI;return{type:e,meta:{batch:!0},payload:t}}function eT(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class tT{constructor(e){this._reducers=e!=null?e:{},this.store=B5({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(eT(zl(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch($I(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class nT extends U1{constructor(e){super();this.bookmarks=e,this.names=e.map(n=>n.name)}async getNames(){return this.names}async get(e){return this.bookmarks.find(n=>n.name==e)}}Ig.mergeFacets=KI;class iy{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new tT,this.storeHelper.addReducer("viewSettings",Ji.reducer),this.provenance=new XI(this.storeHelper),this._initializationListeners=[],this.toolbarRef=Q1(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new AI(n.specId):void 0,this.globalBookmarkDatabase=void 0,Xe(M`<div class="genome-spy-app"><genome-spy-toolbar ${V1(i.toolbarRef)} .app="${i}"></genome-spy-toolbar><div class="genome-spy-container"></div></div>`,i.appContainer),i.appContainer.querySelector(".genome-spy-app").addEventListener("query-dependency",a=>{a.detail.name=="app"&&(a.detail.setter(i),a.stopPropagation())});const o=a=>this.appContainer.getElementsByClassName(a)[0];this.genomeSpy=new Gg(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(sI,(a,c,u,f)=>new jl(a,c,u,f,this.provenance));const s=this.genomeSpy.viewVisibilityPredicate;this.genomeSpy.viewVisibilityPredicate=a=>{var c,u;return(u=(c=this.storeHelper.state.viewSettings)==null?void 0:c.visibilities[a.name])!=null?u:s(a)}}addInitializationListener(e){this._initializationListeners?this._initializationListeners.push(e):e()}toggleFullScreen(){document.fullscreenElement?document.exitFullscreen&&document.exitFullscreen():this.appContainer.requestFullscreen()}isFullPage(){return this.appContainer==document.body}async launch(){var s,a;const e=((s=this.config.bookmarks)==null?void 0:s.remote)?_r({baseURL:this.config.baseUrl}).load(this.config.bookmarks.remote.url).then(c=>Promise.resolve(JSON.parse(c))):Promise.resolve([]);if(!await this.genomeSpy.launch())return;this.storeHelper.subscribe(Zs(c=>{var u;return(u=c.viewSettings)==null?void 0:u.visibilities},(c,u)=>{var l,h;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(h=(l=this.getSampleView())==null?void 0:l.summaryViews)==null||h._invalidateCacheByPrefix("size","self");const f=this.genomeSpy.viewRoot.context;f.requestLayoutReflow(),f.animator.requestRender()},this.storeHelper.store.getState()));try{const c=await e;c.length&&(this.globalBookmarkDatabase=new nT(c))}catch(c){throw new Error(`Cannot load remote bookmarks: ${c}`)}await this._restoreStateFromUrlOrBookmark(),this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl(),!1);const r=Is(()=>this._updateStateToUrl(),500,!1);for(const[,c]of this.genomeSpy.getNamedScaleResolutions())c.isZoomable()&&c.addEventListener("domain",r);const i=this.toolbarRef.value;i.appInitialized=!0;const o=qe((a=this.genomeSpy.spec.description)!=null?a:[]);this.isFullPage()&&o.length>0&&(document.title="GenomeSpy - "+o);for(const c of this._initializationListeners)c();this._initializationListeners=void 0}async _restoreStateFromUrlOrBookmark(){var i,o;const e=this._restoreStateFromUrl(),n=(i=this.config.bookmarks)==null?void 0:i.remote,r=this.globalBookmarkDatabase;if(!e&&n&&r){const s=(o=n.initialBookmark)!=null?o:n.tour&&(await r.getNames())[0];if(s){const a=await r.get(s);if(!a)throw new Error(`No such bookmark: ${s}`);n.tour?await $s(a,this,{mode:"tour",database:r}):await ty(a,this)}}}_updateStateToUrl(){const e={actions:[],scaleDomains:{}},n=this.provenance.getBookmarkableActionHistory();(n==null?void 0:n.length)&&(e.actions=n);for(const[o,s]of this.genomeSpy.getNamedScaleResolutions().entries())s.isZoomed()||(e.scaleDomains[o]=s.getComplexDomain());const r=this.storeHelper.state.viewSettings;Object.keys(r.visibilities).length&&(e.viewSettings=r);let i=e.actions.length||Object.keys(e.scaleDomains).length||e.viewSettings?ey(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=QI(e);return $s(n,this,{mode:"shared"}),!0}catch(n){console.error(n),st(M`<p>Cannot restore the state:</p><p>${n}</p>`)}return!1}_configureContainer(){this.isFullPage()?(this.appContainer.style.margin="0",this.appContainer.style.padding="0",this.appContainer.style.overflow="hidden",rT(qM)):this.appContainer.style.position="relative"}async updateConfig(e){throw new Error("Broken")}getSampleView(){var n;if(!((n=this.genomeSpy)==null?void 0:n.viewRoot))return;let e;return this.genomeSpy.viewRoot.visit(r=>{if(r instanceof jl)return e=r,kn}),e}}function rT(t){let e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function iT(t,e,n={}){var o,s,a;let r;if(oe(t)){if(r=document.querySelector(t),!r)throw new Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)r=t;else throw new Error(`Invalid element: ${t}`);let i;try{const c=ze(e)?e:await oy(e);(o=c.baseUrl)!=null||(c.baseUrl=""),(s=c.width)!=null||(c.width="container"),(a=c.padding)!=null||(c.padding=10);const u=new iy(r,c,n);i=u.genomeSpy,oT(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 oT(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function oy(t){let e;try{e=JSON.parse(await _r().load(t))}catch(n){throw new Error(`Could not load or parse configuration: ${t}, reason: ${n.message}`)}if(!e.baseUrl){const n=t.match(/^[^?#]*\//);e.baseUrl=n&&n[0]||"./"}return e}Y.GenomeSpy=Gg,Y.GenomeSpyApp=iy,Y.embed=iT,Y.html=M,Y.icon=Y1,Y.loadSpec=oy,Object.defineProperty(Y,"__esModule",{value:!0}),Y[Symbol.toStringTag]="Module"});
2065
+ */const Z1=t=>!bI(t)&&typeof t.then=="function";class FI extends H1{constructor(){super(...arguments),this._$Cft=1073741823,this._$Cwt=[],this._$CG=new BI(this),this._$CK=new PI}render(...e){var n;return(n=e.find(r=>!Z1(r)))!==null&&n!==void 0?n:xe}update(e,n){const r=this._$Cwt;let i=r.length;this._$Cwt=n;const o=this._$CG,s=this._$CK;this.isConnected||this.disconnected();for(let a=0;a<n.length&&!(a>this._$Cft);a++){const c=n[a];if(!Z1(c))return this._$Cft=a,c;a<i&&c===r[a]||(this._$Cft=1073741823,i=0,Promise.resolve(c).then(async u=>{for(;s.get();)await s.get();const f=o.deref();if(f!==void 0){const l=f._$Cwt.indexOf(c);l>-1&&l<f._$Cft&&(f._$Cft=l,f.setValue(u))}}))}return xe}disconnected(){this._$CG.disconnect(),this._$CK.pause()}reconnected(){this._$CG.reconnect(this),this._$CK.resume()}}const zI=br(FI);var RI={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function K1(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function $i(t){return(t+"").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Kl(t,e){var n,r,i,o,s,a=/((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm,c=[],u="",f=e||{},l=0;function h(d){var g=RI[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()+'"':"")+">"+K1($i(s).replace(/^\n+|\n+$/g,""))+"</code></pre>":(s=i[6])?(s.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=Kl(K1(i[5].replace(/^\s*[>*+.-]/gm,""))),s==">"?s="blockquote":(s=s.match(/\./)?"ol":"ul",o=o.replace(/^(.*)(\n|$)/gm,"<li>$1</li>")),n="<"+s+">"+o+"</"+s+">"):i[8]?n='<img src="'+$i(i[8])+'" alt="'+$i(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+$i(i[11]||f[r.toLowerCase()])+'">'),n=p()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(s="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+Kl(i[12]||i[15],f)+"</"+s+">":i[16]?n="<code>"+$i(i[16])+"</code>":(i[17]||i[1])&&(n=h(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+p()).replace(/^\n+|\n+$/g,"")}function UI(t){const e=Kl(t),n=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${e}</div></body></html>`,"text/html");n.normalize(),J1(n.body);for(const i of n.querySelectorAll("a[href]"))i.setAttribute("target","blank"),i.setAttribute("rel","noopener noreferrer");const r=n.body.removeChild(n.querySelector("body > div"));return r.className="snarkdown",r}function J1(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--;)J1(t.childNodes[e])}}function jI(t){t.stopPropagation(),t.preventDefault();const n=t.target.parentElement,r=n.parentElement,o=r.parentElement.querySelector(".panes"),s=[...r.children].findIndex(a=>a==n);for(const a of r.children)a.classList.remove("active-tab");for(const a of o.children)a.classList.remove("active-tab");r.children.item(s).classList.add("active-tab"),o.children.item(s).classList.add("active-tab")}var Jl={exports:{}};(function(t){var e=function(){var n=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",o={};function s(c,u){if(!o[c]){o[c]={};for(var f=0;f<c.length;f++)o[c][c.charAt(f)]=f}return o[c][u]}var a={compressToBase64:function(c){if(c==null)return"";var u=a._compress(c,6,function(f){return r.charAt(f)});switch(u.length%4){default:case 0:return u;case 1:return u+"===";case 2:return u+"==";case 3:return u+"="}},decompressFromBase64:function(c){return c==null?"":c==""?null:a._decompress(c.length,32,function(u){return s(r,c.charAt(u))})},compressToUTF16:function(c){return c==null?"":a._compress(c,15,function(u){return n(u+32)})+" "},decompressFromUTF16:function(c){return c==null?"":c==""?null:a._decompress(c.length,16384,function(u){return c.charCodeAt(u)-32})},compressToUint8Array:function(c){for(var u=a.compress(c),f=new Uint8Array(u.length*2),l=0,h=u.length;l<h;l++){var 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="",x=2,v=3,S=2,b=[],A=0,w=0,E;for(E=0;E<c.length;E+=1)if(g=c.charAt(E),Object.prototype.hasOwnProperty.call(p,g)||(p[g]=v++,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<S;l++)A=A<<1,w==u-1?(w=0,b.push(f(A)),A=0):w++;for(h=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}else{for(h=1,l=0;l<S;l++)A=A<<1|h,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=0;for(h=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}x--,x==0&&(x=Math.pow(2,S),S++),delete d[y]}else for(h=p[y],l=0;l<S;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1;x--,x==0&&(x=Math.pow(2,S),S++),p[m]=v++,y=String(g)}if(y!==""){if(Object.prototype.hasOwnProperty.call(d,y)){if(y.charCodeAt(0)<256){for(l=0;l<S;l++)A=A<<1,w==u-1?(w=0,b.push(f(A)),A=0):w++;for(h=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}else{for(h=1,l=0;l<S;l++)A=A<<1|h,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=0;for(h=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}x--,x==0&&(x=Math.pow(2,S),S++),delete d[y]}else for(h=p[y],l=0;l<S;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1;x--,x==0&&(x=Math.pow(2,S),S++)}for(h=2,l=0;l<S;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1;for(;;)if(A=A<<1,w==u-1){b.push(f(A));break}else w++;return b.join("")},decompress:function(c){return c==null?"":c==""?null:a._decompress(c.length,32768,function(u){return c.charCodeAt(u)})},_decompress:function(c,u,f){var l=[],h=4,p=4,d=3,g="",m=[],y,x,v,S,b,A,w,E={val:f(0),position:u,index:1};for(y=0;y<3;y+=1)l[y]=y;for(v=0,b=Math.pow(2,2),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;switch(v){case 0:for(v=0,b=Math.pow(2,8),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;w=n(v);break;case 1:for(v=0,b=Math.pow(2,16),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;w=n(v);break;case 2:return""}for(l[3]=w,x=w,m.push(w);;){if(E.index>c)return"";for(v=0,b=Math.pow(2,d),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;switch(w=v){case 0:for(v=0,b=Math.pow(2,8),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;l[p++]=n(v),w=p-1,h--;break;case 1:for(v=0,b=Math.pow(2,16),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;l[p++]=n(v),w=p-1,h--;break;case 2:return m.join("")}if(h==0&&(h=Math.pow(2,d),d++),l[w])g=l[w];else if(w===p)g=x+x.charAt(0);else return null;m.push(g),l[p++]=x+g.charAt(0),h--,x=g,h==0&&(h=Math.pow(2,d),d++)}}};return a}();t!=null&&(t.exports=e)})(Jl);function GI(){const t=typeof process!="undefined"?require("util").TextEncoder:TextEncoder;return new t}let Js;function HI(){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 QI(t){Js!=null||(Js=HI());let e=0^-1;const n=GI().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^Js[(e^n[r])&255];return(e^-1)>>>0}function $1(t){return("00000000"+QI(t).toString(16)).slice(-8)}function ey(t){const e=Jl.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+$1(e)}function VI(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($1(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(Jl.exports.decompressFromEncodedURIComponent(e))}let Ut;async function ty(t,e){var n;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch(Ji.actions.setViewSettings(t.viewSettings));const r=[];for(const[i,o]of Object.entries((n=t.scaleDomains)!=null?n:{})){const s=e.genomeSpy.getNamedScaleResolutions().get(i);s?r.push(s.zoomTo(o)):console.warn(`Cannot restore scale domain. Unknown name: ${i}`)}await Promise.all(r)}catch(r){console.error(r),st(M`<p>Cannot restore the state:</p><p>${r}</p>`),e.provenance.activateState(0)}}async function $s(t,e,n={}){await ty(t,e),(Ut||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await _I(t,e,n)}async function _I(t,e,n={}){Ut!=null||(Ut=Qi("tour")),await YI(t,e,n)}async function YI(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?UI(t.notes):M`<span class="no-notes">No notes provided</span>`,u=()=>{Ut==null||Ut.close(),Ut=void 0},f=async m=>{const y=await r.get(i[m]);$s(y,e,n)},l=async()=>{if(await $l(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(m){console.warn(m),st(`Cannot import bookmark: ${m}`)}},h=M`<button @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?M`<button @click="${l}">${te(Xg).node[0]} Import bookmark</button>`:U} ${r?M`<button @click="${()=>f(o-1)}" ?disabled="${o<=0}">${te(d8).node[0]} Previous</button> <button @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${te(p8).node[0]}</button>`:U}`,d=M`<button title="Collapse" class="collapse" @click="${m=>m.target.closest(".gs-modal").classList.toggle("collapsed")}">${te(n8).node[0]}</button><div class="modal-title">${a}</div><div class="modal-body markdown" style="max-width:600px">${c}</div><div class="modal-buttons">${h}</div>`;Xe(d,Ut.content)}function ny(t){const e=JSON.stringify(t,void 0,2),n=window.location,r=n.origin+n.pathname+n.search+ey(t);st(M`<div class="gs-tabs" style="width:600px"><ul class="tabs" @click="${jI}"><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(K8())).catch(()=>st("Failed to copy!"))}">Copy</button></div><small>The bookmark URL contains all the bookmarked data, including the possible notes, which will be shown when the link is opened.</small></div><div class="gs-form-group"><textarea id="bookmark-json" style="height:250px">
2066
+ ${e}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div></div>`,{title:"Share a bookmark",okLabel:"Close"})}function $l(t,e,n){const r={add:"Add bookmark",edit:"Edit bookmark",share:"Share the current view state as a bookmark"}[n],i=(c,u)=>{var f,l;return M`<div class="modal-title">${r}</div><div class="modal-body" style="width:500px">${n=="edit"?M`<div class="gs-alert warning">${te(o8).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:U} ${n=="share"?M`<div class="gs-alert info">${te(Zg).node[0]} <span>You can add an optional title and notes, which will be shown to the recipient when the bookmark link is opened.</span></div>`:U}<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=ry(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=ry(h.target.value)}}"></textarea> <small>Notes will be shown when the bookmark is loaded. You can use <a href="https://www.markdownguide.org/basic-syntax/">markdown</a> for formatting.</small></div></div><div class="modal-buttons"><button class="btn-cancel" @click="${c}">Cancel</button> <button class="btn-primary" @click="${u}">${n=="share"?M`${te(nl).node[0]} Create a link`:"Save"}</button></div>`},o=e.name,s=()=>!!e.name,a=Qi();return new Promise(c=>{const u=()=>{a.close(),c(!1)},f=async()=>{if(!s()){st("Name is missing!",{title:"Error"});return}let h=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(h=await st(M`A bookmark with the name <em>${e.name}</em> already exists. It will be overwritten.`,{title:"Bookmark already exists",cancelButton:!0})),h&&(a.close(),c(!0))},l=()=>{a.close(),c(!0)};Xe(i(u,n=="share"?l:f),a.content),a.content.querySelector("#bookmark-title").focus()})}function ry(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class WI extends kt{constructor(){super();this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(W1("app",e=>{this.app=e}))}createRenderRoot(){return this}_createBookmarkWithCurrentState(){const e={name:void 0,timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}},n=this.app.storeHelper.state.viewSettings;Object.keys(n.visibilities).length&&(e.viewSettings=n);for(const[r,i]of this.app.genomeSpy.getNamedScaleResolutions().entries())i.isZoomable()&&(e.scaleDomains[r]=i.getComplexDomain());return e}async _shareCurrentState(){const e=this._createBookmarkWithCurrentState();await $l(void 0,e,"share")&&ny(e)}async _addBookmark(e,n){var s,a;const r=n?await e.get(n):void 0,i=!!r,o=this._createBookmarkWithCurrentState();if((s=o.name)!=null||(o.name=r==null?void 0:r.name),(a=o.notes)!=null||(o.notes=r==null?void 0:r.notes),await $l(e,o,i?"edit":"add"))try{await e.put(o,r==null?void 0:r.name),this.requestUpdate()}catch(c){st(`${c}`,{title:"Cannot save the bookmark!"})}}async _loadBookmark(e,n){const r=await e.get(n);r&&$s(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li");Hm({items:[{label:"Edit and replace...",icon:c8,callback:()=>this._addBookmark(e,n)},{label:"Delete",icon:g8,callback:()=>st(M`The bookmark <em>${n}</em> will be deleted.`,{title:"Are you sure?",cancelButton:!0}).then(async a=>{a&&(await e.delete(n),this.requestUpdate())})},{label:"Share...",icon:nl,callback:async()=>ny(await e.get(n))}]},i,"right-start")}async _makeBookmarkMenuItems(e,n){const i=(await e.getNames()).map(o=>({label:o,callback:()=>this._loadBookmark(e,o),ellipsisCallback:e.isReadonly()?void 0:s=>this._createContextMenu(e,o,s)}));return i.length?[{type:"divider"},{label:n,type:"header"},...i].map(o=>jm(o)):U}_getBookmarks(){const e=(n,r)=>n?zI(this._makeBookmarkMenuItems(n,r),M`Loading...`):U;return[e(this.app.globalBookmarkDatabase,"Global bookmarks"),e(this.app.localBookmarkDatabase,"Local bookmarks")]}render(){const e=this.app.localBookmarkDatabase,n=e?M`<li><a @click="${()=>this._addBookmark(e)}">Add bookmark...</a></li>`:U,r=e||this.app.globalBookmarkDatabase?M`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${i=>{ql(i)&&this.requestUpdate()}}">${te(Xg).node[0]}</button><ul class="gs-dropdown-menu">${n} ${this._getBookmarks()}</ul></div>`:U;return M`<div class="btn-group">${r} <button class="tool-btn" title="Share" @click="${()=>this._shareCurrentState()}">${te(nl).node[0]}</button></div>`}}customElements.define("genome-spy-bookmark-button",WI);class XI extends kt{constructor(){super();this.app=void 0,this.appInitialized=!1}static get properties(){return{app:{type:Object},appInitialized:{type:Boolean}}}createRenderRoot(){return this}_getToolButtons(){const e=this.app.getSampleView(),n=this.app.provenance,r=[];n.isEnabled()&&r.push(M`<genome-spy-provenance-buttons .provenance="${n}"></genome-spy-provenance-buttons>`),r.push(M`<genome-spy-view-visibility></genome-spy-view-visibility>`),e&&r.push(M`<button class="tool-btn" title="Peek (E)" @click="${()=>e._togglePeek()}">${te(e8).node[0]}</button>`),r.push(M`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const i=this.app.config.description?qe(this.app.config.description):[];return i.length>1&&r.push(M`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>st(M`${i.slice(1).map(o=>M`<p>${o}</p>`)}`,{title:i[0]})}">${te(Zg).node[0]}</button>`),i.length>0&&r.push(M`<span class="vis-title">${i[0]}</span>`),r.push(M`<span class="spacer"></span> <button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${te(s8).node[0]}</button> <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${te(u8).node[0]}</button>`),r}render(){const e=this.app.genomeSpy;return M`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${Y1}"></a><div class="title"><span>GenomeSpy</span></div>${this.appInitialized&&_1(e.viewRoot)?M`<genome-spy-search-field .genomeSpy="${e}"></genome-spy-search-field>`:U} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",XI);class qI{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=x6(zl(F(T({},this._reducers),{lastAction:i})),{ignoreInitialState:!0,filter:r}),this.storeHelper.dispatch({type:"@@redux/REPLACE"+Math.random().toString(36).substring(7).split("").join(".")})}get _storeState(){return this.storeHelper.store.getState()}get _provenanceState(){return this._storeState.provenance}isEnabled(){return!!this.getPresentState()}getPresentState(){return this._provenanceState.present}addActionInfoSource(e){this.actionInfoSources.push(e)}getActionInfo(e){for(const n of this.actionInfoSources){const r=n(e);if(r)return r}}dispatchBookmark(e){this.storeHelper.dispatch([...this.isUndoable()?[sn.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(sn.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(sn.ActionCreators.undo())}isAtInitialState(){return!this.isUndoable()}isEmpty(){const e=this._provenanceState;return!this.isEnabled()||e.past.length+e.future.length<=0}activateState(e){const n=this.getCurrentIndex();e<n?this.storeHelper.dispatch(sn.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(sn.ActionCreators.jumpToFuture(e-n-1))}getCurrentIndex(){var e;return(e=this._provenanceState.past)==null?void 0:e.length}getActionHistory(){const e=this._provenanceState;return e.present&&[...e.past,e.present].map(n=>n.lastAction)}getFullActionHistory(){const e=this._provenanceState;return[...e.past,e.present,...e.future].map(n=>n.lastAction)}getBookmarkableActionHistory(){var e;return(e=this.getActionHistory())==null?void 0:e.slice(1)}}function*ZI(t,e=n=>+n){const n=t.length,r=new ji,i=new Array(n).fill(0);for(const[s,a]of t.entries())a.length&&r.push(s,e(a[0]));let o=0;for(;(o=r.pop())!==void 0;){const s=t[o];let a=i[o];if(yield s[a++],a<s.length){const u=e(s[a]);r.push(o,u),i[o]=a}}}const KI="sampleCount";class JI extends se{constructor(e,n){super();this.view=n;const r=n.context.animator;for(const i of n.getAncestors())i instanceof jl&&(this.provenance=i.provenance,this.provenance.storeHelper.subscribe(o=>r.requestTransition(()=>{this.reset(),this._mergeAndPropagate(Ul(o)),this.complete()})));if(!this.provenance)throw new Error("No SampleView was found!");this.contextObject=void 0}initialize(){this.contextObject=Object.create(super.getGlobalObject());const e=this.view.parent.getEncoding().x;if(Mn(e))this.xAccessor=Z(e.field);else throw new Error("Crash!")}handle(e){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof Ui)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){this._mergeAndPropagate(this.provenance.getPresentState()[Mr]),super.complete()}_mergeAndPropagate(e){const n=[...T1(e.rootGroup)].filter(r=>M1(pe(r)));for(const[r,i]of n.entries()){const o=pe(i);if(M1(o)){this.contextObject[KI]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const s=o.samples,a=this._getCollector(),c=ZI(s.map(u=>{var f;return(f=a.facetBatches.get([u]))!=null?f:[]}),this.xAccessor);for(const u of c)this._propagate(u)}}this._updateScales()}setParent(e){super.setParent(e)}_updateScales(){const e=new Set;this.view.visit(n=>{if(n instanceof Pe&&n.mark.encoding.y){const r=n.getScaleResolution("y");r&&e.add(r)}});for(const n of e)n.reconfigure()}}var $I="BATCHING_REDUCER.BATCH";function eT(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:$I;return{type:e,meta:{batch:!0},payload:t}}function tT(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class nT{constructor(e){this._reducers=e!=null?e:{},this.store=B5({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(tT(zl(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(eT(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class rT extends U1{constructor(e){super();this.bookmarks=e,this.names=e.map(n=>n.name)}async getNames(){return this.names}async get(e){return this.bookmarks.find(n=>n.name==e)}}Ig.mergeFacets=JI;class iy{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new nT,this.storeHelper.addReducer("viewSettings",Ji.reducer),this.provenance=new qI(this.storeHelper),this._initializationListeners=[],this.toolbarRef=Q1(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new AI(n.specId):void 0,this.globalBookmarkDatabase=void 0,Xe(M`<div class="genome-spy-app"><genome-spy-toolbar ${V1(i.toolbarRef)} .app="${i}"></genome-spy-toolbar><div class="genome-spy-container"></div></div>`,i.appContainer),i.appContainer.querySelector(".genome-spy-app").addEventListener("query-dependency",a=>{a.detail.name=="app"&&(a.detail.setter(i),a.stopPropagation())});const o=a=>this.appContainer.getElementsByClassName(a)[0];this.genomeSpy=new Gg(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(sI,(a,c,u,f)=>new jl(a,c,u,f,this.provenance));const s=this.genomeSpy.viewVisibilityPredicate;this.genomeSpy.viewVisibilityPredicate=a=>{var c,u;return(u=(c=this.storeHelper.state.viewSettings)==null?void 0:c.visibilities[a.name])!=null?u:s(a)}}addInitializationListener(e){this._initializationListeners?this._initializationListeners.push(e):e()}toggleFullScreen(){document.fullscreenElement?document.exitFullscreen&&document.exitFullscreen():this.appContainer.requestFullscreen()}isFullPage(){return this.appContainer==document.body}async launch(){var s,a;const e=((s=this.config.bookmarks)==null?void 0:s.remote)?_r({baseURL:this.config.baseUrl}).load(this.config.bookmarks.remote.url).then(c=>Promise.resolve(JSON.parse(c))):Promise.resolve([]);if(!await this.genomeSpy.launch())return;this.storeHelper.subscribe(Zs(c=>{var u;return(u=c.viewSettings)==null?void 0:u.visibilities},(c,u)=>{var l,h;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(h=(l=this.getSampleView())==null?void 0:l.summaryViews)==null||h._invalidateCacheByPrefix("size","self");const f=this.genomeSpy.viewRoot.context;f.requestLayoutReflow(),f.animator.requestRender()},this.storeHelper.store.getState()));try{const c=await e;c.length&&(this.globalBookmarkDatabase=new rT(c))}catch(c){throw new Error(`Cannot load remote bookmarks: ${c}`)}await this._restoreStateFromUrlOrBookmark(),this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl(),!1);const r=Is(()=>this._updateStateToUrl(),500,!1);for(const[,c]of this.genomeSpy.getNamedScaleResolutions())c.isZoomable()&&c.addEventListener("domain",r);const i=this.toolbarRef.value;i.appInitialized=!0;const o=qe((a=this.genomeSpy.spec.description)!=null?a:[]);this.isFullPage()&&o.length>0&&(document.title="GenomeSpy - "+o);for(const c of this._initializationListeners)c();this._initializationListeners=void 0}async _restoreStateFromUrlOrBookmark(){var i,o;const e=this._restoreStateFromUrl(),n=(i=this.config.bookmarks)==null?void 0:i.remote,r=this.globalBookmarkDatabase;if(!e&&n&&r){const s=(o=n.initialBookmark)!=null?o:n.tour&&(await r.getNames())[0];if(s){const a=await r.get(s);if(!a)throw new Error(`No such bookmark: ${s}`);n.tour?await $s(a,this,{mode:"tour",database:r}):await ty(a,this)}}}_updateStateToUrl(){const e={actions:[],scaleDomains:{}},n=this.provenance.getBookmarkableActionHistory();(n==null?void 0:n.length)&&(e.actions=n);for(const[o,s]of this.genomeSpy.getNamedScaleResolutions().entries())s.isZoomed()||(e.scaleDomains[o]=s.getComplexDomain());const r=this.storeHelper.state.viewSettings;Object.keys(r.visibilities).length&&(e.viewSettings=r);let i=e.actions.length||Object.keys(e.scaleDomains).length||e.viewSettings?ey(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=VI(e);return $s(n,this,{mode:"shared"}),!0}catch(n){console.error(n),st(M`<p>Cannot restore the state:</p><p>${n}</p>`)}return!1}_configureContainer(){this.isFullPage()?(this.appContainer.style.margin="0",this.appContainer.style.padding="0",this.appContainer.style.overflow="hidden",iT(qM)):this.appContainer.style.position="relative"}async updateConfig(e){throw new Error("Broken")}getSampleView(){var n;if(!((n=this.genomeSpy)==null?void 0:n.viewRoot))return;let e;return this.genomeSpy.viewRoot.visit(r=>{if(r instanceof jl)return e=r,kn}),e}}function iT(t){let e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function oT(t,e,n={}){var o,s,a;let r;if(oe(t)){if(r=document.querySelector(t),!r)throw new Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)r=t;else throw new Error(`Invalid element: ${t}`);let i;try{const c=ze(e)?e:await oy(e);(o=c.baseUrl)!=null||(c.baseUrl=""),(s=c.width)!=null||(c.width="container"),(a=c.padding)!=null||(c.padding=10);const u=new iy(r,c,n);i=u.genomeSpy,sT(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 sT(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function oy(t){let e;try{e=JSON.parse(await _r().load(t))}catch(n){throw new Error(`Could not load or parse configuration: ${t}, reason: ${n.message}`)}if(!e.baseUrl){const n=t.match(/^[^?#]*\//);e.baseUrl=n&&n[0]||"./"}return e}Y.GenomeSpy=Gg,Y.GenomeSpyApp=iy,Y.embed=oT,Y.html=M,Y.icon=Y1,Y.loadSpec=oy,Object.defineProperty(Y,"__esModule",{value:!0}),Y[Symbol.toStringTag]="Module"});