UNPKG

directus-extension-usage-analytics-module

Version:

Visual analytics module for collection storage usage and API request patterns in Directus (Module only - requires API package)

20 lines 252 kB
import{useApi as t,defineModule as e}from"@directus/extensions-sdk";import{ref as i,computed as n,defineComponent as s,watch as a,nextTick as o,onMounted as r,onUnmounted as l,resolveComponent as c,openBlock as h,createElementBlock as d,createCommentVNode as u,createVNode as f,createElementVNode as p,Fragment as g,toDisplayString as m,unref as b,createBlock as x,withCtx as v,renderList as y,createTextVNode as _,resolveDirective as w,withDirectives as k,normalizeStyle as M}from"vue";import{useRouter as S,useRoute as C}from"vue-router";const D="/usage-analytics-api",P={COLLECTIONS:`${D}/collections`,ACTIVITY:`${D}/activity`,ACTIVITY_TIMESERIES:`${D}/activity/timeseries`,ACTIVITY_BY_IP:t=>`${D}/activity/ips/${t}`};new Date(Date.now()-6048e5).toISOString(),(new Date).toISOString();const A=["#2ECDA7","#4F46E5","#F59E0B","#EF4444","#3B82F6","#8B5CF6","#EC4899","#10B981","#F97316","#6366F1"],T={responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!0,position:"top"},tooltip:{enabled:!0,mode:"index",intersect:!1}}}; /*! * @kurkle/color v0.3.4 * https://github.com/kurkle/color#readme * (c) 2024 Jukka Kurkela * Released under the MIT License */ function O(t){return t+.5|0}const I=(t,e,i)=>Math.max(Math.min(t,i),e);function L(t){return I(O(2.55*t),0,255)}function E(t){return I(O(255*t),0,255)}function R(t){return I(O(t/2.55)/100,0,1)}function z(t){return I(O(100*t),0,100)}const F={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},V=[..."0123456789ABCDEF"],B=t=>V[15&t],N=t=>V[(240&t)>>4]+V[15&t],W=t=>(240&t)>>4==(15&t);function j(t){var e=(t=>W(t.r)&&W(t.g)&&W(t.b)&&W(t.a))(t)?B:N;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const H=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function $(t,e,i){const n=e*Math.min(i,1-i),s=(e,s=(e+t/30)%12)=>i-n*Math.max(Math.min(s-3,9-s,1),-1);return[s(0),s(8),s(4)]}function U(t,e,i){const n=(n,s=(n+t/60)%6)=>i-i*e*Math.max(Math.min(s,4-s,1),0);return[n(5),n(3),n(1)]}function Y(t,e,i){const n=$(t,1,.5);let s;for(e+i>1&&(s=1/(e+i),e*=s,i*=s),s=0;s<3;s++)n[s]*=1-e-i,n[s]+=e;return n}function q(t){const e=t.r/255,i=t.g/255,n=t.b/255,s=Math.max(e,i,n),a=Math.min(e,i,n),o=(s+a)/2;let r,l,c;return s!==a&&(c=s-a,l=o>.5?c/(2-s-a):c/(s+a),r=function(t,e,i,n,s){return t===s?(e-i)/n+(e<i?6:0):e===s?(i-t)/n+2:(t-e)/n+4}(e,i,n,c,s),r=60*r+.5),[0|r,l||0,o]}function X(t,e,i,n){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,n)).map(E)}function K(t,e,i){return X($,t,e,i)}function G(t){return(t%360+360)%360}function Z(t){const e=H.exec(t);let i,n=255;if(!e)return;e[5]!==i&&(n=e[6]?L(+e[5]):E(+e[5]));const s=G(+e[2]),a=+e[3]/100,o=+e[4]/100;return i="hwb"===e[1]?function(t,e,i){return X(Y,t,e,i)}(s,a,o):"hsv"===e[1]?function(t,e,i){return X(U,t,e,i)}(s,a,o):K(s,a,o),{r:i[0],g:i[1],b:i[2],a:n}}const J={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Q={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};let tt;function et(t){tt||(tt=function(){const t={},e=Object.keys(Q),i=Object.keys(J);let n,s,a,o,r;for(n=0;n<e.length;n++){for(o=r=e[n],s=0;s<i.length;s++)a=i[s],r=r.replace(a,J[a]);a=parseInt(Q[o],16),t[r]=[a>>16&255,a>>8&255,255&a]}return t}(),tt.transparent=[0,0,0,0]);const e=tt[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const it=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const nt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,st=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function at(t,e,i){if(t){let n=q(t);n[e]=Math.max(0,Math.min(n[e]+n[e]*i,0===e?360:1)),n=K(n),t.r=n[0],t.g=n[1],t.b=n[2]}}function ot(t,e){return t?Object.assign(e||{},t):t}function rt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=E(t[3]))):(e=ot(t,{r:0,g:0,b:0,a:1})).a=E(e.a),e}function lt(t){return"r"===t.charAt(0)?function(t){const e=it.exec(t);let i,n,s,a=255;if(e){if(e[7]!==i){const t=+e[7];a=e[8]?L(t):I(255*t,0,255)}return i=+e[1],n=+e[3],s=+e[5],i=255&(e[2]?L(i):I(i,0,255)),n=255&(e[4]?L(n):I(n,0,255)),s=255&(e[6]?L(s):I(s,0,255)),{r:i,g:n,b:s,a:a}}}(t):Z(t)}class ct{constructor(t){if(t instanceof ct)return t;const e=typeof t;let i;var n,s,a;"object"===e?i=rt(t):"string"===e&&(a=(n=t).length,"#"===n[0]&&(4===a||5===a?s={r:255&17*F[n[1]],g:255&17*F[n[2]],b:255&17*F[n[3]],a:5===a?17*F[n[4]]:255}:7!==a&&9!==a||(s={r:F[n[1]]<<4|F[n[2]],g:F[n[3]]<<4|F[n[4]],b:F[n[5]]<<4|F[n[6]],a:9===a?F[n[7]]<<4|F[n[8]]:255})),i=s||et(t)||lt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=ot(this._rgb);return t&&(t.a=R(t.a)),t}set rgb(t){this._rgb=rt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${R(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?j(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=q(t),i=e[0],n=z(e[1]),s=z(e[2]);return t.a<255?`hsla(${i}, ${n}%, ${s}%, ${R(t.a)})`:`hsl(${i}, ${n}%, ${s}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,n=t.rgb;let s;const a=e===s?.5:e,o=2*a-1,r=i.a-n.a,l=((o*r===-1?o:(o+r)/(1+o*r))+1)/2;s=1-l,i.r=255&l*i.r+s*n.r+.5,i.g=255&l*i.g+s*n.g+.5,i.b=255&l*i.b+s*n.b+.5,i.a=a*i.a+(1-a)*n.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const n=st(R(t.r)),s=st(R(t.g)),a=st(R(t.b));return{r:E(nt(n+i*(st(R(e.r))-n))),g:E(nt(s+i*(st(R(e.g))-s))),b:E(nt(a+i*(st(R(e.b))-a))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new ct(this.rgb)}alpha(t){return this._rgb.a=E(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=O(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return at(this._rgb,2,t),this}darken(t){return at(this._rgb,2,-t),this}saturate(t){return at(this._rgb,1,t),this}desaturate(t){return at(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=q(t);i[0]=G(i[0]+e),i=K(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}} /*! * Chart.js v4.5.1 * https://www.chartjs.org * (c) 2025 Chart.js Contributors * Released under the MIT License */function ht(){}const dt=(()=>{let t=0;return()=>t++})();function ut(t){return null==t}function ft(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function pt(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function gt(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function mt(t,e){return gt(t)?t:e}function bt(t,e){return void 0===t?e:t}const xt=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function vt(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function yt(t,e,i,n){let s,a,o;if(ft(t))if(a=t.length,n)for(s=a-1;s>=0;s--)e.call(i,t[s],s);else for(s=0;s<a;s++)e.call(i,t[s],s);else if(pt(t))for(o=Object.keys(t),a=o.length,s=0;s<a;s++)e.call(i,t[o[s]],o[s])}function _t(t,e){let i,n,s,a;if(!t||!e||t.length!==e.length)return!1;for(i=0,n=t.length;i<n;++i)if(s=t[i],a=e[i],s.datasetIndex!==a.datasetIndex||s.index!==a.index)return!1;return!0}function wt(t){if(ft(t))return t.map(wt);if(pt(t)){const e=Object.create(null),i=Object.keys(t),n=i.length;let s=0;for(;s<n;++s)e[i[s]]=wt(t[i[s]]);return e}return t}function kt(t){return-1===["__proto__","prototype","constructor"].indexOf(t)}function Mt(t,e,i,n){if(!kt(t))return;const s=e[t],a=i[t];pt(s)&&pt(a)?St(s,a,n):e[t]=wt(a)}function St(t,e,i){const n=ft(e)?e:[e],s=n.length;if(!pt(t))return t;const a=(i=i||{}).merger||Mt;let o;for(let e=0;e<s;++e){if(o=n[e],!pt(o))continue;const s=Object.keys(o);for(let e=0,n=s.length;e<n;++e)a(s[e],t,o,i)}return t}function Ct(t,e){return St(t,e,{merger:Dt})}function Dt(t,e,i){if(!kt(t))return;const n=e[t],s=i[t];pt(n)&&pt(s)?Ct(n,s):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=wt(s))}const Pt={"":t=>t,x:t=>t.x,y:t=>t.y};function At(t,e){const i=Pt[e]||(Pt[e]=function(t){const e=function(t){const e=t.split("."),i=[];let n="";for(const t of e)n+=t,n.endsWith("\\")?n=n.slice(0,-1)+".":(i.push(n),n="");return i}(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function Tt(t){return t.charAt(0).toUpperCase()+t.slice(1)}const Ot=t=>void 0!==t,It=t=>"function"==typeof t,Lt=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};const Et=Math.PI,Rt=2*Et,zt=Rt+Et,Ft=Number.POSITIVE_INFINITY,Vt=Et/180,Bt=Et/2,Nt=Et/4,Wt=2*Et/3,jt=Math.log10,Ht=Math.sign;function $t(t,e,i){return Math.abs(t-e)<i}function Ut(t){const e=Math.round(t);t=$t(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(jt(t))),n=t/i;return(n<=1?1:n<=2?2:n<=5?5:10)*i}function Yt(t){return!function(t){return"symbol"==typeof t||"object"==typeof t&&null!==t&&!(Symbol.toPrimitive in t||"toString"in t||"valueOf"in t)}(t)&&!isNaN(parseFloat(t))&&isFinite(t)}function qt(t,e,i){let n,s,a;for(n=0,s=t.length;n<s;n++)a=t[n][i],isNaN(a)||(e.min=Math.min(e.min,a),e.max=Math.max(e.max,a))}function Xt(t){return t*(Et/180)}function Kt(t){return t*(180/Et)}function Gt(t){if(!gt(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function Zt(t,e){const i=e.x-t.x,n=e.y-t.y,s=Math.sqrt(i*i+n*n);let a=Math.atan2(n,i);return a<-.5*Et&&(a+=Rt),{angle:a,distance:s}}function Jt(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function Qt(t,e){return(t-e+zt)%Rt-Et}function te(t){return(t%Rt+Rt)%Rt}function ee(t,e,i,n){const s=te(t),a=te(e),o=te(i),r=te(a-s),l=te(o-s),c=te(s-a),h=te(s-o);return s===a||s===o||n&&a===o||r>l&&c<h}function ie(t,e,i){return Math.max(e,Math.min(i,t))}function ne(t,e,i,n=1e-6){return t>=Math.min(e,i)-n&&t<=Math.max(e,i)+n}function se(t,e,i){i=i||(i=>t[i]<e);let n,s=t.length-1,a=0;for(;s-a>1;)n=a+s>>1,i(n)?a=n:s=n;return{lo:a,hi:s}}const ae=(t,e,i,n)=>se(t,i,n?n=>{const s=t[n][e];return s<i||s===i&&t[n+1][e]===i}:n=>t[n][e]<i),oe=(t,e,i)=>se(t,i,n=>t[n][e]>=i);const re=["push","pop","shift","splice","unshift"];function le(t,e){const i=t._chartjs;if(!i)return;const n=i.listeners,s=n.indexOf(e);-1!==s&&n.splice(s,1),n.length>0||(re.forEach(e=>{delete t[e]}),delete t._chartjs)}function ce(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const he="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function de(t,e){let i=[],n=!1;return function(...s){i=s,n||(n=!0,he.call(window,()=>{n=!1,t.apply(e,i)}))}}const ue=t=>"start"===t?"left":"end"===t?"right":"center",fe=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2;function pe(t,e,i){const n=e.length;let s=0,a=n;if(t._sorted){const{iScale:o,vScale:r,_parsed:l}=t,c=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,h=o.axis,{min:d,max:u,minDefined:f,maxDefined:p}=o.getUserBounds();if(f){if(s=Math.min(ae(l,h,d).lo,i?n:ae(e,h,o.getPixelForValue(d)).lo),c){const t=l.slice(0,s+1).reverse().findIndex(t=>!ut(t[r.axis]));s-=Math.max(0,t)}s=ie(s,0,n-1)}if(p){let t=Math.max(ae(l,o.axis,u,!0).hi+1,i?0:ae(e,h,o.getPixelForValue(u),!0).hi+1);if(c){const e=l.slice(t-1).findIndex(t=>!ut(t[r.axis]));t+=Math.max(0,e)}a=ie(t,s,n)-s}else a=n-s}return{start:s,count:a}}function ge(t){const{xScale:e,yScale:i,_scaleRanges:n}=t,s={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!n)return t._scaleRanges=s,!0;const a=n.xmin!==e.min||n.xmax!==e.max||n.ymin!==i.min||n.ymax!==i.max;return Object.assign(n,s),a}const me=t=>0===t||1===t,be=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*Rt/i),xe=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*Rt/i)+1,ve={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*Bt),easeOutSine:t=>Math.sin(t*Bt),easeInOutSine:t=>-.5*(Math.cos(Et*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>me(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>me(t)?t:be(t,.075,.3),easeOutElastic:t=>me(t)?t:xe(t,.075,.3),easeInOutElastic(t){const e=.1125;return me(t)?t:t<.5?.5*be(2*t,e,.45):.5+.5*xe(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-ve.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*ve.easeInBounce(2*t):.5*ve.easeOutBounce(2*t-1)+.5};function ye(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function _e(t){return ye(t)?t:new ct(t)}function we(t){return ye(t)?t:new ct(t).saturate(.5).darken(.1).hexString()}const ke=["x","y","borderWidth","radius","tension"],Me=["color","borderColor","backgroundColor"];const Se=new Map;function Ce(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let n=Se.get(i);return n||(n=new Intl.NumberFormat(t,e),Se.set(i,n)),n}(e,i).format(t)}const De={values:t=>ft(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const n=this.chart.options.locale;let s,a=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(s="scientific"),a=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const o=jt(Math.abs(a)),r=isNaN(o)?1:Math.max(Math.min(-1*Math.floor(o),20),0),l={notation:s,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),Ce(t,n,l)},logarithmic(t,e,i){if(0===t)return"0";const n=i[e].significand||t/Math.pow(10,Math.floor(jt(t)));return[1,2,3,5,10,15].includes(n)||e>.8*i.length?De.numeric.call(this,t,e,i):""}};var Pe={formatters:De};const Ae=Object.create(null),Te=Object.create(null);function Oe(t,e){if(!e)return t;const i=e.split(".");for(let e=0,n=i.length;e<n;++e){const n=i[e];t=t[n]||(t[n]=Object.create(null))}return t}function Ie(t,e,i){return"string"==typeof e?St(Oe(t,e),i):St(Oe(t,""),e)}class Le{constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=t=>t.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>we(e.backgroundColor),this.hoverBorderColor=(t,e)=>we(e.borderColor),this.hoverColor=(t,e)=>we(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return Ie(this,t,e)}get(t){return Oe(this,t)}describe(t,e){return Ie(Te,t,e)}override(t,e){return Ie(Ae,t,e)}route(t,e,i,n){const s=Oe(this,t),a=Oe(this,i),o="_"+e;Object.defineProperties(s,{[o]:{value:s[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[o],e=a[n];return pt(t)?Object.assign({},e,t):bt(t,e)},set(t){this[o]=t}}})}apply(t){t.forEach(t=>t(this))}}var Ee=new Le({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:Me},numbers:{type:"number",properties:ke}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Pe.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function Re(t,e,i,n,s){let a=e[s];return a||(a=e[s]=t.measureText(s).width,i.push(s)),a>n&&(n=a),n}function ze(t,e,i,n){let s=(n=n||{}).data=n.data||{},a=n.garbageCollect=n.garbageCollect||[];n.font!==e&&(s=n.data={},a=n.garbageCollect=[],n.font=e),t.save(),t.font=e;let o=0;const r=i.length;let l,c,h,d,u;for(l=0;l<r;l++)if(d=i[l],null==d||ft(d)){if(ft(d))for(c=0,h=d.length;c<h;c++)u=d[c],null==u||ft(u)||(o=Re(t,s,a,o,u))}else o=Re(t,s,a,o,d);t.restore();const f=a.length/2;if(f>i.length){for(l=0;l<f;l++)delete s[a[l]];a.splice(0,f)}return o}function Fe(t,e,i){const n=t.currentDevicePixelRatio,s=0!==i?Math.max(i/2,.5):0;return Math.round((e-s)*n)/n+s}function Ve(t,e){(e||t)&&((e=e||t.getContext("2d")).save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore())}function Be(t,e,i,n){Ne(t,e,i,n,null)}function Ne(t,e,i,n,s){let a,o,r,l,c,h,d,u;const f=e.pointStyle,p=e.rotation,g=e.radius;let m=(p||0)*Vt;if(f&&"object"==typeof f&&(a=f.toString(),"[object HTMLImageElement]"===a||"[object HTMLCanvasElement]"===a))return t.save(),t.translate(i,n),t.rotate(m),t.drawImage(f,-f.width/2,-f.height/2,f.width,f.height),void t.restore();if(!(isNaN(g)||g<=0)){switch(t.beginPath(),f){default:s?t.ellipse(i,n,s/2,g,0,0,Rt):t.arc(i,n,g,0,Rt),t.closePath();break;case"triangle":h=s?s/2:g,t.moveTo(i+Math.sin(m)*h,n-Math.cos(m)*g),m+=Wt,t.lineTo(i+Math.sin(m)*h,n-Math.cos(m)*g),m+=Wt,t.lineTo(i+Math.sin(m)*h,n-Math.cos(m)*g),t.closePath();break;case"rectRounded":c=.516*g,l=g-c,o=Math.cos(m+Nt)*l,d=Math.cos(m+Nt)*(s?s/2-c:l),r=Math.sin(m+Nt)*l,u=Math.sin(m+Nt)*(s?s/2-c:l),t.arc(i-d,n-r,c,m-Et,m-Bt),t.arc(i+u,n-o,c,m-Bt,m),t.arc(i+d,n+r,c,m,m+Bt),t.arc(i-u,n+o,c,m+Bt,m+Et),t.closePath();break;case"rect":if(!p){l=Math.SQRT1_2*g,h=s?s/2:l,t.rect(i-h,n-l,2*h,2*l);break}m+=Nt;case"rectRot":d=Math.cos(m)*(s?s/2:g),o=Math.cos(m)*g,r=Math.sin(m)*g,u=Math.sin(m)*(s?s/2:g),t.moveTo(i-d,n-r),t.lineTo(i+u,n-o),t.lineTo(i+d,n+r),t.lineTo(i-u,n+o),t.closePath();break;case"crossRot":m+=Nt;case"cross":d=Math.cos(m)*(s?s/2:g),o=Math.cos(m)*g,r=Math.sin(m)*g,u=Math.sin(m)*(s?s/2:g),t.moveTo(i-d,n-r),t.lineTo(i+d,n+r),t.moveTo(i+u,n-o),t.lineTo(i-u,n+o);break;case"star":d=Math.cos(m)*(s?s/2:g),o=Math.cos(m)*g,r=Math.sin(m)*g,u=Math.sin(m)*(s?s/2:g),t.moveTo(i-d,n-r),t.lineTo(i+d,n+r),t.moveTo(i+u,n-o),t.lineTo(i-u,n+o),m+=Nt,d=Math.cos(m)*(s?s/2:g),o=Math.cos(m)*g,r=Math.sin(m)*g,u=Math.sin(m)*(s?s/2:g),t.moveTo(i-d,n-r),t.lineTo(i+d,n+r),t.moveTo(i+u,n-o),t.lineTo(i-u,n+o);break;case"line":o=s?s/2:Math.cos(m)*g,r=Math.sin(m)*g,t.moveTo(i-o,n-r),t.lineTo(i+o,n+r);break;case"dash":t.moveTo(i,n),t.lineTo(i+Math.cos(m)*(s?s/2:g),n+Math.sin(m)*g);break;case!1:t.closePath()}t.fill(),e.borderWidth>0&&t.stroke()}}function We(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.x<e.right+i&&t.y>e.top-i&&t.y<e.bottom+i}function je(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()}function He(t){t.restore()}function $e(t,e,i,n,s){if(!e)return t.lineTo(i.x,i.y);if("middle"===s){const n=(e.x+i.x)/2;t.lineTo(n,e.y),t.lineTo(n,i.y)}else"after"===s!=!!n?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}function Ue(t,e,i,n){if(!e)return t.lineTo(i.x,i.y);t.bezierCurveTo(n?e.cp1x:e.cp2x,n?e.cp1y:e.cp2y,n?i.cp2x:i.cp1x,n?i.cp2y:i.cp1y,i.x,i.y)}function Ye(t,e,i,n,s){if(s.strikethrough||s.underline){const a=t.measureText(n),o=e-a.actualBoundingBoxLeft,r=e+a.actualBoundingBoxRight,l=i-a.actualBoundingBoxAscent,c=i+a.actualBoundingBoxDescent,h=s.strikethrough?(l+c)/2:c;t.strokeStyle=t.fillStyle,t.beginPath(),t.lineWidth=s.decorationWidth||2,t.moveTo(o,h),t.lineTo(r,h),t.stroke()}}function qe(t,e){const i=t.fillStyle;t.fillStyle=e.color,t.fillRect(e.left,e.top,e.width,e.height),t.fillStyle=i}function Xe(t,e,i,n,s,a={}){const o=ft(e)?e:[e],r=a.strokeWidth>0&&""!==a.strokeColor;let l,c;for(t.save(),t.font=s.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),ut(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,a),l=0;l<o.length;++l)c=o[l],a.backdrop&&qe(t,a.backdrop),r&&(a.strokeColor&&(t.strokeStyle=a.strokeColor),ut(a.strokeWidth)||(t.lineWidth=a.strokeWidth),t.strokeText(c,i,n,a.maxWidth)),t.fillText(c,i,n,a.maxWidth),Ye(t,i,n,c,a),n+=Number(s.lineHeight);t.restore()}function Ke(t,e){const{x:i,y:n,w:s,h:a,radius:o}=e;t.arc(i+o.topLeft,n+o.topLeft,o.topLeft,1.5*Et,Et,!0),t.lineTo(i,n+a-o.bottomLeft),t.arc(i+o.bottomLeft,n+a-o.bottomLeft,o.bottomLeft,Et,Bt,!0),t.lineTo(i+s-o.bottomRight,n+a),t.arc(i+s-o.bottomRight,n+a-o.bottomRight,o.bottomRight,Bt,0,!0),t.lineTo(i+s,n+o.topRight),t.arc(i+s-o.topRight,n+o.topRight,o.topRight,0,-Bt,!0),t.lineTo(i+o.topLeft,n)}const Ge=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,Ze=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function Je(t,e){const i=(""+t).match(Ge);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const Qe=t=>+t||0;function ti(t,e){const i={},n=pt(e),s=n?Object.keys(e):e,a=pt(t)?n?i=>bt(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of s)i[t]=Qe(a(t));return i}function ei(t){return ti(t,{top:"y",right:"x",bottom:"y",left:"x"})}function ii(t){return ti(t,["topLeft","topRight","bottomLeft","bottomRight"])}function ni(t){const e=ei(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function si(t,e){t=t||{},e=e||Ee.font;let i=bt(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let n=bt(t.style,e.style);n&&!(""+n).match(Ze)&&(console.warn('Invalid font style specified: "'+n+'"'),n=void 0);const s={family:bt(t.family,e.family),lineHeight:Je(bt(t.lineHeight,e.lineHeight),i),size:i,style:n,weight:bt(t.weight,e.weight),string:""};return s.string=function(t){return!t||ut(t.size)||ut(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(s),s}function ai(t,e,i,n){let s,a,o,r=!0;for(s=0,a=t.length;s<a;++s)if(o=t[s],void 0!==o&&(void 0!==e&&"function"==typeof o&&(o=o(e),r=!1),void 0!==i&&ft(o)&&(o=o[i%o.length],r=!1),void 0!==o))return n&&!r&&(n.cacheable=!1),o}function oi(t,e){return Object.assign(Object.create(t),e)}function ri(t,e=[""],i,n,s=()=>t[0]){const a=i||t;void 0===n&&(n=xi("_fallback",t));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:a,_fallback:n,_getTarget:s,override:i=>ri([i,...t],e,a,n)};return new Proxy(o,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,n)=>ui(i,n,()=>function(t,e,i,n){let s;for(const a of e)if(s=xi(hi(a,t),i),void 0!==s)return di(t,s)?mi(i,n,t,s):s}(n,e,t,i)),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>vi(t).includes(e),ownKeys:t=>vi(t),set(t,e,i){const n=t._storage||(t._storage=s());return t[e]=n[e]=i,delete t._keys,!0}})}function li(t,e,i,n){const s={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:ci(t,n),setContext:e=>li(t,e,i,n),override:s=>li(t.override(s),e,i,n)};return new Proxy(s,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>ui(t,e,()=>function(t,e,i){const{_proxy:n,_context:s,_subProxy:a,_descriptors:o}=t;let r=n[e];It(r)&&o.isScriptable(e)&&(r=function(t,e,i,n){const{_proxy:s,_context:a,_subProxy:o,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t);let l=e(a,o||n);r.delete(t),di(t,l)&&(l=mi(s._scopes,s,t,l));return l}(e,r,t,i));ft(r)&&r.length&&(r=function(t,e,i,n){const{_proxy:s,_context:a,_subProxy:o,_descriptors:r}=i;if(void 0!==a.index&&n(t))return e[a.index%e.length];if(pt(e[0])){const i=e,n=s._scopes.filter(t=>t!==i);e=[];for(const l of i){const i=mi(n,s,t,l);e.push(li(i,a,o&&o[t],r))}}return e}(e,r,t,o.isIndexable));di(e,r)&&(r=li(r,s,a&&a[e],o));return r}(t,e,i)),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,n)=>(t[i]=n,delete e[i],!0)})}function ci(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:n=e.indexable,_allKeys:s=e.allKeys}=t;return{allKeys:s,scriptable:i,indexable:n,isScriptable:It(i)?i:()=>i,isIndexable:It(n)?n:()=>n}}const hi=(t,e)=>t?t+Tt(e):e,di=(t,e)=>pt(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function ui(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const n=i();return t[e]=n,n}function fi(t,e,i){return It(t)?t(e,i):t}const pi=(t,e)=>!0===t?e:"string"==typeof t?At(e,t):void 0;function gi(t,e,i,n,s){for(const a of e){const e=pi(i,a);if(e){t.add(e);const a=fi(e._fallback,i,s);if(void 0!==a&&a!==i&&a!==n)return a}else if(!1===e&&void 0!==n&&i!==n)return null}return!1}function mi(t,e,i,n){const s=e._rootScopes,a=fi(e._fallback,i,n),o=[...t,...s],r=new Set;r.add(n);let l=bi(r,o,i,a||i,n);return null!==l&&((void 0===a||a===i||(l=bi(r,o,a,l,n),null!==l))&&ri(Array.from(r),[""],s,a,()=>function(t,e,i){const n=t._getTarget();e in n||(n[e]={});const s=n[e];if(ft(s)&&pt(i))return i;return s||{}}(e,i,n)))}function bi(t,e,i,n,s){for(;i;)i=gi(t,e,i,n,s);return i}function xi(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function vi(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter(t=>!t.startsWith("_")))e.add(t);return Array.from(e)}(t._scopes)),e}function yi(t,e,i,n){const{iScale:s}=t,{key:a="r"}=this._parsing,o=new Array(n);let r,l,c,h;for(r=0,l=n;r<l;++r)c=r+i,h=e[c],o[r]={r:s.parse(At(h,a),c)};return o}const _i=Number.EPSILON||1e-14,wi=(t,e)=>e<t.length&&!t[e].skip&&t[e],ki=t=>"x"===t?"y":"x";function Mi(t,e,i,n){const s=t.skip?e:t,a=e,o=i.skip?e:i,r=Jt(a,s),l=Jt(o,a);let c=r/(r+l),h=l/(r+l);c=isNaN(c)?0:c,h=isNaN(h)?0:h;const d=n*c,u=n*h;return{previous:{x:a.x-d*(o.x-s.x),y:a.y-d*(o.y-s.y)},next:{x:a.x+u*(o.x-s.x),y:a.y+u*(o.y-s.y)}}}function Si(t,e="x"){const i=ki(e),n=t.length,s=Array(n).fill(0),a=Array(n);let o,r,l,c=wi(t,0);for(o=0;o<n;++o)if(r=l,l=c,c=wi(t,o+1),l){if(c){const t=c[e]-l[e];s[o]=0!==t?(c[i]-l[i])/t:0}a[o]=r?c?Ht(s[o-1])!==Ht(s[o])?0:(s[o-1]+s[o])/2:s[o-1]:s[o]}!function(t,e,i){const n=t.length;let s,a,o,r,l,c=wi(t,0);for(let h=0;h<n-1;++h)l=c,c=wi(t,h+1),l&&c&&($t(e[h],0,_i)?i[h]=i[h+1]=0:(s=i[h]/e[h],a=i[h+1]/e[h],r=Math.pow(s,2)+Math.pow(a,2),r<=9||(o=3/Math.sqrt(r),i[h]=s*o*e[h],i[h+1]=a*o*e[h])))}(t,s,a),function(t,e,i="x"){const n=ki(i),s=t.length;let a,o,r,l=wi(t,0);for(let c=0;c<s;++c){if(o=r,r=l,l=wi(t,c+1),!r)continue;const s=r[i],h=r[n];o&&(a=(s-o[i])/3,r[`cp1${i}`]=s-a,r[`cp1${n}`]=h-a*e[c]),l&&(a=(l[i]-s)/3,r[`cp2${i}`]=s+a,r[`cp2${n}`]=h+a*e[c])}}(t,a,e)}function Ci(t,e,i){return Math.max(Math.min(t,i),e)}function Di(t,e,i,n,s){let a,o,r,l;if(e.spanGaps&&(t=t.filter(t=>!t.skip)),"monotone"===e.cubicInterpolationMode)Si(t,s);else{let i=n?t[t.length-1]:t[0];for(a=0,o=t.length;a<o;++a)r=t[a],l=Mi(i,r,t[Math.min(a+1,o-(n?0:1))%o],e.tension),r.cp1x=l.previous.x,r.cp1y=l.previous.y,r.cp2x=l.next.x,r.cp2y=l.next.y,i=r}e.capBezierPoints&&function(t,e){let i,n,s,a,o,r=We(t[0],e);for(i=0,n=t.length;i<n;++i)o=a,a=r,r=i<n-1&&We(t[i+1],e),a&&(s=t[i],o&&(s.cp1x=Ci(s.cp1x,e.left,e.right),s.cp1y=Ci(s.cp1y,e.top,e.bottom)),r&&(s.cp2x=Ci(s.cp2x,e.left,e.right),s.cp2y=Ci(s.cp2y,e.top,e.bottom)))}(t,i)}function Pi(){return"undefined"!=typeof window&&"undefined"!=typeof document}function Ai(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function Ti(t,e,i){let n;return"string"==typeof t?(n=parseInt(t,10),-1!==t.indexOf("%")&&(n=n/100*e.parentNode[i])):n=t,n}const Oi=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);const Ii=["top","right","bottom","left"];function Li(t,e,i){const n={};i=i?"-"+i:"";for(let s=0;s<4;s++){const a=Ii[s];n[a]=parseFloat(t[e+"-"+a+i])||0}return n.width=n.left+n.right,n.height=n.top+n.bottom,n}function Ei(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:n}=e,s=Oi(i),a="border-box"===s.boxSizing,o=Li(s,"padding"),r=Li(s,"border","width"),{x:l,y:c,box:h}=function(t,e){const i=t.touches,n=i&&i.length?i[0]:t,{offsetX:s,offsetY:a}=n;let o,r,l=!1;if(((t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot))(s,a,t.target))o=s,r=a;else{const t=e.getBoundingClientRect();o=n.clientX-t.left,r=n.clientY-t.top,l=!0}return{x:o,y:r,box:l}}(t,i),d=o.left+(h&&r.left),u=o.top+(h&&r.top);let{width:f,height:p}=e;return a&&(f-=o.width+r.width,p-=o.height+r.height),{x:Math.round((l-d)/f*i.width/n),y:Math.round((c-u)/p*i.height/n)}}const Ri=t=>Math.round(10*t)/10;function zi(t,e,i,n){const s=Oi(t),a=Li(s,"margin"),o=Ti(s.maxWidth,t,"clientWidth")||Ft,r=Ti(s.maxHeight,t,"clientHeight")||Ft,l=function(t,e,i){let n,s;if(void 0===e||void 0===i){const a=t&&Ai(t);if(a){const t=a.getBoundingClientRect(),o=Oi(a),r=Li(o,"border","width"),l=Li(o,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,n=Ti(o.maxWidth,a,"clientWidth"),s=Ti(o.maxHeight,a,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:n||Ft,maxHeight:s||Ft}}(t,e,i);let{width:c,height:h}=l;if("content-box"===s.boxSizing){const t=Li(s,"border","width"),e=Li(s,"padding");c-=e.width+t.width,h-=e.height+t.height}c=Math.max(0,c-a.width),h=Math.max(0,n?c/n:h-a.height),c=Ri(Math.min(c,o,l.maxWidth)),h=Ri(Math.min(h,r,l.maxHeight)),c&&!h&&(h=Ri(c/2));return(void 0!==e||void 0!==i)&&n&&l.height&&h>l.height&&(h=l.height,c=Ri(Math.floor(h*n))),{width:c,height:h}}function Fi(t,e,i){const n=e||1,s=Ri(t.height*n),a=Ri(t.width*n);t.height=Ri(t.height),t.width=Ri(t.width);const o=t.canvas;return o.style&&(i||!o.style.height&&!o.style.width)&&(o.style.height=`${t.height}px`,o.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==n||o.height!==s||o.width!==a)&&(t.currentDevicePixelRatio=n,o.height=s,o.width=a,t.ctx.setTransform(n,0,0,n,0,0),!0)}const Vi=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};Pi()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function Bi(t,e){const i=function(t,e){return Oi(t).getPropertyValue(e)}(t,e),n=i&&i.match(/^(\d+)(\.\d+)?px$/);return n?+n[1]:void 0}function Ni(t,e,i,n){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function Wi(t,e,i,n){return{x:t.x+i*(e.x-t.x),y:"middle"===n?i<.5?t.y:e.y:"after"===n?i<1?t.y:e.y:i>0?e.y:t.y}}function ji(t,e,i,n){const s={x:t.cp2x,y:t.cp2y},a={x:e.cp1x,y:e.cp1y},o=Ni(t,s,i),r=Ni(s,a,i),l=Ni(a,e,i),c=Ni(o,r,i),h=Ni(r,l,i);return Ni(c,h,i)}function Hi(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function $i(t,e){let i,n;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,n=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=n)}function Ui(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Yi(t){return"angle"===t?{between:ee,compare:Qt,normalize:te}:{between:ne,compare:(t,e)=>t-e,normalize:t=>t}}function qi({start:t,end:e,count:i,loop:n,style:s}){return{start:t%i,end:e%i,loop:n&&(e-t+1)%i==0,style:s}}function Xi(t,e,i){if(!i)return[t];const{property:n,start:s,end:a}=i,o=e.length,{compare:r,between:l,normalize:c}=Yi(n),{start:h,end:d,loop:u,style:f}=function(t,e,i){const{property:n,start:s,end:a}=i,{between:o,normalize:r}=Yi(n),l=e.length;let c,h,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,c=0,h=l;c<h&&o(r(e[d%l][n]),s,a);++c)d--,u--;d%=l,u%=l}return u<d&&(u+=l),{start:d,end:u,loop:f,style:t.style}}(t,e,i),p=[];let g,m,b,x=!1,v=null;const y=()=>x||l(s,b,g)&&0!==r(s,b),_=()=>!x||0===r(a,g)||l(a,b,g);for(let t=h,i=h;t<=d;++t)m=e[t%o],m.skip||(g=c(m[n]),g!==b&&(x=l(g,s,a),null===v&&y()&&(v=0===r(g,s)?t:i),null!==v&&_()&&(p.push(qi({start:v,end:t,loop:u,count:o,style:f})),v=null),i=t,b=g));return null!==v&&p.push(qi({start:v,end:d,loop:u,count:o,style:f})),p}function Ki(t,e){const i=[],n=t.segments;for(let s=0;s<n.length;s++){const a=Xi(n[s],t.points,e);a.length&&i.push(...a)}return i}function Gi(t,e,i,n){return n&&n.setContext&&i?function(t,e,i,n){const s=t._chart.getContext(),a=Zi(t.options),{_datasetIndex:o,options:{spanGaps:r}}=t,l=i.length,c=[];let h=a,d=e[0].start,u=d;function f(t,e,n,s){const a=r?-1:1;if(t!==e){for(t+=l;i[t%l].skip;)t-=a;for(;i[e%l].skip;)e+=a;t%l!==e%l&&(c.push({start:t%l,end:e%l,loop:n,style:s}),h=s,d=e%l)}}for(const t of e){d=r?d:t.start;let e,a=i[d%l];for(u=d+1;u<=t.end;u++){const r=i[u%l];e=Zi(n.setContext(oi(s,{type:"segment",p0:a,p1:r,p0DataIndex:(u-1)%l,p1DataIndex:u%l,datasetIndex:o}))),Ji(e,h)&&f(d,u-1,t.loop,h),a=r,h=e}d<u-1&&f(d,u-1,t.loop,h)}return c}(t,e,i,n):e}function Zi(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,borderWidth:t.borderWidth,borderColor:t.borderColor}}function Ji(t,e){if(!e)return!1;const i=[],n=function(t,e){return ye(e)?(i.includes(e)||i.push(e),i.indexOf(e)):e};return JSON.stringify(t,n)!==JSON.stringify(e,n)}function Qi(t,e,i){return t.options.clip?t[i]:e[i]}function tn(t,e){const i=e._clip;if(i.disabled)return!1;const n=function(t,e){const{xScale:i,yScale:n}=t;return i&&n?{left:Qi(i,e,"left"),right:Qi(i,e,"right"),top:Qi(n,e,"top"),bottom:Qi(n,e,"bottom")}:e}(e,t.chartArea);return{left:!1===i.left?0:n.left-(!0===i.left?0:i.left),right:!1===i.right?t.width:n.right+(!0===i.right?0:i.right),top:!1===i.top?0:n.top-(!0===i.top?0:i.top),bottom:!1===i.bottom?t.height:n.bottom+(!0===i.bottom?0:i.bottom)}} /*! * Chart.js v4.5.1 * https://www.chartjs.org * (c) 2025 Chart.js Contributors * Released under the MIT License */class en{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,n){const s=e.listeners[n],a=e.duration;s.forEach(n=>n({chart:t,initial:e.initial,numSteps:a,currentStep:Math.min(i-e.start,a)}))}_refresh(){this._request||(this._running=!0,this._request=he.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let e=0;this._charts.forEach((i,n)=>{if(!i.running||!i.items.length)return;const s=i.items;let a,o=s.length-1,r=!1;for(;o>=0;--o)a=s[o],a._active?(a._total>i.duration&&(i.duration=a._total),a.tick(t),r=!0):(s[o]=s[s.length-1],s.pop());r&&(n.draw(),this._notify(n,i,t,"progress")),s.length||(i.running=!1,this._notify(n,i,t,"complete"),i.initial=!1),e+=s.length}),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((t,e)=>Math.max(t,e._duration),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let n=i.length-1;for(;n>=0;--n)i[n].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var nn=new en;const sn="transparent",an={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const n=_e(t||sn),s=n.valid&&_e(e||sn);return s&&s.valid?s.mix(n,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class on{constructor(t,e,i,n){const s=e[i];n=ai([t.to,n,s,t.from]);const a=ai([t.from,s,n]);this._active=!0,this._fn=t.fn||an[t.type||typeof a],this._easing=ve[t.easing]||ve.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=a,this._to=n,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const n=this._target[this._prop],s=i-this._start,a=this._duration-s;this._start=i,this._duration=Math.floor(Math.max(a,t.duration)),this._total+=s,this._loop=!!t.loop,this._to=ai([t.to,e,n,t.from]),this._from=ai([t.from,n,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,n=this._prop,s=this._from,a=this._loop,o=this._to;let r;if(this._active=s!==o&&(a||e<i),!this._active)return this._target[n]=o,void this._notify(!0);e<0?this._target[n]=s:(r=e/i%2,r=a&&r>1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[n]=this._fn(s,o,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise((e,i)=>{t.push({res:e,rej:i})})}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t<i.length;t++)i[t][e]()}}class rn{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!pt(t))return;const e=Object.keys(Ee.animation),i=this._properties;Object.getOwnPropertyNames(t).forEach(n=>{const s=t[n];if(!pt(s))return;const a={};for(const t of e)a[t]=s[t];(ft(s.properties)&&s.properties||[n]).forEach(t=>{t!==n&&i.has(t)||i.set(t,a)})})}_animateOptions(t,e){const i=e.options,n=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!n)return[];const s=this._createAnimations(n,i);return i.$shared&&function(t,e){const i=[],n=Object.keys(e);for(let e=0;e<n.length;e++){const s=t[n[e]];s&&s.active()&&i.push(s.wait())}return Promise.all(i)}(t.options.$animations,i).then(()=>{t.options=i},()=>{}),s}_createAnimations(t,e){const i=this._properties,n=[],s=t.$animations||(t.$animations={}),a=Object.keys(e),o=Date.now();let r;for(r=a.length-1;r>=0;--r){const l=a[r];if("$"===l.charAt(0))continue;if("options"===l){n.push(...this._animateOptions(t,e));continue}const c=e[l];let h=s[l];const d=i.get(l);if(h){if(d&&h.active()){h.update(d,c,o);continue}h.cancel()}d&&d.duration?(s[l]=h=new on(d,t,l,c),n.push(h)):t[l]=c}return n}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(nn.add(this._chart,i),!0):void 0}}function ln(t,e){const i=t&&t.options||{},n=i.reverse,s=void 0===i.min?e:0,a=void 0===i.max?e:0;return{start:n?a:s,end:n?s:a}}function cn(t,e){const i=[],n=t._getSortedDatasetMetas(e);let s,a;for(s=0,a=n.length;s<a;++s)i.push(n[s].index);return i}function hn(t,e,i,n={}){const s=t.keys,a="single"===n.mode;let o,r,l,c;if(null===e)return;let h=!1;for(o=0,r=s.length;o<r;++o){if(l=+s[o],l===i){if(h=!0,n.all)continue;break}c=t.values[l],gt(c)&&(a||0===e||Ht(e)===Ht(c))&&(e+=c)}return h||n.all?e:0}function dn(t,e){const i=t&&t.options.stacked;return i||void 0===i&&void 0!==e.stack}function un(t,e,i){const n=t[e]||(t[e]={});return n[i]||(n[i]={})}function fn(t,e,i,n){for(const s of e.getMatchingVisibleMetas(n).reverse()){const e=t[s.index];if(i&&e>0||!i&&e<0)return s.index}return null}function pn(t,e){const{chart:i,_cachedMeta:n}=t,s=i._stacks||(i._stacks={}),{iScale:a,vScale:o,index:r}=n,l=a.axis,c=o.axis,h=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(a,o,n),d=e.length;let u;for(let t=0;t<d;++t){const i=e[t],{[l]:a,[c]:d}=i;u=(i._stacks||(i._stacks={}))[c]=un(s,h,a),u[r]=d,u._top=fn(u,o,!0,n.type),u._bottom=fn(u,o,!1,n.type);(u._visualValues||(u._visualValues={}))[r]=d}}function gn(t,e){const i=t.scales;return Object.keys(i).filter(t=>i[t].axis===e).shift()}function mn(t,e){const i=t.controller.index,n=t.vScale&&t.vScale.axis;if(n){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[n]||void 0===e[n][i])return;delete e[n][i],void 0!==e[n]._visualValues&&void 0!==e[n]._visualValues[i]&&delete e[n]._visualValues[i]}}}const bn=t=>"reset"===t||"none"===t,xn=(t,e)=>e?t:Object.assign({},t);class vn{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=dn(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&mn(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),n=(t,e,i,n)=>"x"===t?e:"r"===t?n:i,s=e.xAxisID=bt(i.xAxisID,gn(t,"x")),a=e.yAxisID=bt(i.yAxisID,gn(t,"y")),o=e.rAxisID=bt(i.rAxisID,gn(t,"r")),r=e.indexAxis,l=e.iAxisID=n(r,s,a,o),c=e.vAxisID=n(r,a,s,o);e.xScale=this.getScaleForId(s),e.yScale=this.getScaleForId(a),e.rScale=this.getScaleForId(o),e.iScale=this.getScaleForId(l),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&le(this._data,this),t._stacked&&mn(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(pt(e)){const t=this._cachedMeta;this._data=function(t,e){const{iScale:i,vScale:n}=e,s="x"===i.axis?"x":"y",a="x"===n.axis?"x":"y",o=Object.keys(t),r=new Array(o.length);let l,c,h;for(l=0,c=o.length;l<c;++l)h=o[l],r[l]={[s]:h,[a]:t[h]};return r}(e,t)}else if(i!==e){if(i){le(i,this);const t=this._cachedMeta;mn(t),t._parsed=[]}e&&Object.isExtensible(e)&&(s=this,(n=e)._chartjs?n._chartjs.listeners.push(s):(Object.defineProperty(n,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[s]}}),re.forEach(t=>{const e="_onData"+Tt(t),i=n[t];Object.defineProperty(n,t,{configurable:!0,enumerable:!1,value(...t){const s=i.apply(this,t);return n._chartjs.listeners.forEach(i=>{"function"==typeof i[e]&&i[e](...t)}),s}})}))),this._syncList=[],this._data=e}var n,s}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,i=this.getDataset();let n=!1;this._dataCheck();const s=e._stacked;e._stacked=dn(e.vScale,e),e.stack!==i.stack&&(n=!0,mn(e),e.stack=i.stack),this._resyncElements(t),(n||s!==e._stacked)&&(pn(this,e._parsed),e._stacked=dn(e.vScale,e))}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:i,_data:n}=this,{iScale:s,_stacked:a}=i,o=s.axis;let r,l,c,h=0===t&&e===n.length||i._sorted,d=t>0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=n,i._sorted=!0,c=n;else{c=ft(n[t])?this.parseArrayData(i,n,t,e):pt(n[t])?this.parseObjectData(i,n,t,e):this.parsePrimitiveData(i,n,t,e);const s=()=>null===l[o]||d&&l[o]<d[o];for(r=0;r<e;++r)i._parsed[r+t]=l=c[r],h&&(s()&&(h=!1),d=l);i._sorted=h}a&&pn(this,c)}parsePrimitiveData(t,e,i,n){const{iScale:s,vScale:a}=t,o=s.axis,r=a.axis,l=s.getLabels(),c=s===a,h=new Array(n);let d,u,f;for(d=0,u=n;d<u;++d)f=d+i,h[d]={[o]:c||s.parse(l[f],f),[r]:a.parse(e[f],f)};return h}parseArrayData(t,e,i,n){const{xScale:s,yScale:a}=t,o=new Array(n);let r,l,c,h;for(r=0,l=n;r<l;++r)c=r+i,h=e[c],o[r]={x:s.parse(h[0],c),y:a.parse(h[1],c)};return o}parseObjectData(t,e,i,n){const{xScale:s,yScale:a}=t,{xAxisKey:o="x",yAxisKey:r="y"}=this._parsing,l=new Array(n);let c,h,d,u;for(c=0,h=n;c<h;++c)d=c+i,u=e[d],l[c]={x:s.parse(At(u,o),d),y:a.parse(At(u,r),d)};return l}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,e,i){const n=this.chart,s=this._cachedMeta,a=e[t.axis];return hn({keys:cn(n,!0),values:e._stacks[t.axis]._visualValues},a,s.index,{mode:i})}updateRangeFromParsed(t,e,i,n){const s=i[e.axis];let a=null===s?NaN:s;const o=n&&i._stacks[e.axis];n&&o&&(n.values=o,a=hn(n,s,this._cachedMeta.index)),t.min=Math.min(t.min,a),t.max=Math.max(t.max,a)}getMinMax(t,e){const i=this._cachedMeta,n=i._parsed,s=i._sorted&&t===i.iScale,a=n.length,o=this._getOtherScale(t),r=((t,e,i)=>t&&!e.hidden&&e._stacked&&{keys:cn(i,!0),values:null})(e,i,this.chart),l={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:h}=function(t){const{min:e,max:i,minDefined:n,maxDefined:s}=t.getUserBounds();return{min:n?e:Number.NEGATIVE_INFINITY,max:s?i:Number.POSITIVE_INFINITY}}(o);let d,u;function f(){u=n[d];const e=u[o.axis];return!gt(u[t.axis])||c>e||h<e}for(d=0;d<a&&(f()||(thi