svg-path-simplify 0.2.7 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- !function(e){"use strict";function t(e,t,a="red",l="1%",n="1",r="",s=!0,i="",o=""){Array.isArray(t)&&(t={x:t[0],y:t[1]});let u=`<circle class="${o}" opacity="${n}" id="${i}" cx="${t.x}" cy="${t.y}" r="${l}" fill="${a}">\n <title>${r}</title></circle>`;if(!s)return u;e.insertAdjacentHTML("beforeend",u)}function a(e,t="",a="green",l="1%",n="1",r=!0){let s=`<path d="${t}" fill="none" stroke="${a}" stroke-width="${l}" stroke-opacity="${n}" /> `;if(!r)return s;e.insertAdjacentHTML("beforeend",s)}const{abs:l,acos:n,asin:r,atan:s,atan2:i,ceil:o,cos:u,exp:p,floor:h,log:y,hypot:c,max:x,min:f,pow:g,random:m,round:d,sin:v,sqrt:M,tan:b,PI:A}=Math,{abs:w,acos:C,asin:k,atan:L,atan2:P,ceil:E,cos:S,exp:T,floor:I,log:D,max:F,min:$,pow:z,random:q,round:j,sin:Q,sqrt:B,tan:N,PI:G}=Math;function U(e,t,a=!1){let l=P(t.y-e.y,t.x-e.x);return a&&l<0&&(l+=2*Math.PI),l}function O(e,t,a,l=!1){let n=Math.atan2(t.y-e.y,t.x-e.x),r=Math.atan2(a.y-e.y,a.x-e.x),s=r-n;s=(e=>{let t=e%(2*Math.PI);return t>Math.PI?t-=2*Math.PI:t<=-Math.PI&&(t+=2*Math.PI),t})(s),l&&(s=2*Math.PI-Math.abs(s));let i=180/Math.PI;return{startAngle:n,endAngle:r,deltaAngle:s,startAngleDeg:n*i,endAngleDeg:r*i,deltaAngleDeg:s*i}}function Z(e=null,t=null,a=null,l=null,n=!0,r=!1,s=!1){let i,o,u,p,h,y={};if(!(e&&t&&a&&l))return s&&console.warn("points missing"),!1;try{if(i=(l.y-a.y)*(t.x-e.x)-(l.x-a.x)*(t.y-e.y),0===i)return!1}catch{return s&&console.warn("!catch",e,t,"p3:",a,"p4:",l),!1}o=e.y-a.y,u=e.x-a.x,p=(l.x-a.x)*o-(l.y-a.y)*u,h=(t.x-e.x)*o-(t.y-e.y)*u,o=p/i,u=h/i,y={x:e.x+o*(t.x-e.x),y:e.y+o*(t.y-e.y)};let c=!1;return o>0&&o<1&&u>0&&u<1&&(c=!0),!n&&r&&(o>0&&u<0||o<0&&u>0)?(c=!1,!1):!(n&&!c)&&y}function H(e,t,a,l=!1){const n=(e,t,a)=>e>=t&&e<=a||e<=t&&e>=a;let r=!1;if((!l||!a.bottom)&&(a.left>e.x||a.top>e.y||a.bottom<e.y||a.right<e.x))return!1;let s=t.length;for(let a=s-1,l=0;l<s;a=l,l++){const s=t[a],i=t[l];if(e.x==s.x&&e.y==s.y||e.x==i.x&&e.y==i.y)return!0;if(s.y==i.y&&e.y==s.y&&n(e.x,s.x,i.x))return!0;if(n(e.y,s.y,i.y)){if(e.y==s.y&&i.y>=s.y||e.y==i.y&&s.y>=i.y)continue;const t=(s.x-e.x)*(i.y-e.y)-(i.x-e.x)*(s.y-e.y);if(0==t)return!0;s.y<i.y==t>0&&(r=!r)}}return!!r}function R(e,t,a,l=!1){let n={x:(t.x-e.x)*a+e.x,y:(t.y-e.y)*a+e.y};return l&&(n.angle=U(e,t),n.angle<0&&(n.angle+=2*G)),n}function W(e,t=.5,a=!1,l=!1,n=!1){let r;return Array.isArray(e[0])&&(e=e.map(e=>({x:e[0],y:e[1]})),n=!0),r=e.length>2?((e,t,a=!1)=>{let n=4===e.length,r=e[0],s=e[1],i=n?e[2]:e[1],o=e[e.length-1],u={x:0,y:0};if(a||l){let e,a,p,h,y,c=r.x===s.x&&r.y===s.y,x=o.x===i.x&&o.y===i.y;0!==t||c?1!==t||x?(c&&(t+=1e-7),x&&(t-=1e-7),e=R(r,s,t),n?(a=R(s,i,t),p=R(i,o,t),h=R(e,a,t),y=R(a,p,t),u=R(h,y,t),u.angle=U(h,y),l&&(u.cpts=[a,p,h,y])):(a=R(r,s,t),p=R(s,o,t),u=R(a,p,t),u.angle=U(a,p),l&&(u.cpts=[a,p]))):(u.x=o.x,u.y=o.y,u.angle=U(i,o)):(u.x=r.x,u.y=r.y,u.angle=U(r,s))}else{let e=1-t;u=n?{x:e**3*r.x+3*e**2*t*s.x+3*e*t**2*i.x+t**3*o.x,y:e**3*r.y+3*e**2*t*s.y+3*e*t**2*i.y+t**3*o.y}:{x:e*e*r.x+2*e*t*s.x+t**2*o.x,y:e*e*r.y+2*e*t*s.y+t**2*o.y}}return u})(e,t,a):R(e[0],e[1],t,a),a&&r.angle<0&&(r.angle+=2*G),n?[r.x,r.y]:r}function V(e){let t=[],a={x:e[0].values[0],y:e[0].values[1]};return e.forEach(e=>{let{type:l,values:n}=e;if(n.length){let e=n.length>1?{x:n[n.length-2],y:n[n.length-1]}:"V"===l?{x:a.x,y:n[0]}:{x:n[0],y:a.y};t.push(e),a=e}}),t}function J(e,t,a,l,n,r,s,i,o){const u=(e,t,a,l)=>P(l-t,a-e);let p={cx:0,cy:0,rx:a=w(a),ry:l=w(l),startAngle:0,endAngle:0,deltaAngle:0,clockwise:s,xAxisRotation:n,largeArc:r,sweep:s};if(0==a||0==l)throw Error("rx and ry can not be 0");if(a===l){let a=Math.abs(i-e),l=Math.abs(o-t),n=a,r=Math.min(e,i),u=Math.min(t,o),h=.5*Math.PI;if(0===a&&l||0===l&&a)return n=0===a&&l?l/2:a/2,p.rx=n,p.ry=n,0===a&&l?(p.cx=e,p.cy=u+l/2,p.startAngle=t>o?h:-h,p.endAngle=t>o?-h:h,p.deltaAngle=s?Math.PI:-Math.PI):0===l&&a&&(p.cx=r+a/2,p.cy=t,p.startAngle=e>i?Math.PI:0,p.endAngle=e>i?-Math.PI:Math.PI,p.deltaAngle=s?Math.PI:-Math.PI),p}let h,y,c=a===l?0:n*G/180,x=c?Math.sin(c):0,f=c?Math.cos(c):1,g=(e-i)/2,m=(t-o)/2,d=(e+i)/2,v=(t+o)/2,M=c?f*g+x*m:g,b=c?f*m-x*g:m,A=M*M/(a*a)+b*b/(l*l);A>1&&(a*=Math.sqrt(A),l*=Math.sqrt(A),p.rx=a,p.ry=l);let C=a*l,k=a*b,L=l*M,E=k**2+L**2;if(!E)throw Error("start point can not be same as end point");let S=Math.sqrt(Math.abs((C*C-E)/E));r==s&&(S=-S);let T=S*k/l,I=-S*L/a;h=c?f*T-x*I+d:d+T,y=c?x*T+f*I+v:v+I,p.cy=y,p.cx=h;let D=u(h,y,e,t),F=u(h,y,i,o);!s&&F>D&&(F-=2*Math.PI),s&&D>F&&(F=F<=0?F+2*Math.PI:F);let $=F-D;return p.startAngle=D,p.endAngle=F,p.deltaAngle=$,p}function X(e,t,a,l=0,n=!1){return l?(l=n?l/180*Math.PI:l,{x:t+(e.x-t)*Math.cos(l)-(e.y-a)*Math.sin(l),y:a+(e.x-t)*Math.sin(l)+(e.y-a)*Math.cos(l)}):e}function Y(e,t,a,l,n,r=0,s=!0,i=!1){if(n=i?n*G/180:n,r=i?r*G/180:r,r=a!==l&&r!==2*G?r:0,s&&a!==l){let e=L(N(n=r?n-r:n)*(a/l));n=S(n)<0?e+G:e}let o=e+a*S(n),u=t+l*Q(n),p={x:o,y:u};return r&&(p.x=e+(o-e)*S(r)-(u-t)*Q(r),p.y=t+(o-e)*Q(r)+(u-t)*S(r)),p}function _(e,t,a){if(t===a||e%G*.5==0)return e;let l=L(N(e)*(t/a));return l=S(e)<0?l+G:l,l}function K(e=null,t=[]){e||(e=t[0],t=t.slice(1,t.length));let a=t.length,l=t[a-1],n=t[0],r=3===a?t[1]:n,s=Math.min(e.y,l.y),i=Math.min(e.x,l.x),o=Math.max(e.x,l.x),u=Math.max(e.y,l.y);return!(n.y>=s&&n.y<=u&&r.y>=s&&r.y<=u&&n.x>=i&&n.x<=o&&r.x>=i&&r.x<=o)}function ee(e,{addExtremes:t=!0,addSemiExtremes:a=!1}={}){let l=4===e.length?function(e,t,a,l,{addExtremes:n=!0,addSemiExtremes:r=!1}={}){const s=e=>{const t=Math.PI/4,a=Math.cos(t),l=Math.sin(t);return{x:e.x*a-e.y*l,y:e.x*l+e.y*a}};r&&(e=s(e),t=s(t),a=s(a),l=s(l));let[i,o,u,p,h,y,c,x]=[e.x,e.y,t.x,t.y,a.x,a.y,l.x,l.y],f=Math.min(e.y,l.y),g=Math.min(e.x,l.x),m=Math.max(e.x,l.x),d=Math.max(e.y,l.y);if(t.y>=f&&t.y<=d&&a.y>=f&&a.y<=d&&t.x>=g&&t.x<=m&&a.x>=g&&a.x<=m)return[];let v,M,b,A,w,C,k,L,P=[];for(let e=0;e<2;++e)if(0==e?(M=6*i-12*u+6*h,v=-3*i+9*u-9*h+3*c,b=3*u-3*i):(M=6*o-12*p+6*y,v=-3*o+9*p-9*y+3*x,b=3*p-3*o),Math.abs(v)<1e-8){if(Math.abs(M)<1e-8)continue;A=-b/M,0<A&&A<1&&P.push(A)}else k=M*M-4*b*v,k<0?Math.abs(k)<1e-8&&(A=-M/(2*v),0<A&&A<1&&P.push(A)):(L=Math.sqrt(k),w=(-M+L)/(2*v),0<w&&w<1&&P.push(w),C=(-M-L)/(2*v),0<C&&C<1&&P.push(C));let E=P.length;for(;E--;)A=P[E];return P}(e[0],e[1],e[2],e[3],{addExtremes:t,addSemiExtremes:a}):function(e,t,a,{addExtremes:l=!0,addSemiExtremes:n=!1}={}){const r=e=>{const t=-Math.PI/4,a=Math.cos(t),l=Math.sin(t);return{x:e.x*a-e.y*l,y:e.x*l+e.y*a}};n&&(e=r(e),t=r(t),a=r(a));let s,i,o,u=Math.min(e.y,a.y),p=Math.min(e.x,a.x),h=Math.max(e.x,a.x),y=Math.max(e.y,a.y);if(t.y>=u&&t.y<=y&&t.x>=p&&t.x<=h)return[];let[c,x,f,g,m,d]=[e.x,e.y,t.x,t.y,a.x,a.y],v=[];for(let e=0;e<2;++e)s=0==e?c-2*f+m:x-2*g+d,i=0==e?-2*c+2*f:-2*x+2*g,Math.abs(s)>1e-12&&(o=-i/(2*s),o>0&&o<1&&v.push(o));return v}(e[0],e[1],e[2],{addExtremes:t,addSemiExtremes:a});return l}function te(e,t){const a=(e,t,a,l,n,r)=>{var s=Math.cos(r),i=Math.sin(r),o=l*Math.cos(e),u=n*Math.sin(e);return{x:t+s*o-i*u,y:a+i*o+s*u}};let l,n,r,s,i,o=J(e.x,e.y,t[0],t[1],t[2],t[3],t[4],t[5],t[6]),{rx:u,ry:p,cx:h,cy:y,endAngle:c,deltaAngle:x}=o,f=t[2],g={x:t[5],y:t[6]},m=[g],d=f*Math.PI/180,v=Math.tan(d);i=Math.atan2(-p*v,u);let M=i,b=i+Math.PI,A=Math.atan2(p,u*v),w=A+Math.PI,C=[e.x,g.x],k=[e.y,g.y],L=Math.min(...C),P=Math.max(...C),E=Math.min(...k),S=Math.max(...k),T=a(c-.001*x,h,y,u,p,d),I=a(c-.999*x,h,y,u,p,d);return(T.x>P||I.x>P)&&(l=a(M,h,y,u,p,d),m.push(l)),(T.x<L||I.x<L)&&(n=a(b,h,y,u,p,d),m.push(n)),(T.y<E||I.y<E)&&(s=a(w,h,y,u,p,d),m.push(s)),(T.y>S||I.y>S)&&(r=a(A,h,y,u,p,d),m.push(r)),m}function ae(e=[],t=[]){let a=e.length,l=4===a;t.length||(t=[0]);let n=t.length,r=[];for(let s=0;s<n;s++){let n=t[s],i=n?[]:e.slice(0);if(n)for(let t=0;t<a;t++){let a=e[t];i.push(X(a,0,0,n))}let o=l?le(...i):ne(...i);r.push(...o)}return r=[...new Set(r)].sort(),r}function le(e,t,a,l){if(!K(e,[t,a,l]))return[];let n,r,s,i,o,u,p,h,[y,c,x,f,g,m,d,v]=[e.x,e.y,t.x,t.y,a.x,a.y,l.x,l.y],M=[],b=1e-8;for(let e=0;e<2;++e)if(0==e?(r=6*y-12*x+6*g,n=-3*y+9*x-9*g+3*d,s=3*x-3*y):(r=6*c-12*f+6*m,n=-3*c+9*f-9*m+3*v,s=3*f-3*c),Math.abs(n)<b){if(Math.abs(r)<b)continue;i=-s/r,i>0&&i<1&&M.push(i)}else p=r*r-4*s*n,p<0?Math.abs(p)<b&&(i=-r/(2*n),i>0&&i<1&&M.push(i)):(h=Math.sqrt(p),o=(-r+h)/(2*n),o>0&&o<1&&M.push(o),u=(-r-h)/(2*n),u>0&&u<1&&M.push(u));let A=M.length;for(;A--;)i=M[A];return[...new Set(M)].sort()}function ne(e,t,a){if(!K(e,[t,a]))return[];let l,n,r,[s,i,o,u,p,h]=[e.x,e.y,t.x,t.y,a.x,a.y],y=[];for(let e=0;e<2;++e)l=0==e?s-2*o+p:i-2*u+h,n=0==e?-2*s+2*o:-2*i+2*u,Math.abs(l)>1e-12&&(r=-n/(2*l),r>0&&r<1&&y.push(r));return[...new Set(y)].sort()}function re(e,t=.001){let a=Math.PI/2,l=a/2;return!(Math.abs(e/a-Math.round(e/a))<t)&&Math.abs(e/l-Math.round(e/l))<t}function se(e,t,a=!1){let l=a?t[0]-e[0]:t.x-e.x,n=a?t[1]-e[1]:t.y-e.y;return B(l*l+n*n)}function ie(e,t){let a=t.x-e.x,l=t.y-e.y;return a*a+l*l}function oe(e,t){return Math.abs(t.x-e.x)+Math.abs(t.y-e.y)}function ue(e,t){return.5*(Math.abs(t.x-e.x)+Math.abs(t.y-e.y))}function pe(e,t=48){if(!Array.isArray(e)||e.length<=t)return e;let a=e.length,l=a/t,n=[];for(let a=0;a<t;a++)n.push(e[Math.floor(a*l)]);let r=n.length;return n[r-1]!==e[a-1]&&(n[r-1]=e[a-1]),n}function he(e){let t=[],a=[e[0]],l=e.length;for(let n=1;n<l;n++){let l=e[n];"M"!==l.type&&"m"!==l.type||(t.push(a),a=[]),a.push(l)}return a.length&&t.push(a),t}function ye(e,t){let a,l,n,r,s,i,o=[],u=[],p=e[0],h=e[1],y=e[e.length-2],c=e[e.length-1];return 4===e.length?(a=W([p,h],t),l=W([h,y],t),n=W([y,c],t),r=W([a,l],t),s=W([l,n],t),i=W([r,s],t),o.push({x:p.x,y:p.y},{x:a.x,y:a.y},{x:r.x,y:r.y},{x:i.x,y:i.y}),u.push({x:i.x,y:i.y},{x:s.x,y:s.y},{x:n.x,y:n.y},{x:c.x,y:c.y})):3===e.length?(l=W([p,h],t),n=W([h,c],t),i=W([l,n],t),o.push({x:p.x,y:p.y},{x:l.x,y:l.y},{x:i.x,y:i.y}),u.push({x:i.x,y:i.y},{x:n.x,y:n.y},{x:c.x,y:c.y})):2===e.length&&(l=W([p,c],t),o.push({x:p.x,y:p.y},{x:l.x,y:l.y}),u.push({x:l.x,y:l.y},{x:c.x,y:c.y})),[o,u]}function ce(e,t,{tMin:a=0,tMax:l=1,addExtremes:n=!0,addSemiExtremes:r=!1}={}){let s=[],i=6===t.length?"C":"Q",o={x:t[0],y:t[1]},u="C"===i?{x:t[2],y:t[3]}:o,p={x:t[4],y:t[5]},h=0;let y="C"===i?[e,o,u,p]:[e,o,p],c=n?ee(y,{addExtremes:n,addSemiExtremes:!1}):[],x=r?ee(y,{addExtremes:n,addSemiExtremes:r}):[],f=Array.from(new Set([...c,...x])).sort();if(f=f.filter(e=>e>0&&e<1),f.length){let a=function(e,t,a,l=!0){let n=[];if(!a.length)return!1;let r,s,i,o=t.length,u={x:t[o-2],y:t[o-1]};2===t.length?i=[e,u]:4===t.length?(r={x:t[0],y:t[1]},i=[e,r,u]):6===t.length&&(r={x:t[0],y:t[1]},s={x:t[2],y:t[3]},i=[e,r,s,u]);if(a.length)if(1===a.length){let e=ye(i,a[0]),t=e[0],l=e[1];n.push(t,l)}else{let e=a[0],t=ye(i,e),l=t[0];n.push(l),i=t[1];for(let t=1;t<a.length;t++){e=a[t-1];let l=ye(i,(a[t]-e)/(1-e));n.push(l[0]),t===a.length-1&&n.push(l[l.length-1]),i=l[1]}}if(l){let e,t,a=[];return n.forEach(l=>{e={type:"",values:[]},l.shift(),t=l.map(e=>Object.values(e)).flat(),e.values=t,3===l.length?e.type="C":2===l.length?e.type="Q":1===l.length&&(e.type="L"),a.push(e)}),a}return n}(e,t,f);s.push(...a),h+=a.length}else s.push({type:i,values:t});return{pathData:s,count:h}}function xe(e,{tMin:t=0,tMax:a=1,addExtremes:l=!0,addSemiExtremes:n=!1}={}){let r=[e[0]],s={x:e[0].values[0],y:e[0].values[1]},i={x:e[0].values[0],y:e[0].values[1]},o=e.length;for(let u=1;o&&u<o;u++){let o=e[u],{type:p,values:h}=o,y=h.slice(-2);if(y[0],y[1],"C"!==p&&"Q"!==p)r.push(o);else if((l||n)&&("C"===p||"Q"===p)){let e=ce(s,h,{tMin:t,tMax:a,addExtremes:l,addSemiExtremes:n}).pathData;r.push(...e)}s={x:y[0],y:y[1]},"z"===p.toLowerCase()?s=i:"M"===p&&(i={x:y[0],y:y[1]})}return r}function fe(e,t=-1){let a=e.map(e=>e.x),l=e.map(e=>e.y),n=Math.min(...a),r=Math.max(...a),s=Math.min(...l),i=Math.max(...l),o={x:n,left:n,right:r,y:s,top:s,bottom:i,width:r-n,height:i-s};if(t>-1)for(let e in o)o[e]=+o[e].toFixed(t);return o}function ge(e){let t=[];return e.forEach(e=>{let a=function(e){let t=function(e){let t=[];for(let a=0;a<e.length;a++){let l=e[a],n=a>0?e[a-1]:e[a],{type:r,values:s}=l,i={x:n.values[n.values.length-2],y:n.values[n.values.length-1]},o=s.length?{x:s[s.length-2],y:s[s.length-1]}:"",u=s.length?{x:s[0],y:s[1]}:"";switch(r){case"A":if("function"!=typeof arcToBezier){let e=se(i,o)/2,a=R(i,o,.5),l=Y(a.x,a.y,e,e,0),n=Y(a.x,a.y,e,e,Math.PI);t.push(l,n,o);break}arcToBezier(i,s).forEach(e=>{let a=e.values,l={x:a[0],y:a[1]},n={x:a[2],y:a[3]},r={x:a[4],y:a[5]};t.push(l,n,r)});break;case"C":let e={x:s[2],y:s[3]};t.push(u,e);break;case"Q":t.push(u)}"z"!==r.toLowerCase()&&t.push(o)}return t}(e),a=fe(t);return a}(e);t.push(a)}),t}function me(e,t){let[a,l,n,r,s,i]=[e.x,e.y,e.width,e.height,e.x+e.width,e.y+e.height],[o,u,p,h,y,c]=[t.x,t.y,t.width,t.height,t.x+t.width,t.y+t.height],x=!1;return n*r!=p*h&&n*r>p*h&&a<o&&s>y&&l<u&&i>c&&(x=!0),x}function de(e,t=9){let a=0,l=[],n=he(e),r=n.length>1,s=[];if(r){let e=ge(n);e.forEach(function(t,a){for(let a=0;a<e.length;a++){let l=e[a];if(t!=l){me(t,l)&&s.push(a)}}})}return n.forEach((e,t)=>{l=[];let n=0,r=0,i=1,o=[];e.forEach(function(t,a){let[r,s]=[t.type,t.values],i=s.length;if(s.length){let u=(a>0?e[a-1]:e[0]).values,p=u.length,h={x:u[p-2],y:u[p-1]},y={x:s[i-2],y:s[i-1]};if("C"===r||"Q"===r){let e={x:s[0],y:s[1]};o="C"===r?[h,e,{x:s[2],y:s[3]},y]:[h,e,y];let t=Math.abs(function(e,t=!1){let a,[l,n,r,s]=[e[0],e[1],e[2],e[e.length-1]];if(e.length<3)return 0;3===e.length&&(n={x:1*e[0].x/3+2*e[1].x/3,y:1*e[0].y/3+2*e[1].y/3},r={x:1*e[2].x/3+2*e[1].x/3,y:1*e[2].y/3+2*e[1].y/3});return a=3*(l.x*(-2*n.y-r.y+3*s.y)+n.x*(2*l.y-r.y-s.y)+r.x*(l.y+n.y-2*s.y)+s.x*(-3*l.y+n.y+2*r.y))/20,t?Math.abs(a):a}(o));n+=t,l.push(h,y)}else if("A"===r){let e=J(h.x,h.y,t.values[0],t.values[1],t.values[2],t.values[3],t.values[4],y.x,y.y),{cx:a,cy:r,rx:s,ry:i,startAngle:o,endAngle:u,deltaAngle:p}=e,c=Math.abs(function(e,t,a,l){const n=Math.PI*e*t;let r=(l-a+2*Math.PI)%(2*Math.PI);if(e===t)return n*(r/(2*Math.PI));const s=a=>Math.atan2(e*Math.sin(a),t*Math.cos(a));return a=s(a),l=s(l),r=(l-a+2*Math.PI)%(2*Math.PI),n*(r/(2*Math.PI))}(s,i,o,u));c-=Math.abs(ve([h,{x:a,y:r},y])),l.push(h,y),n+=c}else l.push(h,y)}});let u=ve(l);-1!==s.indexOf(t)&&(i=-1),r=u<0&&n<0?(Math.abs(n)-Math.abs(u))*i:(Math.abs(n)+Math.abs(u))*i,a+=r}),a}function ve(e,t=!1){let a=0,l=e.length;for(let t=0;l&&t<l;t++){a+=e[t].x*e[t===e.length-1?0:t+1].y*.5-e[t===e.length-1?0:t+1].x*e[t].y*.5}return t&&(a=Math.abs(a)),a}function Me(e,t=0){t=parseFloat(t);let a=e.length,l=t>1,n=!l&&!t,r="",s=l?"\n":n?"":" ",i=n?"":" ";r=`${e[0].type}${i}${e[0].values.join(" ")}${s}`;for(let t=1;t<a;t++){let a=e[t-1],l=e[t],{type:o,values:u}=l;if(!n||"A"!==o&&"a"!==o||(u=[u[0],u[1],u[2],`${u[3]}${u[4]}${u[5]}`,u[6]]),o=n&&a.type===l.type&&"m"!==l.type.toLowerCase()||n&&"M"===a.type&&"L"===l.type?" ":l.type,n){let e="",t=!1;for(let a=0,l=u.length;a<l;a++){let l=u[a],n=l.toString(),r=n.includes(".")&&Math.abs(l)<1;r&&t&&(n=n.replace(/^0\./,".")),!(a>0)||t&&r||(e+=" "),e+=n,t=r}r+=`${o}${i}${e}${s}`}else r+=`${o}${i}${u.join(" ")}${s}`}return n&&(r=r.replace(/ 0\./g," .").replace(/ -/g,"-").replace(/-0\./g,"-.").replace(/Z/g,"z")),r}function be(e,l,n=0,r=1,s=!1){const i=(e,t,a,l,n)=>{let r=1-n;return{x:3*r*r*(t.x-e.x)+6*r*n*(a.x-t.x)+3*n*n*(l.x-a.x),y:3*r*r*(t.y-e.y)+6*r*n*(a.y-t.y)+3*n*n*(l.y-a.y)}};let o=[e,l],u=ue(e.p0,e.p)>ue(l.p0,l.p),p=JSON.parse(JSON.stringify(e)),h=JSON.parse(JSON.stringify(l)),y=Z(p.p0,p.cp1,h.p,h.cp2,!1);if(!y)return o;if(u){let t={p0:{x:e.p.x,y:e.p.y},cp1:{x:e.cp2.x,y:e.cp2.y},cp2:{x:e.cp1.x,y:e.cp1.y},p:{x:e.p0.x,y:e.p0.y}};e={p0:{x:l.p.x,y:l.p.y},cp1:{x:l.cp2.x,y:l.cp2.y},cp2:{x:l.cp1.x,y:l.cp1.y},p:{x:l.p0.x,y:l.p0.y}},l=t}let c=(e,t)=>({x:e.x-t.x,y:e.y-t.y}),x=(e,t)=>({x:e.x*t,y:e.y*t}),f=(e,t)=>e.x*t.x+e.y*t.y,g=l.p0,m=i(l.p0,l.cp1,l.cp2,l.p,0),d=f(c(e.p0,g),m)/f(m,m),v=W([l.p0,l.cp1,l.cp2,l.p],d),M=i(l.p0,l.cp1,l.cp2,l.p,d);d-=f(c(v,e.p0),M)/f(M,M);let b=W([l.p0,l.cp1,l.cp2,l.p],d),A=l.p,w=i(l.p0,l.cp1,l.cp2,l.p,d),C=i(l.p0,l.cp1,l.cp2,l.p,1),k=1-d,L=(P=b,E=x(w,k/3),{x:P.x+E.x,y:P.y+E.y});var P,E;let S=c(A,x(C,k/3)),T={p0:b,cp1:L,cp2:S,p:A,t0:d};u&&(T={p0:A,cp1:S,cp2:L,p:b,t0:d});let I=.5*(1-d),D=W([T.p0,T.cp1,T.cp2,T.p],I,!1,!0),F=D.cpts[2],$=Z(D,F,T.p0,y,!1),z=Z(D,F,T.p,y,!1),q=R(T.p0,$,1.333),j=R(T.p,z,1.333);if(Z(p.p0,q,h.p,j,!0))return o;s&&t(markers,D,"purple"),T.cp1=q,T.cp2=j;let Q=ue(p.p0,T.p0)+ue(h.p,T.p);if(T.p0=p.p0,T.p=h.p,T.extreme=h.extreme,T.corner=h.corner,T.dimA=h.dimA,T.directionChange=h.directionChange,T.type="C",T.values=[T.cp1.x,T.cp1.y,T.cp2.x,T.cp2.y,T.p.x,T.p.y],Q<n){let t=u?1+d:Math.abs(d),l=1+Math.abs(d);if(t=u?1+d:Math.abs(d)/l,ue(W([T.p0,T.cp1,T.cp2,T.p],t),e.p)>n*r)return o;let i=de([{type:"M",values:[p.p0.x,p.p0.y]},{type:"C",values:[p.cp1.x,p.cp1.y,p.cp2.x,p.cp2.y,p.p.x,p.p.y]},{type:"C",values:[h.cp1.x,h.cp1.y,h.cp2.x,h.cp2.y,h.p.x,h.p.y]}]),y=[{type:"M",values:[T.p0.x,T.p0.y]},{type:"C",values:[T.cp1.x,T.cp1.y,T.cp2.x,T.cp2.y,T.p.x,T.p.y]}],c=de(y),x=Math.abs(c/i-1);if(T.error=5*x*r,s){let e=Me(y);a(markers,e,"orange")}x<.05*r&&(o=[T])}return o}function Ae(e,{keepExtremes:t=!0,keepInflections:a=!0,keepCorners:l=!0,extrapolateDominant:n=!0,tolerance:r=1}={}){let s=[e[0]],i=e.length;for(let n=2;i&&n<=i;n++){let o=e[n-1],u=n<i?e[n]:null,p=u?.type||null,{type:h,values:y,p0:c,p:x,cp1:f=null,cp2:g=null,extreme:m=!1,directionChange:d=!1,corner:v=!1,dimA:M=0}=o;if("C"===h&&"C"===p)if(l&&v||t&&m)s.push(o);else{let p=we(o,u,{tolerance:r}),h=0;
1
+ !function(e){"use strict";function t(e,t,a="red",l="1%",n="1",r="",s=!0,i="",o=""){Array.isArray(t)&&(t={x:t[0],y:t[1]});let u=`<circle class="${o}" opacity="${n}" id="${i}" cx="${t.x}" cy="${t.y}" r="${l}" fill="${a}">\n <title>${r}</title></circle>`;if(!s)return u;e.insertAdjacentHTML("beforeend",u)}function a(e,t="",a="green",l="1%",n="1",r=!0){let s=`<path d="${t}" fill="none" stroke="${a}" stroke-width="${l}" stroke-opacity="${n}" /> `;if(!r)return s;e.insertAdjacentHTML("beforeend",s)}const{abs:l,acos:n,asin:r,atan:s,atan2:i,ceil:o,cos:u,exp:p,floor:h,log:y,hypot:c,max:x,min:f,pow:g,random:m,round:d,sin:v,sqrt:M,tan:b,PI:A}=Math,{abs:w,acos:C,asin:k,atan:L,atan2:P,ceil:E,cos:S,exp:T,floor:I,log:D,max:F,min:$,pow:z,random:q,round:j,sin:Q,sqrt:B,tan:N,PI:G}=Math;function U(e,t,a=!1){let l=P(t.y-e.y,t.x-e.x);return a&&l<0&&(l+=2*Math.PI),l}function O(e,t,a,l=!1){let n=Math.atan2(t.y-e.y,t.x-e.x),r=Math.atan2(a.y-e.y,a.x-e.x),s=r-n;s=(e=>{let t=e%(2*Math.PI);return t>Math.PI?t-=2*Math.PI:t<=-Math.PI&&(t+=2*Math.PI),t})(s),l&&(s=2*Math.PI-Math.abs(s));let i=180/Math.PI;return{startAngle:n,endAngle:r,deltaAngle:s,startAngleDeg:n*i,endAngleDeg:r*i,deltaAngleDeg:s*i}}function Z(e=null,t=null,a=null,l=null,n=!0,r=!1,s=!1){let i,o,u,p,h,y={};if(!(e&&t&&a&&l))return s&&console.warn("points missing"),!1;try{if(i=(l.y-a.y)*(t.x-e.x)-(l.x-a.x)*(t.y-e.y),0===i)return!1}catch{return s&&console.warn("!catch",e,t,"p3:",a,"p4:",l),!1}o=e.y-a.y,u=e.x-a.x,p=(l.x-a.x)*o-(l.y-a.y)*u,h=(t.x-e.x)*o-(t.y-e.y)*u,o=p/i,u=h/i,y={x:e.x+o*(t.x-e.x),y:e.y+o*(t.y-e.y)};let c=!1;return o>0&&o<1&&u>0&&u<1&&(c=!0),!n&&r&&(o>0&&u<0||o<0&&u>0)?(c=!1,!1):!(n&&!c)&&y}function H(e,t,a,l=!1){const n=(e,t,a)=>e>=t&&e<=a||e<=t&&e>=a;let r=!1;if((!l||!a.bottom)&&(a.left>e.x||a.top>e.y||a.bottom<e.y||a.right<e.x))return!1;let s=t.length;for(let a=s-1,l=0;l<s;a=l,l++){const s=t[a],i=t[l];if(e.x==s.x&&e.y==s.y||e.x==i.x&&e.y==i.y)return!0;if(s.y==i.y&&e.y==s.y&&n(e.x,s.x,i.x))return!0;if(n(e.y,s.y,i.y)){if(e.y==s.y&&i.y>=s.y||e.y==i.y&&s.y>=i.y)continue;const t=(s.x-e.x)*(i.y-e.y)-(i.x-e.x)*(s.y-e.y);if(0==t)return!0;s.y<i.y==t>0&&(r=!r)}}return!!r}function R(e,t,a,l=!1){let n={x:(t.x-e.x)*a+e.x,y:(t.y-e.y)*a+e.y};return l&&(n.angle=U(e,t),n.angle<0&&(n.angle+=2*G)),n}function W(e,t=.5,a=!1,l=!1,n=!1){let r;return Array.isArray(e[0])&&(e=e.map(e=>({x:e[0],y:e[1]})),n=!0),r=e.length>2?((e,t,a=!1)=>{let n=4===e.length,r=e[0],s=e[1],i=n?e[2]:e[1],o=e[e.length-1],u={x:0,y:0};if(a||l){let e,a,p,h,y,c=r.x===s.x&&r.y===s.y,x=o.x===i.x&&o.y===i.y;0!==t||c?1!==t||x?(c&&(t+=1e-7),x&&(t-=1e-7),e=R(r,s,t),n?(a=R(s,i,t),p=R(i,o,t),h=R(e,a,t),y=R(a,p,t),u=R(h,y,t),u.angle=U(h,y),l&&(u.cpts=[a,p,h,y])):(a=R(r,s,t),p=R(s,o,t),u=R(a,p,t),u.angle=U(a,p),l&&(u.cpts=[a,p]))):(u.x=o.x,u.y=o.y,u.angle=U(i,o)):(u.x=r.x,u.y=r.y,u.angle=U(r,s))}else{let e=1-t;u=n?{x:e**3*r.x+3*e**2*t*s.x+3*e*t**2*i.x+t**3*o.x,y:e**3*r.y+3*e**2*t*s.y+3*e*t**2*i.y+t**3*o.y}:{x:e*e*r.x+2*e*t*s.x+t**2*o.x,y:e*e*r.y+2*e*t*s.y+t**2*o.y}}return u})(e,t,a):R(e[0],e[1],t,a),a&&r.angle<0&&(r.angle+=2*G),n?[r.x,r.y]:r}function V(e){let t=[],a={x:e[0].values[0],y:e[0].values[1]};return e.forEach(e=>{let{type:l,values:n}=e;if(n.length){let e=n.length>1?{x:n[n.length-2],y:n[n.length-1]}:"V"===l?{x:a.x,y:n[0]}:{x:n[0],y:a.y};t.push(e),a=e}}),t}function J(e,t,a,l,n,r,s,i,o){const u=(e,t,a,l)=>P(l-t,a-e);let p={cx:0,cy:0,rx:a=w(a),ry:l=w(l),startAngle:0,endAngle:0,deltaAngle:0,clockwise:s,xAxisRotation:n,largeArc:r,sweep:s};if(0==a||0==l)throw Error("rx and ry can not be 0");if(a===l){let a=Math.abs(i-e),l=Math.abs(o-t),n=a,r=Math.min(e,i),u=Math.min(t,o),h=.5*Math.PI;if(0===a&&l||0===l&&a)return n=0===a&&l?l/2:a/2,p.rx=n,p.ry=n,0===a&&l?(p.cx=e,p.cy=u+l/2,p.startAngle=t>o?h:-h,p.endAngle=t>o?-h:h,p.deltaAngle=s?Math.PI:-Math.PI):0===l&&a&&(p.cx=r+a/2,p.cy=t,p.startAngle=e>i?Math.PI:0,p.endAngle=e>i?-Math.PI:Math.PI,p.deltaAngle=s?Math.PI:-Math.PI),p}let h,y,c=a===l?0:n*G/180,x=c?Math.sin(c):0,f=c?Math.cos(c):1,g=(e-i)/2,m=(t-o)/2,d=(e+i)/2,v=(t+o)/2,M=c?f*g+x*m:g,b=c?f*m-x*g:m,A=M*M/(a*a)+b*b/(l*l);A>1&&(a*=Math.sqrt(A),l*=Math.sqrt(A),p.rx=a,p.ry=l);let C=a*l,k=a*b,L=l*M,E=k**2+L**2;if(!E)throw Error("start point can not be same as end point");let S=Math.sqrt(Math.abs((C*C-E)/E));r==s&&(S=-S);let T=S*k/l,I=-S*L/a;h=c?f*T-x*I+d:d+T,y=c?x*T+f*I+v:v+I,p.cy=y,p.cx=h;let D=u(h,y,e,t),F=u(h,y,i,o);!s&&F>D&&(F-=2*Math.PI),s&&D>F&&(F=F<=0?F+2*Math.PI:F);let $=F-D;return p.startAngle=D,p.endAngle=F,p.deltaAngle=$,p}function X(e,t,a,l=0,n=!1){return l?(l=n?l/180*Math.PI:l,{x:t+(e.x-t)*Math.cos(l)-(e.y-a)*Math.sin(l),y:a+(e.x-t)*Math.sin(l)+(e.y-a)*Math.cos(l)}):e}function Y(e,t,a,l,n,r=0,s=!0,i=!1){if(n=i?n*G/180:n,r=i?r*G/180:r,r=a!==l&&r!==2*G?r:0,s&&a!==l){let e=L(N(n=r?n-r:n)*(a/l));n=S(n)<0?e+G:e}let o=e+a*S(n),u=t+l*Q(n),p={x:o,y:u};return r&&(p.x=e+(o-e)*S(r)-(u-t)*Q(r),p.y=t+(o-e)*Q(r)+(u-t)*S(r)),p}function _(e,t,a){if(t===a||e%G*.5==0)return e;let l=L(N(e)*(t/a));return l=S(e)<0?l+G:l,l}function K(e=null,t=[]){e||(e=t[0],t=t.slice(1,t.length));let a=t.length,l=t[a-1],n=t[0],r=3===a?t[1]:n,s=Math.min(e.y,l.y),i=Math.min(e.x,l.x),o=Math.max(e.x,l.x),u=Math.max(e.y,l.y);return!(n.y>=s&&n.y<=u&&r.y>=s&&r.y<=u&&n.x>=i&&n.x<=o&&r.x>=i&&r.x<=o)}function ee(e,{addExtremes:t=!0,addSemiExtremes:a=!1}={}){let l=4===e.length?function(e,t,a,l,{addExtremes:n=!0,addSemiExtremes:r=!1}={}){const s=e=>{const t=Math.PI/4,a=Math.cos(t),l=Math.sin(t);return{x:e.x*a-e.y*l,y:e.x*l+e.y*a}};r&&(e=s(e),t=s(t),a=s(a),l=s(l));let[i,o,u,p,h,y,c,x]=[e.x,e.y,t.x,t.y,a.x,a.y,l.x,l.y],f=Math.min(e.y,l.y),g=Math.min(e.x,l.x),m=Math.max(e.x,l.x),d=Math.max(e.y,l.y);if(t.y>=f&&t.y<=d&&a.y>=f&&a.y<=d&&t.x>=g&&t.x<=m&&a.x>=g&&a.x<=m)return[];let v,M,b,A,w,C,k,L,P=[];for(let e=0;e<2;++e)if(0==e?(M=6*i-12*u+6*h,v=-3*i+9*u-9*h+3*c,b=3*u-3*i):(M=6*o-12*p+6*y,v=-3*o+9*p-9*y+3*x,b=3*p-3*o),Math.abs(v)<1e-8){if(Math.abs(M)<1e-8)continue;A=-b/M,0<A&&A<1&&P.push(A)}else k=M*M-4*b*v,k<0?Math.abs(k)<1e-8&&(A=-M/(2*v),0<A&&A<1&&P.push(A)):(L=Math.sqrt(k),w=(-M+L)/(2*v),0<w&&w<1&&P.push(w),C=(-M-L)/(2*v),0<C&&C<1&&P.push(C));let E=P.length;for(;E--;)A=P[E];return P}(e[0],e[1],e[2],e[3],{addExtremes:t,addSemiExtremes:a}):function(e,t,a,{addExtremes:l=!0,addSemiExtremes:n=!1}={}){const r=e=>{const t=-Math.PI/4,a=Math.cos(t),l=Math.sin(t);return{x:e.x*a-e.y*l,y:e.x*l+e.y*a}};n&&(e=r(e),t=r(t),a=r(a));let s,i,o,u=Math.min(e.y,a.y),p=Math.min(e.x,a.x),h=Math.max(e.x,a.x),y=Math.max(e.y,a.y);if(t.y>=u&&t.y<=y&&t.x>=p&&t.x<=h)return[];let[c,x,f,g,m,d]=[e.x,e.y,t.x,t.y,a.x,a.y],v=[];for(let e=0;e<2;++e)s=0==e?c-2*f+m:x-2*g+d,i=0==e?-2*c+2*f:-2*x+2*g,Math.abs(s)>1e-12&&(o=-i/(2*s),o>0&&o<1&&v.push(o));return v}(e[0],e[1],e[2],{addExtremes:t,addSemiExtremes:a});return l}function te(e,t){const a=(e,t,a,l,n,r)=>{var s=Math.cos(r),i=Math.sin(r),o=l*Math.cos(e),u=n*Math.sin(e);return{x:t+s*o-i*u,y:a+i*o+s*u}};let l,n,r,s,i,o=J(e.x,e.y,t[0],t[1],t[2],t[3],t[4],t[5],t[6]),{rx:u,ry:p,cx:h,cy:y,endAngle:c,deltaAngle:x}=o,f=t[2],g={x:t[5],y:t[6]},m=[g],d=f*Math.PI/180,v=Math.tan(d);i=Math.atan2(-p*v,u);let M=i,b=i+Math.PI,A=Math.atan2(p,u*v),w=A+Math.PI,C=[e.x,g.x],k=[e.y,g.y],L=Math.min(...C),P=Math.max(...C),E=Math.min(...k),S=Math.max(...k),T=a(c-.001*x,h,y,u,p,d),I=a(c-.999*x,h,y,u,p,d);return(T.x>P||I.x>P)&&(l=a(M,h,y,u,p,d),m.push(l)),(T.x<L||I.x<L)&&(n=a(b,h,y,u,p,d),m.push(n)),(T.y<E||I.y<E)&&(s=a(w,h,y,u,p,d),m.push(s)),(T.y>S||I.y>S)&&(r=a(A,h,y,u,p,d),m.push(r)),m}function ae(e=[],t=[]){let a=e.length,l=4===a;t.length||(t=[0]);let n=t.length,r=[];for(let s=0;s<n;s++){let n=t[s],i=n?[]:e.slice(0);if(n)for(let t=0;t<a;t++){let a=e[t];i.push(X(a,0,0,n))}let o=l?le(...i):ne(...i);r.push(...o)}return r=[...new Set(r)].sort(),r}function le(e,t,a,l){if(!K(e,[t,a,l]))return[];let n,r,s,i,o,u,p,h,[y,c,x,f,g,m,d,v]=[e.x,e.y,t.x,t.y,a.x,a.y,l.x,l.y],M=[],b=1e-8;for(let e=0;e<2;++e)if(0==e?(r=6*y-12*x+6*g,n=-3*y+9*x-9*g+3*d,s=3*x-3*y):(r=6*c-12*f+6*m,n=-3*c+9*f-9*m+3*v,s=3*f-3*c),Math.abs(n)<b){if(Math.abs(r)<b)continue;i=-s/r,i>0&&i<1&&M.push(i)}else p=r*r-4*s*n,p<0?Math.abs(p)<b&&(i=-r/(2*n),i>0&&i<1&&M.push(i)):(h=Math.sqrt(p),o=(-r+h)/(2*n),o>0&&o<1&&M.push(o),u=(-r-h)/(2*n),u>0&&u<1&&M.push(u));let A=M.length;for(;A--;)i=M[A];return[...new Set(M)].sort()}function ne(e,t,a){if(!K(e,[t,a]))return[];let l,n,r,[s,i,o,u,p,h]=[e.x,e.y,t.x,t.y,a.x,a.y],y=[];for(let e=0;e<2;++e)l=0==e?s-2*o+p:i-2*u+h,n=0==e?-2*s+2*o:-2*i+2*u,Math.abs(l)>1e-12&&(r=-n/(2*l),r>0&&r<1&&y.push(r));return[...new Set(y)].sort()}function re(e,t=.001){let a=Math.PI/2,l=a/2;return!(Math.abs(e/a-Math.round(e/a))<t)&&Math.abs(e/l-Math.round(e/l))<t}function se(e,t,a=!1){let l=a?t[0]-e[0]:t.x-e.x,n=a?t[1]-e[1]:t.y-e.y;return B(l*l+n*n)}function ie(e,t){let a=t.x-e.x,l=t.y-e.y;return a*a+l*l}function oe(e,t){return Math.abs(t.x-e.x)+Math.abs(t.y-e.y)}function ue(e,t){return.5*(Math.abs(t.x-e.x)+Math.abs(t.y-e.y))}function pe(e,t=48){if(!Array.isArray(e)||e.length<=t)return e;let a=e.length,l=a/t,n=[];for(let a=0;a<t;a++)n.push(e[Math.floor(a*l)]);let r=n.length;return n[r-1]!==e[a-1]&&(n[r-1]=e[a-1]),n}function he(e){let t=[],a=[e[0]],l=e.length;for(let n=1;n<l;n++){let l=e[n];"M"!==l.type&&"m"!==l.type||(t.push(a),a=[]),a.push(l)}return a.length&&t.push(a),t}function ye(e,t){let a,l,n,r,s,i,o=[],u=[],p=e[0],h=e[1],y=e[e.length-2],c=e[e.length-1];return 4===e.length?(a=W([p,h],t),l=W([h,y],t),n=W([y,c],t),r=W([a,l],t),s=W([l,n],t),i=W([r,s],t),o.push({x:p.x,y:p.y},{x:a.x,y:a.y},{x:r.x,y:r.y},{x:i.x,y:i.y}),u.push({x:i.x,y:i.y},{x:s.x,y:s.y},{x:n.x,y:n.y},{x:c.x,y:c.y})):3===e.length?(l=W([p,h],t),n=W([h,c],t),i=W([l,n],t),o.push({x:p.x,y:p.y},{x:l.x,y:l.y},{x:i.x,y:i.y}),u.push({x:i.x,y:i.y},{x:n.x,y:n.y},{x:c.x,y:c.y})):2===e.length&&(l=W([p,c],t),o.push({x:p.x,y:p.y},{x:l.x,y:l.y}),u.push({x:l.x,y:l.y},{x:c.x,y:c.y})),[o,u]}function ce(e,t,{tMin:a=0,tMax:l=1,addExtremes:n=!0,addSemiExtremes:r=!1}={}){let s=[],i=6===t.length?"C":"Q",o={x:t[0],y:t[1]},u="C"===i?{x:t[2],y:t[3]}:o,p={x:t[4],y:t[5]},h=0;let y="C"===i?[e,o,u,p]:[e,o,p],c=n?ee(y,{addExtremes:n,addSemiExtremes:!1}):[],x=r?ee(y,{addExtremes:n,addSemiExtremes:r}):[],f=Array.from(new Set([...c,...x])).sort();if(f=f.filter(e=>e>0&&e<1),f.length){let a=function(e,t,a,l=!0){let n=[];if(!a.length)return!1;let r,s,i,o=t.length,u={x:t[o-2],y:t[o-1]};2===t.length?i=[e,u]:4===t.length?(r={x:t[0],y:t[1]},i=[e,r,u]):6===t.length&&(r={x:t[0],y:t[1]},s={x:t[2],y:t[3]},i=[e,r,s,u]);if(a.length)if(1===a.length){let e=ye(i,a[0]),t=e[0],l=e[1];n.push(t,l)}else{let e=a[0],t=ye(i,e),l=t[0];n.push(l),i=t[1];for(let t=1;t<a.length;t++){e=a[t-1];let l=ye(i,(a[t]-e)/(1-e));n.push(l[0]),t===a.length-1&&n.push(l[l.length-1]),i=l[1]}}if(l){let e,t,a=[];return n.forEach(l=>{e={type:"",values:[]},l.shift(),t=l.map(e=>Object.values(e)).flat(),e.values=t,3===l.length?e.type="C":2===l.length?e.type="Q":1===l.length&&(e.type="L"),a.push(e)}),a}return n}(e,t,f);s.push(...a),h+=a.length}else s.push({type:i,values:t});return{pathData:s,count:h}}function xe(e,{tMin:t=0,tMax:a=1,addExtremes:l=!0,addSemiExtremes:n=!1}={}){let r=[e[0]],s={x:e[0].values[0],y:e[0].values[1]},i={x:e[0].values[0],y:e[0].values[1]},o=e.length;for(let u=1;o&&u<o;u++){let o=e[u],{type:p,values:h}=o,y=h.slice(-2);if(y[0],y[1],"C"!==p&&"Q"!==p)r.push(o);else if((l||n)&&("C"===p||"Q"===p)){let e=ce(s,h,{tMin:t,tMax:a,addExtremes:l,addSemiExtremes:n}).pathData;r.push(...e)}s={x:y[0],y:y[1]},"z"===p.toLowerCase()?s=i:"M"===p&&(i={x:y[0],y:y[1]})}return r}function fe(e,t=-1){let a=e.map(e=>e.x),l=e.map(e=>e.y),n=Math.min(...a),r=Math.max(...a),s=Math.min(...l),i=Math.max(...l),o={x:n,left:n,right:r,y:s,top:s,bottom:i,width:r-n,height:i-s};if(t>-1)for(let e in o)o[e]=+o[e].toFixed(t);return o}function ge(e){let t=[];return e.forEach(e=>{let a=function(e){let t=function(e){let t=[];for(let a=0;a<e.length;a++){let l=e[a],n=a>0?e[a-1]:e[a],{type:r,values:s}=l,i={x:n.values[n.values.length-2],y:n.values[n.values.length-1]},o=s.length?{x:s[s.length-2],y:s[s.length-1]}:"",u=s.length?{x:s[0],y:s[1]}:"";switch(r){case"A":if("function"!=typeof arcToBezier){let e=se(i,o)/2,a=R(i,o,.5),l=Y(a.x,a.y,e,e,0),n=Y(a.x,a.y,e,e,Math.PI);t.push(l,n,o);break}arcToBezier(i,s).forEach(e=>{let a=e.values,l={x:a[0],y:a[1]},n={x:a[2],y:a[3]},r={x:a[4],y:a[5]};t.push(l,n,r)});break;case"C":let e={x:s[2],y:s[3]};t.push(u,e);break;case"Q":t.push(u)}"z"!==r.toLowerCase()&&t.push(o)}return t}(e),a=fe(t);return a}(e);t.push(a)}),t}function me(e,t){let[a,l,n,r,s,i]=[e.x,e.y,e.width,e.height,e.x+e.width,e.y+e.height],[o,u,p,h,y,c]=[t.x,t.y,t.width,t.height,t.x+t.width,t.y+t.height],x=!1;return n*r!=p*h&&n*r>p*h&&a<o&&s>y&&l<u&&i>c&&(x=!0),x}function de(e,t=9){let a=0,l=[],n=he(e),r=n.length>1,s=[];if(r){let e=ge(n);e.forEach(function(t,a){for(let a=0;a<e.length;a++){let l=e[a];if(t!=l){me(t,l)&&s.push(a)}}})}return n.forEach((e,t)=>{l=[];let n=0,r=0,i=1,o=[];e.forEach(function(t,a){let[r,s]=[t.type,t.values],i=s.length;if(s.length){let u=(a>0?e[a-1]:e[0]).values,p=u.length,h={x:u[p-2],y:u[p-1]},y={x:s[i-2],y:s[i-1]};if("C"===r||"Q"===r){let e={x:s[0],y:s[1]};o="C"===r?[h,e,{x:s[2],y:s[3]},y]:[h,e,y];let t=Math.abs(function(e,t=!1){let a,[l,n,r,s]=[e[0],e[1],e[2],e[e.length-1]];if(e.length<3)return 0;3===e.length&&(n={x:1*e[0].x/3+2*e[1].x/3,y:1*e[0].y/3+2*e[1].y/3},r={x:1*e[2].x/3+2*e[1].x/3,y:1*e[2].y/3+2*e[1].y/3});return a=3*(l.x*(-2*n.y-r.y+3*s.y)+n.x*(2*l.y-r.y-s.y)+r.x*(l.y+n.y-2*s.y)+s.x*(-3*l.y+n.y+2*r.y))/20,t?Math.abs(a):a}(o));n+=t,l.push(h,y)}else if("A"===r){let e=J(h.x,h.y,t.values[0],t.values[1],t.values[2],t.values[3],t.values[4],y.x,y.y),{cx:a,cy:r,rx:s,ry:i,startAngle:o,endAngle:u,deltaAngle:p}=e,c=Math.abs(function(e,t,a,l){const n=Math.PI*e*t;let r=(l-a+2*Math.PI)%(2*Math.PI);if(e===t)return n*(r/(2*Math.PI));const s=a=>Math.atan2(e*Math.sin(a),t*Math.cos(a));return a=s(a),l=s(l),r=(l-a+2*Math.PI)%(2*Math.PI),n*(r/(2*Math.PI))}(s,i,o,u));c-=Math.abs(ve([h,{x:a,y:r},y])),l.push(h,y),n+=c}else l.push(h,y)}});let u=ve(l);-1!==s.indexOf(t)&&(i=-1),r=u<0&&n<0?(Math.abs(n)-Math.abs(u))*i:(Math.abs(n)+Math.abs(u))*i,a+=r}),a}function ve(e,t=!1){let a=0,l=e.length;for(let t=0;l&&t<l;t++){a+=e[t].x*e[t===e.length-1?0:t+1].y*.5-e[t===e.length-1?0:t+1].x*e[t].y*.5}return t&&(a=Math.abs(a)),a}function Me(e,t=0){t=parseFloat(t);let a=e.length,l=t>1,n=!l&&!t,r="",s=l?"\n":n?"":" ",i=n?"":" ";r=`${e[0].type}${i}${e[0].values.join(" ")}${s}`;for(let t=1;t<a;t++){let a=e[t-1],l=e[t],{type:o,values:u}=l;if(!n||"A"!==o&&"a"!==o||(u=[u[0],u[1],u[2],`${u[3]}${u[4]}${u[5]}`,u[6]]),o=n&&a.type===l.type&&"m"!==l.type.toLowerCase()||n&&"M"===a.type&&"L"===l.type?" ":l.type,n){let e="",t=!1;for(let a=0,l=u.length;a<l;a++){let l=u[a],n=l.toString(),r=n.includes(".")&&Math.abs(l)<1;r&&t&&(n=n.replace(/^0\./,".")),!(a>0)||t&&r||(e+=" "),e+=n,t=r}r+=`${o}${i}${e}${s}`}else r+=`${o}${i}${u.join(" ")}${s}`}return n&&(r=r.replace(/ 0\./g," .").replace(/ -/g,"-").replace(/-0\./g,"-.").replace(/Z/g,"z")),r}function be(e,t,a=0,l=1,n=!1){const r=(e,t,a,l,n)=>{let r=1-n;return{x:3*r*r*(t.x-e.x)+6*r*n*(a.x-t.x)+3*n*n*(l.x-a.x),y:3*r*r*(t.y-e.y)+6*r*n*(a.y-t.y)+3*n*n*(l.y-a.y)}};let s=[e,t],i=ue(e.p0,e.p)>ue(t.p0,t.p),o=JSON.parse(JSON.stringify(e)),u=JSON.parse(JSON.stringify(t)),p=Z(o.p0,o.cp1,u.p,u.cp2,!1);if(!p)return s;if(i){let a={p0:{x:e.p.x,y:e.p.y},cp1:{x:e.cp2.x,y:e.cp2.y},cp2:{x:e.cp1.x,y:e.cp1.y},p:{x:e.p0.x,y:e.p0.y}};e={p0:{x:t.p.x,y:t.p.y},cp1:{x:t.cp2.x,y:t.cp2.y},cp2:{x:t.cp1.x,y:t.cp1.y},p:{x:t.p0.x,y:t.p0.y}},t=a}let h=(e,t)=>({x:e.x-t.x,y:e.y-t.y}),y=(e,t)=>({x:e.x*t,y:e.y*t}),c=(e,t)=>e.x*t.x+e.y*t.y,x=t.p0,f=r(t.p0,t.cp1,t.cp2,t.p,0),g=c(h(e.p0,x),f)/c(f,f),m=W([t.p0,t.cp1,t.cp2,t.p],g),d=r(t.p0,t.cp1,t.cp2,t.p,g);g-=c(h(m,e.p0),d)/c(d,d);let v=W([t.p0,t.cp1,t.cp2,t.p],g),M=t.p,b=r(t.p0,t.cp1,t.cp2,t.p,g),A=r(t.p0,t.cp1,t.cp2,t.p,1),w=1-g,C=(k=v,L=y(b,w/3),{x:k.x+L.x,y:k.y+L.y});var k,L;let P=h(M,y(A,w/3)),E={p0:v,cp1:C,cp2:P,p:M,t0:g};i&&(E={p0:M,cp1:P,cp2:C,p:v,t0:g});let S=.5*(1-g),T=W([E.p0,E.cp1,E.cp2,E.p],S,!1,!0),I=T.cpts[2],D=Z(T,I,E.p0,p,!1),F=Z(T,I,E.p,p,!1),$=R(E.p0,D,1.333),z=R(E.p,F,1.333);if(Z(o.p0,$,u.p,z,!0))return s;E.cp1=$,E.cp2=z;let q=ue(o.p0,E.p0)+ue(u.p,E.p);if(E.p0=o.p0,E.p=u.p,E.extreme=u.extreme,E.corner=u.corner,E.dimA=u.dimA,E.directionChange=u.directionChange,E.type="C",E.values=[E.cp1.x,E.cp1.y,E.cp2.x,E.cp2.y,E.p.x,E.p.y],q<a){let t=i?1+g:Math.abs(g),r=1+Math.abs(g);if(t=i?1+g:Math.abs(g)/r,ue(W([E.p0,E.cp1,E.cp2,E.p],t),e.p)>a*l)return s;let p=de([{type:"M",values:[o.p0.x,o.p0.y]},{type:"C",values:[o.cp1.x,o.cp1.y,o.cp2.x,o.cp2.y,o.p.x,o.p.y]},{type:"C",values:[u.cp1.x,u.cp1.y,u.cp2.x,u.cp2.y,u.p.x,u.p.y]}]),h=[{type:"M",values:[E.p0.x,E.p0.y]},{type:"C",values:[E.cp1.x,E.cp1.y,E.cp2.x,E.cp2.y,E.p.x,E.p.y]}],y=de(h),c=Math.abs(y/p-1);E.error=5*c*l,n&&Me(h),c<.05*l&&(s=[E])}return s}function Ae(e,{keepExtremes:t=!0,keepInflections:a=!0,keepCorners:l=!0,extrapolateDominant:n=!0,tolerance:r=1}={}){let s=[e[0]],i=e.length;for(let n=2;i&&n<=i;n++){let o=e[n-1],u=n<i?e[n]:null,p=u?.type||null,{type:h,values:y,p0:c,p:x,cp1:f=null,cp2:g=null,extreme:m=!1,directionChange:d=!1,corner:v=!1,dimA:M=0}=o;if("C"===h&&"C"===p)if(l&&v||t&&m)s.push(o);else{let p=we(o,u,{tolerance:r}),h=0;
2
2
  //!count simplification success or failure - just for debugging
3
3
  if(1===p.length){o=p[0];let u=1;h+=o.error;
4
4
  //!log.push(`success1: ${i} and ${i + 1}`)