n&&(n=b)}function b(b,c){var d=qb([b*Pg,c*Pg]);if(r){var e=sb(r,d),f=[e[1],-e[0],0],g=sb(f,e);vb(g),g=wb(g);var i=b-o,j=i>0?1:-1,p=g[0]*Qg*j,q=sg(i)>180;if(q^(j*on&&(n=s)}else if(p=(p+360)%360-180,q^(j*o
n&&(n=c);q?bh(k,m)&&(m=b):h(b,m)>h(k,m)&&(k=b):m>=k?(bm&&(m=b)):b>o?h(k,b)>h(k,m)&&(m=b):h(b,m)>h(k,m)&&(k=b)}else a(b,c);r=d,o=b}function c(){v.point=b}function d(){u[0]=k,u[1]=m,v.point=a,r=null}function e(a,c){if(r){var d=a-o;s+=sg(d)>180?d+(d>0?360:-360):d}else p=a,q=c;yh.point(a,c),b(a,c)}function f(){yh.lineStart()}function g(){e(p,q),yh.lineEnd(),sg(s)>Jg&&(k=-(m=180)),u[0]=k,u[1]=m,r=null}function h(a,b){return(b-=a)<0?b+360:b}function i(a,b){return a[0]-b[0]}function j(a,b){return b[0]<=b[1]?b[0]<=a&&a<=b[1]:aJg?n=90:s<-Jg&&(l=-90),u[0]=k,u[1]=m}};return function(a){n=m=-(k=l=1/0),t=[],ig.geo.stream(a,v);var b=t.length;if(b){t.sort(i);for(var c,d=1,e=t[0],f=[e];dh(e[0],e[1])&&(e[1]=c[1]),h(c[0],e[1])>h(e[0],e[1])&&(e[0]=c[0])):f.push(e=c);for(var g,c,o=-(1/0),b=f.length-1,d=0,e=f[b];d<=b;e=c,++d)c=f[d],(g=h(e[1],c[0]))>o&&(o=g,k=c[0],m=e[1])}return t=u=null,k===1/0||l===1/0?[[NaN,NaN],[NaN,NaN]]:[[k,l],[m,n]]}}(),ig.geo.centroid=function(a){zh=Ah=Bh=Ch=Dh=Eh=Fh=Gh=Hh=Ih=Jh=0,ig.geo.stream(a,Kh);var b=Hh,c=Ih,d=Jh,e=b*b+c*c+d*d;return e=.12&&e<.234&&d>=-.425&&d<-.214?g:e>=.166&&e<.234&&d>=-.214&&d<-.115?h:f).invert(a)},a.stream=function(a){var b=f.stream(a),c=g.stream(a),d=h.stream(a);return{point:function(a,e){b.point(a,e),c.point(a,e),d.point(a,e)},sphere:function(){b.sphere(),c.sphere(),d.sphere()},lineStart:function(){b.lineStart(),c.lineStart(),d.lineStart()},lineEnd:function(){b.lineEnd(),c.lineEnd(),d.lineEnd()},polygonStart:function(){b.polygonStart(),c.polygonStart(),d.polygonStart()},polygonEnd:function(){b.polygonEnd(),c.polygonEnd(),d.polygonEnd()}}},a.precision=function(b){return arguments.length?(f.precision(b),g.precision(b),h.precision(b),a):f.precision()},a.scale=function(b){return arguments.length?(f.scale(b),g.scale(.35*b),h.scale(b),a.translate(f.translate())):f.scale()},a.translate=function(b){if(!arguments.length)return f.translate();var j=f.scale(),k=+b[0],l=+b[1];return c=f.translate(b).clipExtent([[k-.455*j,l-.238*j],[k+.455*j,l+.238*j]]).stream(i).point,d=g.translate([k-.307*j,l+.201*j]).clipExtent([[k-.425*j+Jg,l+.12*j+Jg],[k-.214*j-Jg,l+.234*j-Jg]]).stream(i).point,e=h.translate([k-.205*j,l+.212*j]).clipExtent([[k-.214*j+Jg,l+.166*j+Jg],[k-.115*j-Jg,l+.234*j-Jg]]).stream(i).point,a},a.scale(1070)};var Nh,Oh,Ph,Qh,Rh,Sh,Th={point:w,lineStart:w,lineEnd:w,polygonStart:function(){Oh=0,Th.lineStart=Vb},polygonEnd:function(){Th.lineStart=Th.lineEnd=Th.point=w,Nh+=sg(Oh/2)}},Uh={point:Wb,lineStart:w,lineEnd:w,polygonStart:w,polygonEnd:w},Vh={point:Zb,lineStart:$b,lineEnd:_b,polygonStart:function(){Vh.lineStart=ac},polygonEnd:function(){Vh.point=Zb,Vh.lineStart=$b,Vh.lineEnd=_b}};ig.geo.path=function(){function a(a){return a&&("function"==typeof h&&f.pointRadius(+h.apply(this,arguments)),g&&g.valid||(g=e(f)),ig.geo.stream(a,g)),f.result()}function b(){return g=null,a}var c,d,e,f,g,h=4.5;return a.area=function(a){return Nh=0,ig.geo.stream(a,e(Th)),Nh},a.centroid=function(a){return Bh=Ch=Dh=Eh=Fh=Gh=Hh=Ih=Jh=0,ig.geo.stream(a,e(Vh)),Jh?[Hh/Jh,Ih/Jh]:Gh?[Eh/Gh,Fh/Gh]:Dh?[Bh/Dh,Ch/Dh]:[NaN,NaN]},a.bounds=function(a){return Rh=Sh=-(Ph=Qh=1/0),ig.geo.stream(a,e(Uh)),[[Ph,Qh],[Rh,Sh]]},a.projection=function(a){return arguments.length?(e=(c=a)?a.stream||dc(a):t,b()):c},a.context=function(a){return arguments.length?(f=null==(d=a)?new Xb:new bc(a),"function"!=typeof h&&f.pointRadius(h),b()):d},a.pointRadius=function(b){return arguments.length?(h="function"==typeof b?b:(f.pointRadius(+b),+b),a):h},a.projection(ig.geo.albersUsa()).context(null)},ig.geo.transform=function(a){return{stream:function(b){var c=new ec(b);for(var d in a)c[d]=a[d];return c}}},ec.prototype={point:function(a,b){this.stream.point(a,b)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ig.geo.projection=gc,ig.geo.projectionMutator=hc,(ig.geo.equirectangular=function(){return gc(jc)}).raw=jc.invert=jc,ig.geo.rotation=function(a){function b(b){return b=a(b[0]*Pg,b[1]*Pg),b[0]*=Qg,b[1]*=Qg,b}return a=lc(a[0]%360*Pg,a[1]*Pg,a.length>2?a[2]*Pg:0),b.invert=function(b){return b=a.invert(b[0]*Pg,b[1]*Pg),b[0]*=Qg,b[1]*=Qg,b},b},kc.invert=jc,ig.geo.circle=function(){function a(){var a="function"==typeof d?d.apply(this,arguments):d,b=lc(-a[0]*Pg,-a[1]*Pg,0).invert,e=[];return c(null,null,1,{point:function(a,c){e.push(a=b(a,c)),a[0]*=Qg,a[1]*=Qg}}),{type:"Polygon",coordinates:[e]}}var b,c,d=[0,0],e=6;return a.origin=function(b){return arguments.length?(d=b,a):d},a.angle=function(d){return arguments.length?(c=pc((b=+d)*Pg,e*Pg),a):b},a.precision=function(d){return arguments.length?(c=pc(b*Pg,(e=+d)*Pg),a):e},a.angle(90)},ig.geo.distance=function(a,b){var c,d=(b[0]-a[0])*Pg,e=a[1]*Pg,f=b[1]*Pg,g=Math.sin(d),h=Math.cos(d),i=Math.sin(e),j=Math.cos(e),k=Math.sin(f),l=Math.cos(f);return Math.atan2(Math.sqrt((c=l*g)*c+(c=j*k-i*l*h)*c),i*k+j*l*h)},ig.geo.graticule=function(){function a(){return{type:"MultiLineString",coordinates:b()}}function b(){return ig.range(Math.ceil(f/q)*q,e,q).map(m).concat(ig.range(Math.ceil(j/r)*r,i,r).map(n)).concat(ig.range(Math.ceil(d/o)*o,c,o).filter(function(a){return sg(a%q)>Jg}).map(k)).concat(ig.range(Math.ceil(h/p)*p,g,p).filter(function(a){return sg(a%r)>Jg}).map(l))}var c,d,e,f,g,h,i,j,k,l,m,n,o=10,p=o,q=90,r=360,s=2.5;return a.lines=function(){return b().map(function(a){return{type:"LineString",coordinates:a}})},a.outline=function(){return{type:"Polygon",coordinates:[m(f).concat(n(i).slice(1),m(e).reverse().slice(1),n(j).reverse().slice(1))]}},a.extent=function(b){return arguments.length?a.majorExtent(b).minorExtent(b):a.minorExtent()},a.majorExtent=function(b){return arguments.length?(f=+b[0][0],e=+b[1][0],j=+b[0][1],i=+b[1][1],f>e&&(b=f,f=e,e=b),j>i&&(b=j,j=i,i=b),a.precision(s)):[[f,j],[e,i]]},a.minorExtent=function(b){return arguments.length?(d=+b[0][0],c=+b[1][0],h=+b[0][1],g=+b[1][1],d>c&&(b=d,d=c,c=b),h>g&&(b=h,h=g,g=b),a.precision(s)):[[d,h],[c,g]]},a.step=function(b){return arguments.length?a.majorStep(b).minorStep(b):a.minorStep()},a.majorStep=function(b){return arguments.length?(q=+b[0],r=+b[1],a):[q,r]},a.minorStep=function(b){return arguments.length?(o=+b[0],p=+b[1],a):[o,p]},a.precision=function(b){return arguments.length?(s=+b,k=rc(h,g,90),l=sc(d,c,s),m=rc(j,i,90),n=sc(f,e,s),a):s},a.majorExtent([[-180,-90+Jg],[180,90-Jg]]).minorExtent([[-180,-80-Jg],[180,80+Jg]])},ig.geo.greatArc=function(){function a(){return{type:"LineString",coordinates:[b||d.apply(this,arguments),c||e.apply(this,arguments)]}}var b,c,d=tc,e=uc;return a.distance=function(){return ig.geo.distance(b||d.apply(this,arguments),c||e.apply(this,arguments))},a.source=function(c){return arguments.length?(d=c,b="function"==typeof c?null:c,a):d},a.target=function(b){return arguments.length?(e=b,c="function"==typeof b?null:b,a):e},a.precision=function(){return arguments.length?a:0},a},ig.geo.interpolate=function(a,b){return vc(a[0]*Pg,a[1]*Pg,b[0]*Pg,b[1]*Pg)},ig.geo.length=function(a){return Wh=0,ig.geo.stream(a,Xh),Wh};var Wh,Xh={sphere:w,point:w,lineStart:wc,lineEnd:w,polygonStart:w,polygonEnd:w},Yh=xc(function(a){return Math.sqrt(2/(1+a))},function(a){return 2*Math.asin(a/2)});(ig.geo.azimuthalEqualArea=function(){return gc(Yh)}).raw=Yh;var Zh=xc(function(a){var b=Math.acos(a);return b&&b/Math.sin(b)},t);(ig.geo.azimuthalEquidistant=function(){return gc(Zh)}).raw=Zh,(ig.geo.conicConformal=function(){return Tb(yc)}).raw=yc,(ig.geo.conicEquidistant=function(){return Tb(zc)}).raw=zc;var $h=xc(function(a){return 1/a},Math.atan);(ig.geo.gnomonic=function(){return gc($h)}).raw=$h,Ac.invert=function(a,b){return[a,2*Math.atan(Math.exp(b))-Og]},(ig.geo.mercator=function(){return Bc(Ac)}).raw=Ac;var _h=xc(function(){return 1},Math.asin);(ig.geo.orthographic=function(){return gc(_h)}).raw=_h;var ai=xc(function(a){return 1/(1+a)},function(a){return 2*Math.atan(a)});(ig.geo.stereographic=function(){return gc(ai)}).raw=ai,Cc.invert=function(a,b){return[-b,2*Math.atan(Math.exp(a))-Og]},(ig.geo.transverseMercator=function(){var a=Bc(Cc),b=a.center,c=a.rotate;return a.center=function(a){return a?b([-a[1],a[0]]):(a=b(),[a[1],-a[0]])},a.rotate=function(a){return a?c([a[0],a[1],a.length>2?a[2]+90:90]):(a=c(),[a[0],a[1],a[2]-90])},c([0,0,90])}).raw=Cc,ig.geom={},ig.geom.hull=function(a){function b(a){if(a.length<3)return[];var b,e=Ba(c),f=Ba(d),g=a.length,h=[],i=[];for(b=0;b=0;--b)n.push(a[h[j[b]][2]]);for(b=+l;b=d&&j.x<=f&&j.y>=e&&j.y<=g?[[d,g],[f,g],[f,e],[d,e]]:[];k.point=a[h]}),b}function c(a){return a.map(function(a,b){return{x:Math.round(f(a,b)/Jg)*Jg,y:Math.round(g(a,b)/Jg)*Jg,i:b}})}var d=Dc,e=Ec,f=d,g=e,h=ji;return a?b(a):(b.links=function(a){return hd(c(a)).edges.filter(function(a){return a.l&&a.r}).map(function(b){return{source:a[b.l.i],target:a[b.r.i]}})},b.triangles=function(a){var b=[];return hd(c(a)).cells.forEach(function(c,d){for(var e,f,g=c.site,h=c.edges.sort(Tc),i=-1,j=h.length,k=h[j-1].edge,l=k.l===g?k.r:k.l;++i=j,m=d>=k,n=m<<1|l;a.leaf=!1,a=a.nodes[n]||(a.nodes[n]=md()),l?e=j:h=j,m?g=k:i=k,f(a,b,c,d,e,g,h,i)}var k,l,m,n,o,p,q,r,s,t=Ba(h),u=Ba(i);if(null!=b)p=b,q=c,r=d,s=e;else if(r=s=-(p=q=1/0),l=[],m=[],o=a.length,g)for(n=0;nr&&(r=k.x),k.y>s&&(s=k.y),l.push(k.x),m.push(k.y);else for(n=0;nr&&(r=v),w>s&&(s=w),l.push(v),m.push(w)}var x=r-p,y=s-q;x>y?s=q+x:r=p+y;var z=md();if(z.add=function(a){f(z,a,+t(a,++n),+u(a,n),p,q,r,s)},z.visit=function(a){nd(a,z,p,q,r,s)},z.find=function(a){return od(z,a[0],a[1],p,q,r,s)},n=-1,null==b){for(;++n=0?a.slice(0,b):a,d=b>=0?a.slice(b+1):"in";return c=ni.get(c)||mi,d=oi.get(d)||t,vd(d(c.apply(null,jg.call(arguments,1))))},ig.interpolateHcl=Id,ig.interpolateHsl=Jd,ig.interpolateLab=Kd,ig.interpolateRound=Ld,ig.transform=function(a){var b=lg.createElementNS(ig.ns.prefix.svg,"g");return(ig.transform=function(a){if(null!=a){b.setAttribute("transform",a);var c=b.transform.baseVal.consolidate()}return new Md(c?c.matrix:pi)})(a)},Md.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var pi={a:1,b:0,c:0,d:1,e:0,f:0};ig.interpolateTransform=Vd,ig.layout={},ig.layout.bundle=function(){return function(a){for(var b=[],c=-1,d=a.length;++c0?e=a:(c.c=null,c.t=NaN,c=null,j.end({type:"end",alpha:e=0})):a>0&&(j.start({type:"start",alpha:e=a}),c=Ga(i.tick)),i):e},i.start=function(){function a(a,d){if(!c){for(c=new Array(e),i=0;i=0;)g.push(k=j[i]),k.parent=f,k.depth=f.depth+1;d&&(f.value=0),f.children=j}else d&&(f.value=+d.call(a,f,f.depth)||0),delete f.children;return ge(e,function(a){var c,e;b&&(c=a.children)&&c.sort(b),d&&(e=a.parent)&&(e.value+=a.value)}),h}var b=je,c=he,d=ie;return a.sort=function(c){return arguments.length?(b=c,a):b},a.children=function(b){return arguments.length?(c=b,a):c},a.value=function(b){return arguments.length?(d=b,a):d},a.revalue=function(b){return d&&(fe(b,function(a){a.children&&(a.value=0)}),ge(b,function(b){var c;b.children||(b.value=+d.call(a,b,b.depth)||0),(c=b.parent)&&(c.value+=b.value)})),b},a},ig.layout.partition=function(){function a(b,c,d,e){var f=b.children;if(b.x=c,b.y=b.depth*e,b.dx=d,b.dy=e,f&&(g=f.length)){var g,h,i,j=-1;for(d=b.value?d/b.value:0;++jh&&(h=d),g.push(d)}for(c=0;c0)for(f=-1;++f=k[0]&&h<=k[1]&&(g=i[ig.bisect(l,h,1,n)-1],g.y+=o,g.push(a[f]));return i}var b=!0,c=Number,d=ve,e=te;return a.value=function(b){return arguments.length?(c=b,a):c},a.range=function(b){return arguments.length?(d=Ba(b),a):d},a.bins=function(b){return arguments.length?(e="number"==typeof b?function(a){return ue(a,b)}:Ba(b),a):e},a.frequency=function(c){return arguments.length?(b=!!c,a):b},a},ig.layout.pack=function(){function a(a,f){var g=c.call(this,a,f),h=g[0],i=e[0],j=e[1],k=null==b?Math.sqrt:"function"==typeof b?b:function(){return b};if(h.x=h.y=0,ge(h,function(a){a.r=+k(a.value)}),ge(h,Ae),d){var l=d*(b?1:Math.max(2*h.r/i,2*h.r/j))/2;ge(h,function(a){a.r+=l}),ge(h,Ae),ge(h,function(a){a.r-=l})}return De(h,i/2,j/2,b?1:1/Math.max(2*h.r/i,2*h.r/j)),g}var b,c=ig.layout.hierarchy().sort(we),d=0,e=[1,1];return a.size=function(b){return arguments.length?(e=b,a):e},a.radius=function(c){return arguments.length?(b=null==c||"function"==typeof c?c:+c,a):b},a.padding=function(b){return arguments.length?(d=+b,a):d},ee(a,c)},ig.layout.tree=function(){function a(a,e){var k=g.call(this,a,e),l=k[0],m=b(l);if(ge(m,c),m.parent.m=-m.z,fe(m,d),j)fe(l,f);else{var n=l,o=l,p=l;fe(l,function(a){a.xo.x&&(o=a),a.depth>p.depth&&(p=a)});var q=h(n,o)/2-n.x,r=i[0]/(o.x+h(o,n)/2+q),s=i[1]/(p.depth||1);fe(l,function(a){a.x=(a.x+q)*r,a.y=a.depth*s})}return k}function b(a){for(var b,c={A:null,children:[a]},d=[c];null!=(b=d.pop());)for(var e,f=b.children,g=0,h=f.length;g0&&(Ie(Ke(g,a,c),a,d),j+=d,k+=d),l+=g.m,j+=e.m,m+=i.m,k+=f.m;g&&!He(f)&&(f.t=g,f.m+=l-k),e&&!Ge(i)&&(i.t=e,i.m+=j-m,c=a)}return c}function f(a){a.x*=i[0],a.y=a.depth*i[1]}var g=ig.layout.hierarchy().sort(null).value(null),h=Fe,i=[1,1],j=null;return a.separation=function(b){return arguments.length?(h=b,a):h},a.size=function(b){return arguments.length?(j=null==(i=b)?f:null,a):j?null:i},a.nodeSize=function(b){return arguments.length?(j=null==(i=b)?null:f,a):j?i:null},ee(a,g)},ig.layout.cluster=function(){function a(a,f){var g,h=b.call(this,a,f),i=h[0],j=0;ge(i,function(a){var b=a.children;b&&b.length?(a.x=Me(b),a.y=Le(b)):(a.x=g?j+=c(a,g):0,a.y=0,g=a)});var k=Ne(i),l=Oe(i),m=k.x-c(k,l)/2,n=l.x+c(l,k)/2;return ge(i,e?function(a){a.x=(a.x-i.x)*d[0],a.y=(i.y-a.y)*d[1]}:function(a){a.x=(a.x-m)/(n-m)*d[0],a.y=(1-(i.y?a.y/i.y:1))*d[1]}),h}var b=ig.layout.hierarchy().sort(null).value(null),c=Fe,d=[1,1],e=!1;return a.separation=function(b){return arguments.length?(c=b,a):c},a.size=function(b){return arguments.length?(e=null==(d=b),a):e?null:d},a.nodeSize=function(b){return arguments.length?(e=null!=(d=b),a):e?d:null},ee(a,b)},ig.layout.treemap=function(){function a(a,b){for(var c,d,e=-1,f=a.length;++e0;)k.push(g=m[i-1]),k.area+=g.area,"squarify"!==n||(h=d(k,p))<=o?(m.pop(),o=h):(k.area-=k.pop().area,e(k,p,j,!1),p=Math.min(j.dx,j.dy),k.length=k.area=0,o=1/0);k.length&&(e(k,p,j,!0),k.length=k.area=0),f.forEach(b)}}function c(b){var d=b.children;if(d&&d.length){var f,g=l(b),h=d.slice(),i=[];for(a(h,g.dx*g.dy/b.value),i.area=0;f=h.pop();)i.push(f),i.area+=f.area,null!=f.z&&(e(i,f.z?g.dx:g.dy,g,!h.length),
-i.length=i.area=0);d.forEach(c)}}function d(a,b){for(var c,d=a.area,e=0,f=1/0,g=-1,h=a.length;++ge&&(e=c));return d*=d,b*=b,d?Math.max(b*e*o/d,d/(b*f*o)):1/0}function e(a,b,c,d){var e,f=-1,g=a.length,h=c.x,j=c.y,k=b?i(a.area/b):0;if(b==c.dx){for((d||k>c.dy)&&(k=c.dy);++fc.dx)&&(k=c.dx);++f1);return a+b*c*Math.sqrt(-2*Math.log(e)/e)}},logNormal:function(){var a=ig.random.normal.apply(ig,arguments);return function(){return Math.exp(a())}},bates:function(a){var b=ig.random.irwinHall(a);return function(){return b()/a}},irwinHall:function(a){return function(){for(var b=0,c=0;cl?0:1;if(j=Ng)return b(j,n)+(a?b(a,1-n):"")+"Z";var o,p,q,r,s,t,u,v,w,x,y,z,A=0,B=0,C=[];if((r=(+i.apply(this,arguments)||0)/2)&&(q=f===Ei?Math.sqrt(a*a+j*j):+f.apply(this,arguments),n||(B*=-1),j&&(B=ca(q/j*Math.sin(r))),a&&(A=ca(q/a*Math.sin(r)))),j){s=j*Math.cos(k+B),t=j*Math.sin(k+B),u=j*Math.cos(l-B),v=j*Math.sin(l-B);var D=Math.abs(l-k-2*B)<=Lg?0:1;if(B&&sf(s,t,u,v)===n^D){var E=(k+l)/2;s=j*Math.cos(E),t=j*Math.sin(E),u=v=null}}else s=t=0;if(a){w=a*Math.cos(l-A),x=a*Math.sin(l-A),y=a*Math.cos(k+A),z=a*Math.sin(k+A);var F=Math.abs(k-l+2*A)<=Lg?0:1;if(A&&sf(w,x,y,z)===1-n^F){var G=(k+l)/2;w=a*Math.cos(G),x=a*Math.sin(G),y=z=null}}else w=x=0;if(m>Jg&&(o=Math.min(Math.abs(j-a)/2,+e.apply(this,arguments)))>.001){p=aLg)+",1 "+b}function e(a,b,c,d){return"Q 0,0 "+d}var f=tc,g=uc,h=Rf,i=pf,j=qf;return a.radius=function(b){return arguments.length?(h=Ba(b),a):h},a.source=function(b){return arguments.length?(f=Ba(b),a):f},a.target=function(b){return arguments.length?(g=Ba(b),a):g},a.startAngle=function(b){return arguments.length?(i=Ba(b),a):i},a.endAngle=function(b){return arguments.length?(j=Ba(b),a):j},a},ig.svg.diagonal=function(){function a(a,e){var f=b.call(this,a,e),g=c.call(this,a,e),h=(f.y+g.y)/2,i=[f,{x:f.x,y:h},{x:g.x,y:h},g];return i=i.map(d),"M"+i[0]+"C"+i[1]+" "+i[2]+" "+i[3]}var b=tc,c=uc,d=Sf;return a.source=function(c){return arguments.length?(b=Ba(c),a):b},a.target=function(b){return arguments.length?(c=Ba(b),a):c},a.projection=function(b){return arguments.length?(d=b,a):d},a},ig.svg.diagonal.radial=function(){var a=ig.svg.diagonal(),b=Sf,c=a.projection;return a.projection=function(a){return arguments.length?c(Tf(b=a)):b},a},ig.svg.symbol=function(){function a(a,d){return(Ji.get(b.call(this,a,d))||Wf)(c.call(this,a,d))}var b=Vf,c=Uf;return a.type=function(c){return arguments.length?(b=Ba(c),a):b},a.size=function(b){return arguments.length?(c=Ba(b),a):c},a};var Ji=ig.map({circle:Wf,cross:function(a){var b=Math.sqrt(a/5)/2;return"M"+-3*b+","+-b+"H"+-b+"V"+-3*b+"H"+b+"V"+-b+"H"+3*b+"V"+b+"H"+b+"V"+3*b+"H"+-b+"V"+b+"H"+-3*b+"Z"},diamond:function(a){var b=Math.sqrt(a/(2*Li)),c=b*Li;return"M0,"+-b+"L"+c+",0 0,"+b+" "+-c+",0Z"},square:function(a){var b=Math.sqrt(a)/2;return"M"+-b+","+-b+"L"+b+","+-b+" "+b+","+b+" "+-b+","+b+"Z"},"triangle-down":function(a){var b=Math.sqrt(a/Ki),c=b*Ki/2;return"M0,"+c+"L"+b+","+-c+" "+-b+","+-c+"Z"},"triangle-up":function(a){var b=Math.sqrt(a/Ki),c=b*Ki/2;return"M0,"+-c+"L"+b+","+c+" "+-b+","+c+"Z"}});ig.svg.symbolTypes=Ji.keys();var Ki=Math.sqrt(3),Li=Math.tan(30*Pg);Bg.transition=function(a){for(var b,c,d=Mi||++Qi,e=_f(a),f=[],g=Ni||{time:Date.now(),ease:Ad,delay:0,duration:250},h=-1,i=this.length;++hrect,.s>rect").attr("width",l[1]-l[0])}function e(a){a.select(".extent").attr("y",m[0]),a.selectAll(".extent,.e>rect,.w>rect").attr("height",m[1]-m[0])}function f(){function f(){32==ig.event.keyCode&&(D||(t=null,F[0]-=l[1],F[1]-=m[1],D=2),z())}function p(){32==ig.event.keyCode&&2==D&&(F[0]+=l[1],F[1]+=m[1],D=0,z())}function q(){var a=ig.mouse(v),c=!1;u&&(a[0]+=u[0],a[1]+=u[1]),D||(ig.event.altKey?(t||(t=[(l[0]+l[1])/2,(m[0]+m[1])/2]),F[0]=l[+(a[0]":"⇢","^":"⇡","<":"⇠",v:"⇣","-":"↔","|":"↕"},m=function(a){return""+l[a[0]]+l[a[1]]},n=[">-",">|","^-","^|","<-","<|","v-","v|"],o=[">-","^-","<-","v-",">|","^|","<|","v|"],p=function(){function a(b,c){var d=this,f=arguments.length<=2||void 0===arguments[2]?200:arguments[2];g(this,a),this.g=b.append("g").attr("class","transition-heatmap").on("click",function(){return d.toggleBasis()}),this.tooltip=new e(c),this.size=f,this.basis=n}return f(a,[{key:"updateFromTensor",value:function(a){var c=this,d=this.basis.map(function(b){return c.basis.map(function(c){var d=a.get(c).get(b)||{re:0,im:0};return{from:c,to:b,re:d.re,im:d.im}})});this.update(this.basis,b.flatten(d))}},{key:"toggleBasis",value:function(){this.basis===n?this.basis=o:this.basis=n,this.update(this.basis)}},{key:"update",value:function(a){var e=this,f=arguments.length<=1||void 0===arguments[1]?null:arguments[1],g=b.fromPairs(a.map(function(a,b){return[a,b]})),l=h.scale.linear().domain([-1,a.length]).range([0,this.size]),n=l(1)-l(0);this.labelIn=this.g.selectAll(".label-in").data(a,function(a){return a}),this.labelIn.enter().append("text").attr("class","label-in"),this.labelIn.attr("y",l(-.5)).style("text-anchor","middle").text(m).transition().duration(i).attr("x",function(a,b){return l(b+.5)}).attr("dy","0.5em"),this.labelIn.exit().remove(),this.labelOut=this.g.selectAll(".label-out").data(a,function(a){return a}),this.labelOut.enter().append("text").attr("class","label-out"),this.labelOut.attr("x",l(-.5)).style("text-anchor","middle").text(m).transition().duration(i).attr("y",function(a,b){return l(b+.5)}).attr("dy","0.5em"),this.labelOut.exit().remove(),null!=f&&(this.matrixElement=this.g.selectAll(".matrix-element").data(f,function(a){return a.from+" "+a.to}),this.matrixElement.enter().append("rect").attr("class","matrix-element").on("mouseover",function(a){var b=Math.sqrt(a.re*a.re+a.im*a.im),f=Math.atan2(a.im,a.re)/c,g=a.im>=0?"+":"-";b>d&&e.tooltip.show(a.re.toFixed(3)+" "+g+" "+Math.abs(a.im).toFixed(3)+" i
\n = "+b.toFixed(3)+" exp("+f.toFixed(3)+" i τ)")}).on("mouseout",function(){return e.tooltip.out()})),this.matrixElement.attr("width",n-1).attr("height",n-1).style("fill",j).style("fill-opacity",k).transition().duration(i).attr("y",function(a){return l(g[a.to])+.5}).attr("x",function(a){return l(g[a.from])+.5}),this.matrixElement.exit().remove()}}]),a}(),a("TransitionHeatmap",p)}}}),a.register("86",["15","16","29","85","e","f","a","b","c"],function(a){var b,c,d,e,f,g,h,i,j,k;return{setters:[function(a){b=a.default},function(a){c=a.default},function(a){d=a.View},function(a){e=a.TransitionHeatmap},function(a){f=a.default},function(a){g=a.default},function(a){h=a.default},function(a){i=a},function(a){j=a.tileSize}],execute:function(){"use strict";k=function(a){function d(){g(this,d),b(Object.getPrototypeOf(d.prototype),"constructor",this).apply(this,arguments)}return c(d,a),f(d,[{key:"initialize",value:function(){this.bindMenuEvents()}},{key:"resetContent",value:function(){if(this.game.currentEncyclopediaItem){var a=i[this.game.currentEncyclopediaItem],b=h.select(".encyclopedia-item__container > article");b.html(null),this.createBasicInfo(b,a),this.createTransitions(b,a),this.createHowItWorks(b,a),this.createUsage(b,a)}}},{key:"createBasicInfo",value:function(a,b){a.append("h1").attr("id","encyclopedia-item__basic-info").text("Basic info"),a.append("svg").attr("class","big-tile").attr("viewBox","0 0 100 100").append("use").attr("xlink:href","#"+b.svgName).attr("transform","translate(50, 50)"),a.append("h4").text(b.desc.name),a.append("div").classed("content",!0).text(b.desc.summary),b.desc.flavour&&a.append("div").classed("content",!0).append("i").text('"'+b.desc.flavour+'"')}},{key:"createTransitions",value:function(a,b){a.append("h1").attr("id","encyclopedia-item__transitions").text("Transitions"),a.append("p").classed("encyclopedia-item__hint",!0).text("Click on heatmap to change its ordering (direction, polarization).");var c=150,d=50,f=a.append("div").attr("class","content content--heatmap"),g=f.append("svg").attr("viewBox","0 0 "+(c+d)+" "+c).attr("preserveAspectRatio","xMidYMid meet").attr("class","content heatmap"),h=new i.Tile(b),k=new e(g,f,c);k.updateFromTensor(h.transitionAmplitudes.map),g.append("text").attr("class","hm-element-rotation-hint").attr("x",c+d/2).attr("y",c-d).style("font-size","8px").style("text-anchor","middle").text("click to rotate"),h.g=g.append("g").attr("transform","translate("+c+","+(c-d)+")scale("+d/j+")translate("+j/2+","+j/2+")"),h.draw(),g.append("rect").attr("class","helper-hitbox").attr("x",c).attr("y",c-1.5*d).attr("width",d).attr("height",1.5*d).attr("rx",10).attr("ry",10).on("click",function(){h.rotate(),k.updateFromTensor(h.transitionAmplitudes.map)})}},{key:"createHowItWorks",value:function(a,b){}},{key:"createUsage",value:function(a,b){}},{key:"bindMenuEvents",value:function(){var a=this;h.select(".bottom-bar__back-to-encyclopedia-selector-button").on("click",function(){a.game.setView("encyclopediaSelector")});var b=h.selectAll(".encyclopedia-item__menu li button");b.on("click",function(){var a=h.select(".encyclopedia-item__container > article"),b=this.getAttribute("encyclopedia-nav"),c="encyclopedia-item__"+b,d=window.document.getElementById(c);d&&(a[0][0].scrollTop=d.offsetTop)})}},{key:"title",get:function(){return i[this.game.currentEncyclopediaItem].desc.name}},{key:"className",get:function(){return"view--encyclopedia-item"}}]),d}(d),a("EncyclopediaItemView",k)}}}),a.register("87",["9","24","25","26","27","28","86","e","f","a","1c","2e","2f"],function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o;return{setters:[function(a){b=a.default},function(a){c=a.GameBoard},function(a){d=a},function(a){e=a.PopupManager},function(a){f=a.Storage},function(a){g=a.GameView},function(a){h=a.EncyclopediaItemView},function(a){i=a.default},function(a){j=a.default},function(a){k=a.default},function(a){l=a.SoundService},function(a){m=a.LevelSelectorView},function(a){n=a.EncyclopediaSelectorView}],execute:function(){"use strict";o=function(){function a(){var b=this;j(this,a),l.initialize(),this.storage=new f,this.popupManager=new e(k.select(".popup"),function(){return b.gameBoard.loadNextLevel()}),this.views=this.createViews(),this.gameBoard=null,this.currentEncyclopediaItem=null}return i(a,[{key:"createViews",value:function(){return{levelSelector:new m(this),game:new g(this),encyclopediaSelector:new n(this),encyclopediaItem:new h(this)}}},{key:"setView",value:function(a){return b.has(this.views,a)?(this.currentView=this.views[a],k.select(".top-bar__title").text(this.currentView.title),k.selectAll("."+this.currentView.className).classed("view--hidden",!1),void k.selectAll(".view:not(."+this.currentView.className+")").classed("view--hidden",!0)):void window.console.error("Invalid view: "+a)}},{key:"setEncyclopediaItem",value:function(a){this.currentEncyclopediaItem=a,this.views.encyclopediaItem.resetContent()}},{key:"htmlReady",value:function(){for(var a in this.views)this.views[a].initialize();
-this.setView("game"),window.gameBoard=this.gameBoard}},{key:"createGameBoard",value:function(){var a=this.storage.getCurrentLevelId()||d.levels[1].id;this.gameBoard=new c(k.select("#game svg.game-svg"),k.select("#game svg.blink-svg"),this,this.popupManager,this.storage,a)}},{key:"bindMenuEvents",value:function(){var a=this;this.gameBoard.svg.select(".navigation-controls .level-list").on("click",function(){a.gameBoard.stop(),a.setView("levelSelector")}).on("mouseover",function(){return a.gameBoard.titleManager.displayMessage("SELECT LEVEL")}),this.gameBoard.svg.select(".navigation-controls .encyclopedia").on("click",function(){a.gameBoard.stop(),a.setView("encyclopediaSelector")}).on("mouseover",function(){return a.gameBoard.titleManager.displayMessage("ENCYCLOPEDIA")});var b=this.gameBoard.svg.select(".interface-hint-overlay");this.gameBoard.svg.select(".navigation-controls .help").on("click",function(){return b.classed("hidden",!b.classed("hidden"))}).on("mouseover",function(){return b.classed("hidden",!1)}).on("mouseout",function(){return b.classed("hidden",!0)}),this.gameBoard.svg.select(".navigation-controls .sandbox").on("click",function(){a.gameBoard.loadLevel(d.levels[0].id)}).on("mouseover",function(){return a.gameBoard.titleManager.displayMessage("SANDBOX LEVEL")})}}]),a}(),a("Game",o)}}}),a.register("1",["3","87"],function(a){"use strict";var b,c;return{setters:[function(a){},function(a){b=a}],execute:function(){c=new b.Game,c.htmlReady()}}}),function(a){if("undefined"!=typeof document){var b=document,c="appendChild",d=b.createElement("style");d.type="text/css",b.getElementsByTagName("head")[0][c](d),d[c](b.createTextNode(a))}}("/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}\n/*# sourceMappingURL=__.css.map */")})(function(a){a()});
-//# sourceMappingURL=build.js.map
\ No newline at end of file
diff --git a/config.js b/config.js
deleted file mode 100644
index 8d80a59..0000000
--- a/config.js
+++ /dev/null
@@ -1,178 +0,0 @@
-System.config({
- defaultJSExtensions: true,
- transpiler: "babel",
- babelOptions: {
- "optional": [
- "runtime"
- ]
- },
- paths: {
- "github:*": "jspm_packages/github/*",
- "npm:*": "jspm_packages/npm/*"
- },
-
- map: {
- "babel": "npm:babel-core@5.8.38",
- "babel-runtime": "npm:babel-runtime@5.8.38",
- "clean-css": "npm:clean-css@3.4.27",
- "core-js": "npm:core-js@1.2.7",
- "d3": "github:d3/d3@3.5.17",
- "file-saver": "npm:file-saver@1.3.3",
- "json": "github:systemjs/plugin-json@0.1.2",
- "json-stringify-pretty-compact": "npm:json-stringify-pretty-compact@1.0.4",
- "lodash": "npm:lodash@4.17.4",
- "normalize.css": "github:necolas/normalize.css@3.0.3",
- "soundjs": "github:CreateJS/SoundJS@0.6.2",
- "github:jspm/nodelibs-assert@0.1.0": {
- "assert": "npm:assert@1.4.1"
- },
- "github:jspm/nodelibs-buffer@0.1.1": {
- "buffer": "npm:buffer@5.0.6"
- },
- "github:jspm/nodelibs-events@0.1.1": {
- "events": "npm:events@1.0.2"
- },
- "github:jspm/nodelibs-http@1.7.1": {
- "Base64": "npm:Base64@0.2.1",
- "events": "github:jspm/nodelibs-events@0.1.1",
- "inherits": "npm:inherits@2.0.1",
- "stream": "github:jspm/nodelibs-stream@0.1.0",
- "url": "github:jspm/nodelibs-url@0.1.0",
- "util": "github:jspm/nodelibs-util@0.1.0"
- },
- "github:jspm/nodelibs-https@0.1.0": {
- "https-browserify": "npm:https-browserify@0.0.0"
- },
- "github:jspm/nodelibs-os@0.1.0": {
- "os-browserify": "npm:os-browserify@0.1.2"
- },
- "github:jspm/nodelibs-path@0.1.0": {
- "path-browserify": "npm:path-browserify@0.0.0"
- },
- "github:jspm/nodelibs-process@0.1.2": {
- "process": "npm:process@0.11.10"
- },
- "github:jspm/nodelibs-stream@0.1.0": {
- "stream-browserify": "npm:stream-browserify@1.0.0"
- },
- "github:jspm/nodelibs-url@0.1.0": {
- "url": "npm:url@0.10.3"
- },
- "github:jspm/nodelibs-util@0.1.0": {
- "util": "npm:util@0.10.3"
- },
- "github:jspm/nodelibs-vm@0.1.0": {
- "vm-browserify": "npm:vm-browserify@0.0.4"
- },
- "github:necolas/normalize.css@3.0.3": {
- "css": "github:systemjs/plugin-css@0.1.35"
- },
- "npm:amdefine@1.0.1": {
- "fs": "github:jspm/nodelibs-fs@0.1.2",
- "module": "github:jspm/nodelibs-module@0.1.0",
- "path": "github:jspm/nodelibs-path@0.1.0",
- "process": "github:jspm/nodelibs-process@0.1.2"
- },
- "npm:assert@1.4.1": {
- "assert": "github:jspm/nodelibs-assert@0.1.0",
- "buffer": "github:jspm/nodelibs-buffer@0.1.1",
- "process": "github:jspm/nodelibs-process@0.1.2",
- "util": "npm:util@0.10.3"
- },
- "npm:babel-runtime@5.8.38": {
- "process": "github:jspm/nodelibs-process@0.1.2"
- },
- "npm:buffer@5.0.6": {
- "base64-js": "npm:base64-js@1.2.0",
- "ieee754": "npm:ieee754@1.1.8"
- },
- "npm:clean-css@3.4.27": {
- "buffer": "github:jspm/nodelibs-buffer@0.1.1",
- "commander": "npm:commander@2.8.1",
- "fs": "github:jspm/nodelibs-fs@0.1.2",
- "http": "github:jspm/nodelibs-http@1.7.1",
- "https": "github:jspm/nodelibs-https@0.1.0",
- "os": "github:jspm/nodelibs-os@0.1.0",
- "path": "github:jspm/nodelibs-path@0.1.0",
- "process": "github:jspm/nodelibs-process@0.1.2",
- "source-map": "npm:source-map@0.4.4",
- "url": "github:jspm/nodelibs-url@0.1.0",
- "util": "github:jspm/nodelibs-util@0.1.0"
- },
- "npm:commander@2.8.1": {
- "child_process": "github:jspm/nodelibs-child_process@0.1.0",
- "events": "github:jspm/nodelibs-events@0.1.1",
- "fs": "github:jspm/nodelibs-fs@0.1.2",
- "graceful-readlink": "npm:graceful-readlink@1.0.1",
- "path": "github:jspm/nodelibs-path@0.1.0",
- "process": "github:jspm/nodelibs-process@0.1.2"
- },
- "npm:core-js@1.2.7": {
- "fs": "github:jspm/nodelibs-fs@0.1.2",
- "path": "github:jspm/nodelibs-path@0.1.0",
- "process": "github:jspm/nodelibs-process@0.1.2",
- "systemjs-json": "github:systemjs/plugin-json@0.1.2"
- },
- "npm:core-util-is@1.0.2": {
- "buffer": "github:jspm/nodelibs-buffer@0.1.1"
- },
- "npm:graceful-readlink@1.0.1": {
- "fs": "github:jspm/nodelibs-fs@0.1.2"
- },
- "npm:https-browserify@0.0.0": {
- "http": "github:jspm/nodelibs-http@1.7.1"
- },
- "npm:inherits@2.0.1": {
- "util": "github:jspm/nodelibs-util@0.1.0"
- },
- "npm:os-browserify@0.1.2": {
- "os": "github:jspm/nodelibs-os@0.1.0"
- },
- "npm:path-browserify@0.0.0": {
- "process": "github:jspm/nodelibs-process@0.1.2"
- },
- "npm:process@0.11.10": {
- "assert": "github:jspm/nodelibs-assert@0.1.0",
- "fs": "github:jspm/nodelibs-fs@0.1.2",
- "vm": "github:jspm/nodelibs-vm@0.1.0"
- },
- "npm:punycode@1.3.2": {
- "process": "github:jspm/nodelibs-process@0.1.2"
- },
- "npm:readable-stream@1.1.14": {
- "buffer": "github:jspm/nodelibs-buffer@0.1.1",
- "core-util-is": "npm:core-util-is@1.0.2",
- "events": "github:jspm/nodelibs-events@0.1.1",
- "inherits": "npm:inherits@2.0.1",
- "isarray": "npm:isarray@0.0.1",
- "process": "github:jspm/nodelibs-process@0.1.2",
- "stream-browserify": "npm:stream-browserify@1.0.0",
- "string_decoder": "npm:string_decoder@0.10.31"
- },
- "npm:source-map@0.4.4": {
- "amdefine": "npm:amdefine@1.0.1",
- "process": "github:jspm/nodelibs-process@0.1.2"
- },
- "npm:stream-browserify@1.0.0": {
- "events": "github:jspm/nodelibs-events@0.1.1",
- "inherits": "npm:inherits@2.0.1",
- "readable-stream": "npm:readable-stream@1.1.14"
- },
- "npm:string_decoder@0.10.31": {
- "buffer": "github:jspm/nodelibs-buffer@0.1.1"
- },
- "npm:url@0.10.3": {
- "assert": "github:jspm/nodelibs-assert@0.1.0",
- "punycode": "npm:punycode@1.3.2",
- "querystring": "npm:querystring@0.2.0",
- "util": "github:jspm/nodelibs-util@0.1.0"
- },
- "npm:util@0.10.3": {
- "inherits": "npm:inherits@2.0.1",
- "process": "github:jspm/nodelibs-process@0.1.2"
- },
- "npm:vm-browserify@0.0.4": {
- "indexof": "npm:indexof@0.0.1"
- }
- }
-});
diff --git a/eslint.config.js b/eslint.config.js
new file mode 100644
index 0000000..f4eac19
--- /dev/null
+++ b/eslint.config.js
@@ -0,0 +1,79 @@
+import js from '@eslint/js';
+import tseslint from '@typescript-eslint/eslint-plugin';
+import tsparser from '@typescript-eslint/parser';
+
+export default [
+ js.configs.recommended,
+ {
+ ignores: [
+ // Ignore .js spec files (not in tsconfig)
+ 'src/**/*.spec.js',
+ ],
+ },
+ {
+ files: ['src/**/*.{js,ts}'],
+ languageOptions: {
+ parser: tsparser,
+ parserOptions: {
+ ecmaVersion: 2020,
+ sourceType: 'module',
+ project: './tsconfig.json',
+ },
+ globals: {
+ // ES2020 + Browser + Node
+ console: 'readonly',
+ window: 'readonly',
+ document: 'readonly',
+ process: 'readonly',
+ __dirname: 'readonly',
+ __filename: 'readonly',
+ module: 'readonly',
+ require: 'readonly',
+ // Test globals
+ describe: 'readonly',
+ it: 'readonly',
+ expect: 'readonly',
+ beforeEach: 'readonly',
+ afterEach: 'readonly',
+ vi: 'readonly',
+ jasmine: 'readonly',
+ spyOn: 'readonly',
+ },
+ },
+ plugins: {
+ '@typescript-eslint': tseslint,
+ },
+ rules: {
+ ...tseslint.configs.recommended.rules,
+ ...tseslint.configs['recommended-requiring-type-checking'].rules,
+ '@typescript-eslint/no-explicit-any': 'error',
+ '@typescript-eslint/no-unsafe-assignment': 'error',
+ '@typescript-eslint/no-unsafe-member-access': 'error',
+ '@typescript-eslint/no-unsafe-call': 'error',
+ '@typescript-eslint/no-unsafe-return': 'error',
+ '@typescript-eslint/explicit-function-return-type': ['warn', {
+ allowExpressions: true,
+ allowTypedFunctionExpressions: true,
+ }],
+ '@typescript-eslint/strict-boolean-expressions': 'warn',
+ '@typescript-eslint/no-unused-vars': ['error', {
+ argsIgnorePattern: '^_',
+ varsIgnorePattern: '^_',
+ }],
+ 'comma-dangle': ['warn', 'always-multiline'],
+ 'no-var': 'error',
+ 'quotes': ['warn', 'single'],
+ },
+ },
+ {
+ files: ['src/**/*.js'],
+ rules: {
+ '@typescript-eslint/no-explicit-any': 'off',
+ '@typescript-eslint/no-unsafe-assignment': 'off',
+ '@typescript-eslint/no-unsafe-member-access': 'off',
+ '@typescript-eslint/no-unsafe-call': 'off',
+ '@typescript-eslint/no-unsafe-return': 'off',
+ '@typescript-eslint/explicit-function-return-type': 'off',
+ },
+ },
+];
diff --git a/index.html b/index.html
index af1926d..209c6b2 100644
--- a/index.html
+++ b/index.html
@@ -500,7 +500,7 @@
-
+