t==="x"?"y":"x";function k0(t,e,n,i){const r=t.skip?e:t,a=e,s=n.skip?e:n,o=mm(a,r),l=mm(s,a);let c=o/(o+l),d=l/(o+l);c=isNaN(c)?0:c,d=isNaN(d)?0:d;const u=i*c,_=i*d;return{previous:{x:a.x-u*(s.x-r.x),y:a.y-u*(s.y-r.y)},next:{x:a.x+_*(s.x-r.x),y:a.y+_*(s.y-r.y)}}}function F0(t,e,n){const i=t.length;let r,a,s,o,l,c=jr(t,0);for(let d=0;d!c.skip)),e.cubicInterpolationMode==="monotone")B0(t,r);else{let c=i?t[t.length-1]:t[0];for(a=0,s=t.length;at.ownerDocument.defaultView.getComputedStyle(t,null);function z0(t,e){return uc(t).getPropertyValue(e)}const H0=["top","right","bottom","left"];function cr(t,e,n){const i={};n=n?"-"+n:"";for(let r=0;r<4;r++){const a=H0[r];i[a]=parseFloat(t[e+"-"+a+n])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}const V0=(t,e,n)=>(t>0||e>0)&&(!n||!n.shadowRoot);function q0(t,e){const n=t.touches,i=n&&n.length?n[0]:t,{offsetX:r,offsetY:a}=i;let s=!1,o,l;if(V0(r,a,t.target))o=r,l=a;else{const c=e.getBoundingClientRect();o=i.clientX-c.left,l=i.clientY-c.top,s=!0}return{x:o,y:l,box:s}}function Qi(t,e){if("native"in t)return t;const{canvas:n,currentDevicePixelRatio:i}=e,r=uc(n),a=r.boxSizing==="border-box",s=cr(r,"padding"),o=cr(r,"border","width"),{x:l,y:c,box:d}=q0(t,n),u=s.left+(d&&o.left),_=s.top+(d&&o.top);let{width:p,height:f}=e;return a&&(p-=s.width+o.width,f-=s.height+o.height),{x:Math.round((l-u)/p*n.width/i),y:Math.round((c-_)/f*n.height/i)}}function $0(t,e,n){let i,r;if(e===void 0||n===void 0){const a=zf(t);if(!a)e=t.clientWidth,n=t.clientHeight;else{const s=a.getBoundingClientRect(),o=uc(a),l=cr(o,"border","width"),c=cr(o,"padding");e=s.width-c.width-l.width,n=s.height-c.height-l.height,i=Ol(o.maxWidth,a,"clientWidth"),r=Ol(o.maxHeight,a,"clientHeight")}}return{width:e,height:n,maxWidth:i||yl,maxHeight:r||yl}}const bo=t=>Math.round(t*10)/10;function W0(t,e,n,i){const r=uc(t),a=cr(r,"margin"),s=Ol(r.maxWidth,t,"clientWidth")||yl,o=Ol(r.maxHeight,t,"clientHeight")||yl,l=$0(t,e,n);let{width:c,height:d}=l;if(r.boxSizing==="content-box"){const _=cr(r,"border","width"),p=cr(r,"padding");c-=p.width+_.width,d-=p.height+_.height}return c=Math.max(0,c-a.width),d=Math.max(0,i?c/i:d-a.height),c=bo(Math.min(c,s,l.maxWidth)),d=bo(Math.min(d,o,l.maxHeight)),c&&!d&&(d=bo(c/2)),(e!==void 0||n!==void 0)&&i&&l.height&&d>l.height&&(d=l.height,c=bo(Math.floor(d*i))),{width:c,height:d}}function eE(t,e,n){const i=e||1,r=Math.floor(t.height*i),a=Math.floor(t.width*i);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const s=t.canvas;return s.style&&(n||!s.style.height&&!s.style.width)&&(s.style.height=`${t.height}px`,s.style.width=`${t.width}px`),t.currentDevicePixelRatio!==i||s.height!==r||s.width!==a?(t.currentDevicePixelRatio=i,s.height=r,s.width=a,t.ctx.setTransform(i,0,0,i,0,0),!0):!1}const K0=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};Yf()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch{}return t}();function tE(t,e){const n=z0(t,e),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}function Xi(t,e,n,i){return{x:t.x+n*(e.x-t.x),y:t.y+n*(e.y-t.y)}}function Q0(t,e,n,i){return{x:t.x+n*(e.x-t.x),y:i==="middle"?n<.5?t.y:e.y:i==="after"?n<1?t.y:e.y:n>0?e.y:t.y}}function X0(t,e,n,i){const r={x:t.cp2x,y:t.cp2y},a={x:e.cp1x,y:e.cp1y},s=Xi(t,r,n),o=Xi(r,a,n),l=Xi(a,e,n),c=Xi(s,o,n),d=Xi(o,l,n);return Xi(c,d,n)}const Z0=function(t,e){return{x(n){return t+t+e-n},setWidth(n){e=n},textAlign(n){return n==="center"?n:n==="right"?"left":"right"},xPlus(n,i){return n-i},leftForLtr(n,i){return n-i}}},j0=function(){return{x(t){return t},setWidth(t){},textAlign(t){return t},xPlus(t,e){return t+e},leftForLtr(t,e){return t}}};function zr(t,e,n){return t?Z0(e,n):j0()}function FR(t,e){let n,i;(e==="ltr"||e==="rtl")&&(n=t.canvas.style,i=[n.getPropertyValue("direction"),n.getPropertyPriority("direction")],n.setProperty("direction",e,"important"),t.prevTextDirection=i)}function UR(t,e){e!==void 0&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function BR(t){return t==="angle"?{between:Es,compare:e0,normalize:nn}:{between:Kn,compare:(e,n)=>e-n,normalize:e=>e}}function nE({start:t,end:e,count:n,loop:i,style:r}){return{start:t%n,end:e%n,loop:i&&(e-t+1)%n===0,style:r}}function J0(t,e,n){const{property:i,start:r,end:a}=n,{between:s,normalize:o}=BR(i),l=e.length;let{start:c,end:d,loop:u}=t,_,p;if(u){for(c+=l,d+=l,_=0,p=l;_l(r,T,g)&&o(r,T)!==0,y=()=>o(a,g)===0||l(a,T,g),N=()=>m||b(),A=()=>!m||y();for(let I=d,x=d;I<=u;++I)E=e[I%s],!E.skip&&(g=c(E[i]),g!==T&&(m=l(g,r,a),h===null&&N()&&(h=o(g,r)===0?I:x),h!==null&&A()&&(f.push(nE({start:h,end:I,loop:_,count:s,style:p})),h=null),x=I,T=g));return h!==null&&f.push(nE({start:h,end:u,loop:_,count:s,style:p})),f}function YR(t,e){const n=[],i=t.segments;for(let r=0;rr&&t[a%e].skip;)a--;return a%=e,{start:r,end:a}}function tk(t,e,n,i){const r=t.length,a=[];let s=e,o=t[e],l;for(l=e+1;l<=n;++l){const c=t[l%r];c.skip||c.stop?o.skip||(i=!1,a.push({start:e%r,end:(l-1)%r,loop:i}),e=s=c.stop?l:null):(s=l,o.skip&&(e=l)),o=c}return s!==null&&a.push({start:e%r,end:s%r,loop:i}),a}function nk(t,e){const n=t.points,i=t.options.spanGaps,r=n.length;if(!r)return[];const a=!!t._loop,{start:s,end:o}=ek(n,r,a,i);if(i===!0)return iE(t,[{start:s,end:o,loop:a}],n,e);const l=oo({chart:e,initial:n.initial,numSteps:s,currentStep:Math.min(i-n.start,s)}))}_refresh(){this._request||(this._running=!0,this._request=CR.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let n=0;this._charts.forEach((i,r)=>{if(!i.running||!i.items.length)return;const a=i.items;let s=a.length-1,o=!1,l;for(;s>=0;--s)l=a[s],l._active?(l._total>i.duration&&(i.duration=l._total),l.tick(e),o=!0):(a[s]=a[a.length-1],a.pop());o&&(r.draw(),this._notify(r,i,e,"progress")),a.length||(i.running=!1,this._notify(r,i,e,"complete"),i.initial=!1),n+=a.length}),this._lastDate=e,n===0&&(this._running=!1)}_getAnims(e){const n=this._charts;let i=n.get(e);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},n.set(e,i)),i}listen(e,n,i){this._getAnims(e).listeners[n].push(i)}add(e,n){!n||!n.length||this._getAnims(e).items.push(...n)}has(e){return this._getAnims(e).items.length>0}start(e){const n=this._charts.get(e);n&&(n.running=!0,n.start=Date.now(),n.duration=n.items.reduce((i,r)=>Math.max(i,r._duration),0),this._refresh())}running(e){if(!this._running)return!1;const n=this._charts.get(e);return!(!n||!n.running||!n.items.length)}stop(e){const n=this._charts.get(e);if(!n||!n.items.length)return;const i=n.items;let r=i.length-1;for(;r>=0;--r)i[r].cancel();n.items=[],this._notify(e,n,Date.now(),"complete")}remove(e){return this._charts.delete(e)}}var Hn=new ak;const aE="transparent",sk={boolean(t,e,n){return n>.5?e:t},color(t,e,n){const i=Qh(t||aE),r=i.valid&&Qh(e||aE);return r&&r.valid?r.mix(i,n).hexString():e},number(t,e,n){return t+(e-t)*n}};class ok{constructor(e,n,i,r){const a=n[i];r=Ze([e.to,r,a,e.from]);const s=Ze([e.from,a,r]);this._active=!0,this._fn=e.fn||sk[e.type||typeof s],this._easing=Ha[e.easing]||Ha.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=n,this._prop=i,this._from=s,this._to=r,this._promises=void 0}active(){return this._active}update(e,n,i){if(this._active){this._notify(!1);const r=this._target[this._prop],a=i-this._start,s=this._duration-a;this._start=i,this._duration=Math.floor(Math.max(s,e.duration)),this._total+=a,this._loop=!!e.loop,this._to=Ze([e.to,n,r,e.from]),this._from=Ze([e.from,r,n])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){const n=e-this._start,i=this._duration,r=this._prop,a=this._from,s=this._loop,o=this._to;let l;if(this._active=a!==o&&(s||n1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[r]=this._fn(a,o,l)}wait(){const e=this._promises||(this._promises=[]);return new Promise((n,i)=>{e.push({res:n,rej:i})})}_notify(e){const n=e?"res":"rej",i=this._promises||[];for(let r=0;r{const a=e[r];if(!ke(a))return;const s={};for(const o of n)s[o]=a[o];(et(a.properties)&&a.properties||[r]).forEach(o=>{(o===r||!i.has(o))&&i.set(o,s)})})}_animateOptions(e,n){const i=n.options,r=ck(e,i);if(!r)return[];const a=this._createAnimations(r,i);return i.$shared&&lk(e.options.$animations,i).then(()=>{e.options=i},()=>{}),a}_createAnimations(e,n){const i=this._properties,r=[],a=e.$animations||(e.$animations={}),s=Object.keys(n),o=Date.now();let l;for(l=s.length-1;l>=0;--l){const c=s[l];if(c.charAt(0)==="$")continue;if(c==="options"){r.push(...this._animateOptions(e,n));continue}const d=n[c];let u=a[c];const _=i.get(c);if(u)if(_&&u.active()){u.update(_,d,o);continue}else u.cancel();if(!_||!_.duration){e[c]=d;continue}a[c]=u=new ok(_,e,c,d),r.push(u)}return r}update(e,n){if(this._properties.size===0){Object.assign(e,n);return}const i=this._createAnimations(e,n);if(i.length)return Hn.add(this._chart,i),!0}}function lk(t,e){const n=[],i=Object.keys(e);for(let r=0;r0||!n&&a<0)return r.index}return null}function dE(t,e){const{chart:n,_cachedMeta:i}=t,r=n._stacks||(n._stacks={}),{iScale:a,vScale:s,index:o}=i,l=a.axis,c=s.axis,d=pk(a,s,i),u=e.length;let _;for(let p=0;pn[i].axis===e).shift()}function gk(t,e){return Bi(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}function hk(t,e,n){return Bi(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:n,index:e,mode:"default",type:"data"})}function ma(t,e){const n=t.controller.index,i=t.vScale&&t.vScale.axis;if(i){e=e||t._parsed;for(const r of e){const a=r._stacks;if(!a||a[i]===void 0||a[i][n]===void 0)return;delete a[i][n],a[i]._visualValues!==void 0&&a[i]._visualValues[n]!==void 0&&delete a[i]._visualValues[n]}}}const Fc=t=>t==="reset"||t==="none",uE=(t,e)=>e?t:Object.assign({},t),Ek=(t,e,n)=>t&&!e.hidden&&e._stacked&&{keys:HR(n,!0),values:null};class bn{constructor(e,n){this.chart=e,this._ctx=e.ctx,this.index=n,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 e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=lE(e.vScale,e),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(e){this.index!==e&&ma(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,n=this._cachedMeta,i=this.getDataset(),r=(u,_,p,f)=>u==="x"?_:u==="r"?f:p,a=n.xAxisID=xe(i.xAxisID,kc(e,"x")),s=n.yAxisID=xe(i.yAxisID,kc(e,"y")),o=n.rAxisID=xe(i.rAxisID,kc(e,"r")),l=n.indexAxis,c=n.iAxisID=r(l,a,s,o),d=n.vAxisID=r(l,s,a,o);n.xScale=this.getScaleForId(a),n.yScale=this.getScaleForId(s),n.rScale=this.getScaleForId(o),n.iScale=this.getScaleForId(c),n.vScale=this.getScaleForId(d)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const n=this._cachedMeta;return e===n.iScale?n.vScale:n.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&Cl(this._data,this),e._stacked&&ma(e)}_dataCheck(){const e=this.getDataset(),n=e.data||(e.data=[]),i=this._data;if(ke(n))this._data=_k(n);else if(i!==n){if(i){Cl(i,this);const r=this._cachedMeta;ma(r),r._parsed=[]}n&&Object.isExtensible(n)&&vR(n,this),this._syncList=[],this._data=n}}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const n=this._cachedMeta,i=this.getDataset();let r=!1;this._dataCheck();const a=n._stacked;n._stacked=lE(n.vScale,n),n.stack!==i.stack&&(r=!0,ma(n),n.stack=i.stack),this._resyncElements(e),(r||a!==n._stacked)&&dE(this,n._parsed)}configure(){const e=this.chart.config,n=e.datasetScopeKeys(this._type),i=e.getOptionScopes(this.getDataset(),n,!0);this.options=e.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,n){const{_cachedMeta:i,_data:r}=this,{iScale:a,_stacked:s}=i,o=a.axis;let l=e===0&&n===r.length?!0:i._sorted,c=e>0&&i._parsed[e-1],d,u,_;if(this._parsing===!1)i._parsed=r,i._sorted=!0,_=r;else{et(r[e])?_=this.parseArrayData(i,r,e,n):ke(r[e])?_=this.parseObjectData(i,r,e,n):_=this.parsePrimitiveData(i,r,e,n);const p=()=>u[o]===null||c&&u[o]m||u=0;--_)if(!f()){this.updateRangeFromParsed(c,e,p,l);break}}return c}getAllParsedValues(e){const n=this._cachedMeta._parsed,i=[];let r,a,s;for(r=0,a=n.length;r=0&ðis.getContext(i,r,n),m=c.resolveNamedOptions(_,p,f,u);return m.$shared&&(m.$shared=l,a[s]=Object.freeze(uE(m,l))),m}_resolveAnimations(e,n,i){const r=this.chart,a=this._cachedDataOpts,s=`animation-${n}`,o=a[s];if(o)return o;let l;if(r.options.animation!==!1){const d=this.chart.config,u=d.datasetAnimationScopeKeys(this._type,n),_=d.getOptionScopes(this.getDataset(),u);l=d.createResolver(_,this.getContext(e,i,n))}const c=new zR(r,l&&l.animations);return l&&l._cacheable&&(a[s]=Object.freeze(c)),c}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,n){return!n||Fc(e)||this.chart._animationsDisabled}_getSharedOptions(e,n){const i=this.resolveDataElementOptions(e,n),r=this._sharedOptions,a=this.getSharedOptions(i),s=this.includeOptions(n,a)||a!==r;return this.updateSharedOptions(a,n,i),{sharedOptions:a,includeOptions:s}}updateElement(e,n,i,r){Fc(r)?Object.assign(e,i):this._resolveAnimations(n,r).update(e,i)}updateSharedOptions(e,n,i){e&&!Fc(n)&&this._resolveAnimations(void 0,n).update(e,i)}_setStyle(e,n,i,r){e.active=r;const a=this.getStyle(n,r);this._resolveAnimations(n,i,r).update(e,{options:!r&&this.getSharedOptions(a)||a})}removeHoverStyle(e,n,i){this._setStyle(e,i,"active",!1)}setHoverStyle(e,n,i){this._setStyle(e,i,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const n=this._data,i=this._cachedMeta.data;for(const[o,l,c]of this._syncList)this[o](l,c);this._syncList=[];const r=i.length,a=n.length,s=Math.min(a,r);s&&this.parse(0,s),a>r?this._insertElements(r,a-r,e):a{for(c.length+=n,o=c.length-1;o>=s;o--)c[o]=c[o-n]};for(l(a),o=e;or-a))}return t._cache.$bar}function bk(t){const e=t.iScale,n=Sk(e,t.type);let i=e._length,r,a,s,o;const l=()=>{s===32767||s===-32768||(hs(o)&&(i=Math.min(i,Math.abs(s-o)||i)),o=s)};for(r=0,a=n.length;r0?r[t-1]:null,o=tMath.abs(o)&&(l=o,c=s),e[n.axis]=c,e._custom={barStart:l,barEnd:c,start:r,end:a,min:s,max:o}}function VR(t,e,n,i){return et(t)?yk(t,e,n,i):e[n.axis]=n.parse(t,i),e}function _E(t,e,n,i){const r=t.iScale,a=t.vScale,s=r.getLabels(),o=r===a,l=[];let c,d,u,_;for(c=n,d=n+i;c=n?1:-1)}function Rk(t){let e,n,i,r,a;return t.horizontal?(e=t.base>t.x,n="left",i="right"):(e=t.basel.controller.options.grouped),a=i.options.stacked,s=[],o=l=>{const c=l.controller.getParsed(n),d=c&&c[l.vScale.axis];if(Pe(d)||isNaN(d))return!0};for(const l of r)if(!(n!==void 0&&o(l))&&((a===!1||s.indexOf(l.stack)===-1||a===void 0&&l.stack===void 0)&&s.push(l.stack),l.index===e))break;return s.length||s.push(void 0),s}_getStackCount(e){return this._getStacks(void 0,e).length}_getStackIndex(e,n,i){const r=this._getStacks(e,i),a=n!==void 0?r.indexOf(n):-1;return a===-1?r.length-1:a}_getRuler(){const e=this.options,n=this._cachedMeta,i=n.iScale,r=[];let a,s;for(a=0,s=n.data.length;a=0;--i)n=Math.max(n,e[i].size(this.resolveDataElementOptions(i))/2);return n>0&&n}getLabelAndValue(e){const n=this._cachedMeta,i=this.chart.data.labels||[],{xScale:r,yScale:a}=n,s=this.getParsed(e),o=r.getLabelForValue(s.x),l=a.getLabelForValue(s.y),c=s._custom;return{label:i[e]||"",value:"("+o+", "+l+(c?", "+c:"")+")"}}update(e){const n=this._cachedMeta.data;this.updateElements(n,0,n.length,e)}updateElements(e,n,i,r){const a=r==="reset",{iScale:s,vScale:o}=this._cachedMeta,{sharedOptions:l,includeOptions:c}=this._getSharedOptions(n,r),d=s.axis,u=o.axis;for(let _=n;_Es(T,o,l,!0)?1:Math.max(b,b*n,y,y*n),f=(T,b,y)=>Es(T,o,l,!0)?-1:Math.min(b,b*n,y,y*n),m=p(0,c,u),h=p(gt,d,_),g=f(it,c,u),E=f(it+gt,d,_);i=(m-g)/2,r=(h-E)/2,a=-(m+g)/2,s=-(h+E)/2}return{ratioX:i,ratioY:r,offsetX:a,offsetY:s}}class ar extends bn{constructor(e,n){super(e,n),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,n){const i=this.getDataset().data,r=this._cachedMeta;if(this._parsing===!1)r._parsed=i;else{let a=l=>+i[l];if(ke(i[e])){const{key:l="value"}=this._parsing;a=c=>+Fi(i[c],l)}let s,o;for(s=e,o=e+n;s0&&!isNaN(e)?nt*(Math.abs(e)/n):0}getLabelAndValue(e){const n=this._cachedMeta,i=this.chart,r=i.data.labels||[],a=Gs(n._parsed[e],i.options.locale);return{label:r[e]||"",value:a}}getMaxBorderWidth(e){let n=0;const i=this.chart;let r,a,s,o,l;if(!e){for(r=0,a=i.data.datasets.length;re!=="spacing",_indexable:e=>e!=="spacing"&&!e.startsWith("borderDash")&&!e.startsWith("hoverBorderDash")}),ae(ar,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const n=e.data;if(n.labels.length&&n.datasets.length){const{labels:{pointStyle:i,color:r}}=e.legend.options;return n.labels.map((a,s)=>{const l=e.getDatasetMeta(0).controller.getStyle(s);return{text:a,fillStyle:l.backgroundColor,strokeStyle:l.borderColor,fontColor:r,lineWidth:l.borderWidth,pointStyle:i,hidden:!e.getDataVisibility(s),index:s}})}return[]}},onClick(e,n,i){i.chart.toggleDataVisibility(n.index),i.chart.update()}}}});class Ko extends bn{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(e){const n=this._cachedMeta,{dataset:i,data:r=[],_dataset:a}=n,s=this.chart._animationsDisabled;let{start:o,count:l}=OR(n,r,s);this._drawStart=o,this._drawCount=l,NR(n)&&(o=0,l=r.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!a._decimated,i.points=r;const c=this.resolveDatasetElementOptions(e);this.options.showLine||(c.borderWidth=0),c.segment=this.options.segment,this.updateElement(i,void 0,{animated:!s,options:c},e),this.updateElements(r,o,l,e)}updateElements(e,n,i,r){const a=r==="reset",{iScale:s,vScale:o,_stacked:l,_dataset:c}=this._cachedMeta,{sharedOptions:d,includeOptions:u}=this._getSharedOptions(n,r),_=s.axis,p=o.axis,{spanGaps:f,segment:m}=this.options,h=Xr(f)?f:Number.POSITIVE_INFINITY,g=this.chart._animationsDisabled||a||r==="none",E=n+i,T=e.length;let b=n>0&&this.getParsed(n-1);for(let y=0;y=E){A.skip=!0;continue}const I=this.getParsed(y),x=Pe(I[p]),k=A[_]=s.getPixelForValue(I[_],y),z=A[p]=a||x?o.getBasePixel():o.getPixelForValue(l?this.applyStack(o,I,l):I[p],y);A.skip=isNaN(k)||isNaN(z)||x,A.stop=y>0&&Math.abs(I[_]-b[_])>h,m&&(A.parsed=I,A.raw=c.data[y]),u&&(A.options=d||this.resolveDataElementOptions(y,N.active?"active":r)),g||this.updateElement(N,y,A,r),b=I}}getMaxOverflow(){const e=this._cachedMeta,n=e.dataset,i=n.options&&n.options.borderWidth||0,r=e.data||[];if(!r.length)return i;const a=r[0].size(this.resolveDataElementOptions(0)),s=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(i,a,s)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}}ae(Ko,"id","line"),ae(Ko,"defaults",{datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1}),ae(Ko,"overrides",{scales:{_index_:{type:"category"},_value_:{type:"linear"}}});class $a extends bn{constructor(e,n){super(e,n),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){const n=this._cachedMeta,i=this.chart,r=i.data.labels||[],a=Gs(n._parsed[e].r,i.options.locale);return{label:r[e]||"",value:a}}parseObjectData(e,n,i,r){return PR.bind(this)(e,n,i,r)}update(e){const n=this._cachedMeta.data;this._updateRadius(),this.updateElements(n,0,n.length,e)}getMinMax(){const e=this._cachedMeta,n={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return e.data.forEach((i,r)=>{const a=this.getParsed(r).r;!isNaN(a)&&this.chart.getDataVisibility(r)&&(an.max&&(n.max=a))}),n}_updateRadius(){const e=this.chart,n=e.chartArea,i=e.options,r=Math.min(n.right-n.left,n.bottom-n.top),a=Math.max(r/2,0),s=Math.max(i.cutoutPercentage?a/100*i.cutoutPercentage:1,0),o=(a-s)/e.getVisibleDatasetCount();this.outerRadius=a-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(e,n,i,r){const a=r==="reset",s=this.chart,l=s.options.animation,c=this._cachedMeta.rScale,d=c.xCenter,u=c.yCenter,_=c.getIndexAngle(0)-.5*it;let p=_,f;const m=360/this.countVisibleElements();for(f=0;f{!isNaN(this.getParsed(r).r)&&this.chart.getDataVisibility(r)&&n++}),n}_computeAngle(e,n,i){return this.chart.getDataVisibility(e)?fn(this.resolveDataElementOptions(e,n).angle||i):0}}ae($a,"id","polarArea"),ae($a,"defaults",{dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0}),ae($a,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const n=e.data;if(n.labels.length&&n.datasets.length){const{labels:{pointStyle:i,color:r}}=e.legend.options;return n.labels.map((a,s)=>{const l=e.getDatasetMeta(0).controller.getStyle(s);return{text:a,fillStyle:l.backgroundColor,strokeStyle:l.borderColor,fontColor:r,lineWidth:l.borderWidth,pointStyle:i,hidden:!e.getDataVisibility(s),index:s}})}return[]}},onClick(e,n,i){i.chart.toggleDataVisibility(n.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}});class hm extends ar{}ae(hm,"id","pie"),ae(hm,"defaults",{cutout:0,rotation:0,circumference:360,radius:"100%"});class Wa extends bn{getLabelAndValue(e){const n=this._cachedMeta.vScale,i=this.getParsed(e);return{label:n.getLabels()[e],value:""+n.getLabelForValue(i[n.axis])}}parseObjectData(e,n,i,r){return PR.bind(this)(e,n,i,r)}update(e){const n=this._cachedMeta,i=n.dataset,r=n.data||[],a=n.iScale.getLabels();if(i.points=r,e!=="resize"){const s=this.resolveDatasetElementOptions(e);this.options.showLine||(s.borderWidth=0);const o={_loop:!0,_fullLoop:a.length===r.length,options:s};this.updateElement(i,void 0,o,e)}this.updateElements(r,0,r.length,e)}updateElements(e,n,i,r){const a=this._cachedMeta.rScale,s=r==="reset";for(let o=n;o0&&this.getParsed(n-1);for(let b=n;b0&&Math.abs(N[p]-T[p])>g,h&&(A.parsed=N,A.raw=c.data[b]),_&&(A.options=u||this.resolveDataElementOptions(b,y.active?"active":r)),E||this.updateElement(y,b,A,r),T=N}this.updateSharedOptions(u,r,d)}getMaxOverflow(){const e=this._cachedMeta,n=e.data||[];if(!this.options.showLine){let o=0;for(let l=n.length-1;l>=0;--l)o=Math.max(o,n[l].size(this.resolveDataElementOptions(l))/2);return o>0&&o}const i=e.dataset,r=i.options&&i.options.borderWidth||0;if(!n.length)return r;const a=n[0].size(this.resolveDataElementOptions(0)),s=n[n.length-1].size(this.resolveDataElementOptions(n.length-1));return Math.max(r,a,s)/2}}ae(_n,"id","scatter"),ae(_n,"defaults",{datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1}),ae(_n,"overrides",{interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}});var xk=Object.freeze({__proto__:null,BarController:qa,BubbleController:Wo,DoughnutController:ar,LineController:Ko,PieController:hm,PolarAreaController:$a,RadarController:Wa,ScatterController:_n});function qi(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Hf{constructor(e){ae(this,"options");this.options=e||{}}static override(e){Object.assign(Hf.prototype,e)}init(){}formats(){return qi()}parse(){return qi()}format(){return qi()}add(){return qi()}diff(){return qi()}startOf(){return qi()}endOf(){return qi()}}var Dk={_date:Hf};function wk(t,e,n,i){const{controller:r,data:a,_sorted:s}=t,o=r._cachedMeta.iScale;if(o&&e===o.axis&&e!=="r"&&s&&a.length){const l=o._reversePixels?n0:Qn;if(i){if(r._sharedOptions){const c=a[0],d=typeof c.getRange=="function"&&c.getRange(e);if(d){const u=l(a,e,n-d),_=l(a,e,n+d);return{lo:u.lo,hi:_.hi}}}}else return l(a,e,n)}return{lo:0,hi:a.length-1}}function Hs(t,e,n,i,r){const a=t.getSortedVisibleDatasetMetas(),s=n[e];for(let o=0,l=a.length;o{l[s](e[n],r)&&(a.push({element:l,datasetIndex:c,index:d}),o=o||l.inRange(e.x,e.y,r))}),i&&!o?[]:a}var kk={evaluateInteractionItems:Hs,modes:{index(t,e,n,i){const r=Qi(e,t),a=n.axis||"x",s=n.includeInvisible||!1,o=n.intersect?Bc(t,r,a,i,s):Gc(t,r,a,!1,i,s),l=[];return o.length?(t.getSortedVisibleDatasetMetas().forEach(c=>{const d=o[0].index,u=c.data[d];u&&!u.skip&&l.push({element:u,datasetIndex:c.index,index:d})}),l):[]},dataset(t,e,n,i){const r=Qi(e,t),a=n.axis||"xy",s=n.includeInvisible||!1;let o=n.intersect?Bc(t,r,a,i,s):Gc(t,r,a,!1,i,s);if(o.length>0){const l=o[0].datasetIndex,c=t.getDatasetMeta(l).data;o=[];for(let d=0;dn.pos===e)}function gE(t,e){return t.filter(n=>qR.indexOf(n.pos)===-1&&n.box.axis===e)}function ga(t,e){return t.sort((n,i)=>{const r=e?i:n,a=e?n:i;return r.weight===a.weight?r.index-a.index:r.weight-a.weight})}function Fk(t){const e=[];let n,i,r,a,s,o;for(n=0,i=(t||[]).length;nc.box.fullSize),!0),i=ga(fa(e,"left"),!0),r=ga(fa(e,"right")),a=ga(fa(e,"top"),!0),s=ga(fa(e,"bottom")),o=gE(e,"x"),l=gE(e,"y");return{fullSize:n,leftAndTop:i.concat(a),rightAndBottom:r.concat(l).concat(s).concat(o),chartArea:fa(e,"chartArea"),vertical:i.concat(r).concat(l),horizontal:a.concat(s).concat(o)}}function hE(t,e,n,i){return Math.max(t[n],e[n])+Math.max(t[i],e[i])}function $R(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function Yk(t,e,n,i){const{pos:r,box:a}=n,s=t.maxPadding;if(!ke(r)){n.size&&(t[r]-=n.size);const u=i[n.stack]||{size:0,count:1};u.size=Math.max(u.size,n.horizontal?a.height:a.width),n.size=u.size/u.count,t[r]+=n.size}a.getPadding&&$R(s,a.getPadding());const o=Math.max(0,e.outerWidth-hE(s,t,"left","right")),l=Math.max(0,e.outerHeight-hE(s,t,"top","bottom")),c=o!==t.w,d=l!==t.h;return t.w=o,t.h=l,n.horizontal?{same:c,other:d}:{same:d,other:c}}function zk(t){const e=t.maxPadding;function n(i){const r=Math.max(e[i]-t[i],0);return t[i]+=r,r}t.y+=n("top"),t.x+=n("left"),n("right"),n("bottom")}function Hk(t,e){const n=e.maxPadding;function i(r){const a={left:0,top:0,right:0,bottom:0};return r.forEach(s=>{a[s]=Math.max(e[s],n[s])}),a}return i(t?["left","right"]:["top","bottom"])}function Ra(t,e,n,i){const r=[];let a,s,o,l,c,d;for(a=0,s=t.length,c=0;a{typeof m.beforeLayout=="function"&&m.beforeLayout()});const d=l.reduce((m,h)=>h.box.options&&h.box.options.display===!1?m:m+1,0)||1,u=Object.freeze({outerWidth:e,outerHeight:n,padding:r,availableWidth:a,availableHeight:s,vBoxMaxWidth:a/2/d,hBoxMaxHeight:s/2}),_=Object.assign({},r);$R(_,Mt(i));const p=Object.assign({maxPadding:_,w:a,h:s,x:r.left,y:r.top},r),f=Bk(l.concat(c),u);Ra(o.fullSize,p,u,f),Ra(l,p,u,f),Ra(c,p,u,f)&&Ra(l,p,u,f),zk(p),EE(o.leftAndTop,p,u,f),p.x+=p.w,p.y+=p.h,EE(o.rightAndBottom,p,u,f),t.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},qe(o.chartArea,m=>{const h=m.box;Object.assign(h,t.chartArea),h.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}};class WR{acquireContext(e,n){}releaseContext(e){return!1}addEventListener(e,n,i){}removeEventListener(e,n,i){}getDevicePixelRatio(){return 1}getMaximumSize(e,n,i,r){return n=Math.max(0,n||e.width),i=i||e.height,{width:n,height:Math.max(0,r?Math.floor(n/r):i)}}isAttached(e){return!0}updateConfig(e){}}class Vk extends WR{acquireContext(e){return e&&e.getContext&&e.getContext("2d")||null}updateConfig(e){e.options.animation=!1}}const Qo="$chartjs",qk={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},SE=t=>t===null||t==="";function $k(t,e){const n=t.style,i=t.getAttribute("height"),r=t.getAttribute("width");if(t[Qo]={initial:{height:i,width:r,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",n.boxSizing=n.boxSizing||"border-box",SE(r)){const a=tE(t,"width");a!==void 0&&(t.width=a)}if(SE(i))if(t.style.height==="")t.height=t.width/(e||2);else{const a=tE(t,"height");a!==void 0&&(t.height=a)}return t}const KR=K0?{passive:!0}:!1;function Wk(t,e,n){t.addEventListener(e,n,KR)}function Kk(t,e,n){t.canvas.removeEventListener(e,n,KR)}function Qk(t,e){const n=qk[t.type]||t.type,{x:i,y:r}=Qi(t,e);return{type:n,chart:e,native:t,x:i!==void 0?i:null,y:r!==void 0?r:null}}function Nl(t,e){for(const n of t)if(n===e||n.contains(e))return!0}function Xk(t,e,n){const i=t.canvas,r=new MutationObserver(a=>{let s=!1;for(const o of a)s=s||Nl(o.addedNodes,i),s=s&&!Nl(o.removedNodes,i);s&&n()});return r.observe(document,{childList:!0,subtree:!0}),r}function Zk(t,e,n){const i=t.canvas,r=new MutationObserver(a=>{let s=!1;for(const o of a)s=s||Nl(o.removedNodes,i),s=s&&!Nl(o.addedNodes,i);s&&n()});return r.observe(document,{childList:!0,subtree:!0}),r}const bs=new Map;let bE=0;function QR(){const t=window.devicePixelRatio;t!==bE&&(bE=t,bs.forEach((e,n)=>{n.currentDevicePixelRatio!==t&&e()}))}function jk(t,e){bs.size||window.addEventListener("resize",QR),bs.set(t,e)}function Jk(t){bs.delete(t),bs.size||window.removeEventListener("resize",QR)}function e1(t,e,n){const i=t.canvas,r=i&&zf(i);if(!r)return;const a=RR((o,l)=>{const c=r.clientWidth;n(o,l),c{const l=o[0],c=l.contentRect.width,d=l.contentRect.height;c===0&&d===0||a(c,d)});return s.observe(r),jk(t,a),s}function Yc(t,e,n){n&&n.disconnect(),e==="resize"&&Jk(t)}function t1(t,e,n){const i=t.canvas,r=RR(a=>{t.ctx!==null&&n(Qk(a,t))},t);return Wk(i,e,r),r}class n1 extends WR{acquireContext(e,n){const i=e&&e.getContext&&e.getContext("2d");return i&&i.canvas===e?($k(e,n),i):null}releaseContext(e){const n=e.canvas;if(!n[Qo])return!1;const i=n[Qo].initial;["height","width"].forEach(a=>{const s=i[a];Pe(s)?n.removeAttribute(a):n.setAttribute(a,s)});const r=i.style||{};return Object.keys(r).forEach(a=>{n.style[a]=r[a]}),n.width=n.width,delete n[Qo],!0}addEventListener(e,n,i){this.removeEventListener(e,n);const r=e.$proxies||(e.$proxies={}),s={attach:Xk,detach:Zk,resize:e1}[n]||t1;r[n]=s(e,n,i)}removeEventListener(e,n){const i=e.$proxies||(e.$proxies={}),r=i[n];if(!r)return;({attach:Yc,detach:Yc,resize:Yc}[n]||Kk)(e,n,r),i[n]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,n,i,r){return W0(e,n,i,r)}isAttached(e){const n=zf(e);return!!(n&&n.isConnected)}}function i1(t){return!Yf()||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas?Vk:n1}var Uo;let oi=(Uo=class{constructor(){ae(this,"x");ae(this,"y");ae(this,"active",!1);ae(this,"options");ae(this,"$animations")}tooltipPosition(e){const{x:n,y:i}=this.getProps(["x","y"],e);return{x:n,y:i}}hasValue(){return Xr(this.x)&&Xr(this.y)}getProps(e,n){const i=this.$animations;if(!n||!i)return this;const r={};return e.forEach(a=>{r[a]=i[a]&&i[a].active()?i[a]._to:this[a]}),r}},ae(Uo,"defaults",{}),ae(Uo,"defaultRoutes"),Uo);function r1(t,e){const n=t.options.ticks,i=a1(t),r=Math.min(n.maxTicksLimit||i,i),a=n.major.enabled?o1(e):[],s=a.length,o=a[0],l=a[s-1],c=[];if(s>r)return l1(e,c,a,s/r),c;const d=s1(a,e,r);if(s>0){let u,_;const p=s>1?Math.round((l-o)/(s-1)):null;for(vo(e,c,d,Pe(p)?0:o-p,o),u=0,_=s-1;u<_;u++)vo(e,c,d,a[u],a[u+1]);return vo(e,c,d,l,Pe(p)?e.length:l+p),c}return vo(e,c,d),c}function a1(t){const e=t.options.offset,n=t._tickSize(),i=t._length/n+(e?0:1),r=t._maxLength/n;return Math.floor(Math.min(i,r))}function s1(t,e,n){const i=c1(t),r=e.length/n;if(!i)return Math.max(r,1);const a=jP(i);for(let s=0,o=a.length-1;sr)return l}return Math.max(r,1)}function o1(t){const e=[];let n,i;for(n=0,i=t.length;nt==="left"?"right":t==="right"?"left":t,TE=(t,e,n)=>e==="top"||e==="left"?t[e]+n:t[e]-n,vE=(t,e)=>Math.min(e||t,t);function yE(t,e){const n=[],i=t.length/e,r=t.length;let a=0;for(;as+o)))return l}function _1(t,e){qe(t,n=>{const i=n.gc,r=i.length/2;let a;if(r>e){for(a=0;ai?i:n,i=r&&n>i?n:i,{min:en(n,en(i,n)),max:en(i,en(n,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(e))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){Ke(this.options.beforeUpdate,[this])}update(e,n,i){const{beginAtZero:r,grace:a,ticks:s}=this.options,o=s.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=n,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=R0(this,a,r),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=o=a||i<=1||!this.isHorizontal()){this.labelRotation=r;return}const d=this._getLabelSizes(),u=d.widest.width,_=d.highest.height,p=Rt(this.chart.width-u,0,this.maxWidth);o=e.offset?this.maxWidth/i:p/(i-1),u+6>o&&(o=p/(i-(e.offset?.5:1)),l=this.maxHeight-ha(e.grid)-n.padding-CE(e.title,this.chart.options.font),c=Math.sqrt(u*u+_*_),s=Mf(Math.min(Math.asin(Rt((d.highest.height+6)/o,-1,1)),Math.asin(Rt(l/c,-1,1))-Math.asin(Rt(_/c,-1,1)))),s=Math.max(r,Math.min(a,s))),this.labelRotation=s}afterCalculateLabelRotation(){Ke(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){Ke(this.options.beforeFit,[this])}fit(){const e={width:0,height:0},{chart:n,options:{ticks:i,title:r,grid:a}}=this,s=this._isVisible(),o=this.isHorizontal();if(s){const l=CE(r,n.options.font);if(o?(e.width=this.maxWidth,e.height=ha(a)+l):(e.height=this.maxHeight,e.width=ha(a)+l),i.display&&this.ticks.length){const{first:c,last:d,widest:u,highest:_}=this._getLabelSizes(),p=i.padding*2,f=fn(this.labelRotation),m=Math.cos(f),h=Math.sin(f);if(o){const g=i.mirror?0:h*u.width+m*_.height;e.height=Math.min(this.maxHeight,e.height+g+p)}else{const g=i.mirror?0:m*u.width+h*_.height;e.width=Math.min(this.maxWidth,e.width+g+p)}this._calculatePadding(c,d,h,m)}}this._handleMargins(),o?(this.width=this._length=n.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=n.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,n,i,r){const{ticks:{align:a,padding:s},position:o}=this.options,l=this.labelRotation!==0,c=o!=="top"&&this.axis==="x";if(this.isHorizontal()){const d=this.getPixelForTick(0)-this.left,u=this.right-this.getPixelForTick(this.ticks.length-1);let _=0,p=0;l?c?(_=r*e.width,p=i*n.height):(_=i*e.height,p=r*n.width):a==="start"?p=n.width:a==="end"?_=e.width:a!=="inner"&&(_=e.width/2,p=n.width/2),this.paddingLeft=Math.max((_-d+s)*this.width/(this.width-d),0),this.paddingRight=Math.max((p-u+s)*this.width/(this.width-u),0)}else{let d=n.height/2,u=e.height/2;a==="start"?(d=0,u=e.height):a==="end"&&(d=n.height,u=0),this.paddingTop=d+s,this.paddingBottom=u+s}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){Ke(this.options.afterFit,[this])}isHorizontal(){const{axis:e,position:n}=this.options;return n==="top"||n==="bottom"||e==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let n,i;for(n=0,i=e.length;n({width:s[x]||0,height:o[x]||0});return{first:I(0),last:I(n-1),widest:I(N),highest:I(A),widths:s,heights:o}}getLabelForValue(e){return e}getPixelForValue(e,n){return NaN}getValueForPixel(e){}getPixelForTick(e){const n=this.ticks;return e<0||e>n.length-1?null:this.getPixelForValue(n[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);const n=this._startPixel+e*this._length;return t0(this._alignToPixels?Vi(this.chart,n,0):n)}getDecimalForPixel(e){const n=(e-this._startPixel)/this._length;return this._reversePixels?1-n:n}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:e,max:n}=this;return e<0&&n<0?n:e>0&&n>0?e:0}getContext(e){const n=this.ticks||[];if(e>=0&&eo*r?o/i:l/r:l*r0}_computeGridLineItems(e){const n=this.axis,i=this.chart,r=this.options,{grid:a,position:s,border:o}=r,l=a.offset,c=this.isHorizontal(),u=this.ticks.length+(l?1:0),_=ha(a),p=[],f=o.setContext(this.getContext()),m=f.display?f.width:0,h=m/2,g=function(Q){return Vi(i,Q,m)};let E,T,b,y,N,A,I,x,k,z,C,P;if(s==="top")E=g(this.bottom),A=this.bottom-_,x=E-h,z=g(e.top)+h,P=e.bottom;else if(s==="bottom")E=g(this.top),z=e.top,P=g(e.bottom)-h,A=E+h,x=this.top+_;else if(s==="left")E=g(this.right),N=this.right-_,I=E-h,k=g(e.left)+h,C=e.right;else if(s==="right")E=g(this.left),k=e.left,C=g(e.right)-h,N=E+h,I=this.left+_;else if(n==="x"){if(s==="center")E=g((e.top+e.bottom)/2+.5);else if(ke(s)){const Q=Object.keys(s)[0],w=s[Q];E=g(this.chart.scales[Q].getPixelForValue(w))}z=e.top,P=e.bottom,A=E+h,x=A+_}else if(n==="y"){if(s==="center")E=g((e.left+e.right)/2);else if(ke(s)){const Q=Object.keys(s)[0],w=s[Q];E=g(this.chart.scales[Q].getPixelForValue(w))}N=E-h,I=N-_,k=e.left,C=e.right}const v=xe(r.ticks.maxTicksLimit,u),Y=Math.max(1,Math.ceil(u/v));for(T=0;T0&&(he-=le/2);break}$={left:he,top:re,width:le+V.width,height:pe+V.height,color:Y.backdropColor}}h.push({label:b,font:x,textOffset:C,options:{rotation:m,color:w,strokeColor:K,strokeWidth:W,textAlign:se,textBaseline:P,translation:[y,N],backdrop:$}})}return h}_getXAxisLabelAlignment(){const{position:e,ticks:n}=this.options;if(-fn(this.labelRotation))return e==="top"?"left":"right";let r="center";return n.align==="start"?r="left":n.align==="end"?r="right":n.align==="inner"&&(r="inner"),r}_getYAxisLabelAlignment(e){const{position:n,ticks:{crossAlign:i,mirror:r,padding:a}}=this.options,s=this._getLabelSizes(),o=e+a,l=s.widest.width;let c,d;return n==="left"?r?(d=this.right+a,i==="near"?c="left":i==="center"?(c="center",d+=l/2):(c="right",d+=l)):(d=this.right-o,i==="near"?c="right":i==="center"?(c="center",d-=l/2):(c="left",d=this.left)):n==="right"?r?(d=this.left+a,i==="near"?c="right":i==="center"?(c="center",d-=l/2):(c="left",d-=l)):(d=this.left+o,i==="near"?c="left":i==="center"?(c="center",d+=l/2):(c="right",d=this.right)):c="right",{textAlign:c,x:d}}_computeLabelArea(){if(this.options.ticks.mirror)return;const e=this.chart,n=this.options.position;if(n==="left"||n==="right")return{top:0,left:this.left,bottom:e.height,right:this.right};if(n==="top"||n==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){const{ctx:e,options:{backgroundColor:n},left:i,top:r,width:a,height:s}=this;n&&(e.save(),e.fillStyle=n,e.fillRect(i,r,a,s),e.restore())}getLineWidthForValue(e){const n=this.options.grid;if(!this._isVisible()||!n.display)return 0;const r=this.ticks.findIndex(a=>a.value===e);return r>=0?n.setContext(this.getContext(r)).lineWidth:0}drawGrid(e){const n=this.options.grid,i=this.ctx,r=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(e));let a,s;const o=(l,c,d)=>{!d.width||!d.color||(i.save(),i.lineWidth=d.width,i.strokeStyle=d.color,i.setLineDash(d.borderDash||[]),i.lineDashOffset=d.borderDashOffset,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(c.x,c.y),i.stroke(),i.restore())};if(n.display)for(a=0,s=r.length;a{this.draw(a)}}]:[{z:i,draw:a=>{this.drawBackground(),this.drawGrid(a),this.drawTitle()}},{z:r,draw:()=>{this.drawBorder()}},{z:n,draw:a=>{this.drawLabels(a)}}]}getMatchingVisibleMetas(e){const n=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",r=[];let a,s;for(a=0,s=n.length;a{const i=n.split("."),r=i.pop(),a=[t].concat(i).join("."),s=e[n].split("."),o=s.pop(),l=s.join(".");st.route(a,r,l,o)})}function S1(t){return"id"in t&&"defaults"in t}class b1{constructor(){this.controllers=new yo(bn,"datasets",!0),this.elements=new yo(oi,"elements"),this.plugins=new yo(Object,"plugins"),this.scales=new yo(br,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each("register",e)}remove(...e){this._each("unregister",e)}addControllers(...e){this._each("register",e,this.controllers)}addElements(...e){this._each("register",e,this.elements)}addPlugins(...e){this._each("register",e,this.plugins)}addScales(...e){this._each("register",e,this.scales)}getController(e){return this._get(e,this.controllers,"controller")}getElement(e){return this._get(e,this.elements,"element")}getPlugin(e){return this._get(e,this.plugins,"plugin")}getScale(e){return this._get(e,this.scales,"scale")}removeControllers(...e){this._each("unregister",e,this.controllers)}removeElements(...e){this._each("unregister",e,this.elements)}removePlugins(...e){this._each("unregister",e,this.plugins)}removeScales(...e){this._each("unregister",e,this.scales)}_each(e,n,i){[...n].forEach(r=>{const a=i||this._getRegistryForType(r);i||a.isForType(r)||a===this.plugins&&r.id?this._exec(e,a,r):qe(r,s=>{const o=i||this._getRegistryForType(s);this._exec(e,o,s)})})}_exec(e,n,i){const r=wf(e);Ke(i["before"+r],[],i),n[e](i),Ke(i["after"+r],[],i)}_getRegistryForType(e){for(let n=0;na.filter(o=>!s.some(l=>o.plugin.id===l.plugin.id));this._notify(r(n,i),e,"stop"),this._notify(r(i,n),e,"start")}}function v1(t){const e={},n=[],i=Object.keys(kt.plugins.items);for(let a=0;a1&&RE(t[0].toLowerCase());if(i)return i}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function OE(t,e,n){if(n[e+"AxisID"]===t)return{axis:e}}function A1(t,e){if(e.data&&e.data.datasets){const n=e.data.datasets.filter(i=>i.xAxisID===t||i.yAxisID===t);if(n.length)return OE(t,"x",n[0])||OE(t,"y",n[0])}return{}}function x1(t,e){const n=mr[t.type]||{scales:{}},i=e.scales||{},r=Em(t.type,e),a=Object.create(null);return Object.keys(i).forEach(s=>{const o=i[s];if(!ke(o))return console.error(`Invalid scale configuration for scale: ${s}`);if(o._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${s}`);const l=Sm(s,o,A1(s,t),st.scales[o.type]),c=N1(l,r),d=n.scales||{};a[s]=Ya(Object.create(null),[{axis:l},o,d[l],d[c]])}),t.data.datasets.forEach(s=>{const o=s.type||t.type,l=s.indexAxis||Em(o,e),d=(mr[o]||{}).scales||{};Object.keys(d).forEach(u=>{const _=O1(u,l),p=s[_+"AxisID"]||_;a[p]=a[p]||Object.create(null),Ya(a[p],[{axis:_},i[p],d[u]])})}),Object.keys(a).forEach(s=>{const o=a[s];Ya(o,[st.scales[o.type],st.scale])}),a}function XR(t){const e=t.options||(t.options={});e.plugins=xe(e.plugins,{}),e.scales=x1(t,e)}function ZR(t){return t=t||{},t.datasets=t.datasets||[],t.labels=t.labels||[],t}function D1(t){return t=t||{},t.data=ZR(t.data),XR(t),t}const NE=new Map,jR=new Set;function Co(t,e){let n=NE.get(t);return n||(n=e(),NE.set(t,n),jR.add(n)),n}const Ea=(t,e,n)=>{const i=Fi(e,n);i!==void 0&&t.add(i)};class w1{constructor(e){this._config=D1(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=ZR(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){const e=this._config;this.clearCache(),XR(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return Co(e,()=>[[`datasets.${e}`,""]])}datasetAnimationScopeKeys(e,n){return Co(`${e}.transition.${n}`,()=>[[`datasets.${e}.transitions.${n}`,`transitions.${n}`],[`datasets.${e}`,""]])}datasetElementScopeKeys(e,n){return Co(`${e}-${n}`,()=>[[`datasets.${e}.elements.${n}`,`datasets.${e}`,`elements.${n}`,""]])}pluginScopeKeys(e){const n=e.id,i=this.type;return Co(`${i}-plugin-${n}`,()=>[[`plugins.${n}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,n){const i=this._scopeCache;let r=i.get(e);return(!r||n)&&(r=new Map,i.set(e,r)),r}getOptionScopes(e,n,i){const{options:r,type:a}=this,s=this._cachedScopes(e,i),o=s.get(n);if(o)return o;const l=new Set;n.forEach(d=>{e&&(l.add(e),d.forEach(u=>Ea(l,e,u))),d.forEach(u=>Ea(l,r,u)),d.forEach(u=>Ea(l,mr[a]||{},u)),d.forEach(u=>Ea(l,st,u)),d.forEach(u=>Ea(l,fm,u))});const c=Array.from(l);return c.length===0&&c.push(Object.create(null)),jR.has(n)&&s.set(n,c),c}chartOptionScopes(){const{options:e,type:n}=this;return[e,mr[n]||{},st.datasets[n]||{},{type:n},st,fm]}resolveNamedOptions(e,n,i,r=[""]){const a={$shared:!0},{resolver:s,subPrefixes:o}=IE(this._resolverCache,e,r);let l=s;if(L1(s,n)){a.$shared=!1,i=Ui(i)?i():i;const c=this.createResolver(e,i,o);l=Zr(s,i,c)}for(const c of n)a[c]=l[c];return a}createResolver(e,n,i=[""],r){const{resolver:a}=IE(this._resolverCache,e,i);return ke(n)?Zr(a,n,void 0,r):a}}function IE(t,e,n){let i=t.get(e);i||(i=new Map,t.set(e,i));const r=n.join();let a=i.get(r);return a||(a={resolver:Uf(e,n),subPrefixes:n.filter(o=>!o.toLowerCase().includes("hover"))},i.set(r,a)),a}const M1=t=>ke(t)&&Object.getOwnPropertyNames(t).some(e=>Ui(t[e]));function L1(t,e){const{isScriptable:n,isIndexable:i}=DR(t);for(const r of e){const a=n(r),s=i(r),o=(s||a)&&t[r];if(a&&(Ui(o)||M1(o))||s&&et(o))return!0}return!1}var P1="4.4.1";const k1=["top","bottom","left","right","chartArea"];function AE(t,e){return t==="top"||t==="bottom"||k1.indexOf(t)===-1&&e==="x"}function xE(t,e){return function(n,i){return n[t]===i[t]?n[e]-i[e]:n[t]-i[t]}}function DE(t){const e=t.chart,n=e.options.animation;e.notifyPlugins("afterRender"),Ke(n&&n.onComplete,[t],e)}function F1(t){const e=t.chart,n=e.options.animation;Ke(n&&n.onProgress,[t],e)}function JR(t){return Yf()&&typeof t=="string"?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Xo={},wE=t=>{const e=JR(t);return Object.values(Xo).filter(n=>n.canvas===e).pop()};function U1(t,e,n){const i=Object.keys(t);for(const r of i){const a=+r;if(a>=e){const s=t[r];delete t[r],(n>0||a>e)&&(t[a+n]=s)}}}function B1(t,e,n,i){return!n||t.type==="mouseout"?null:i?e:t}function Ro(t,e,n){return t.options.clip?t[n]:e[n]}function G1(t,e){const{xScale:n,yScale:i}=t;return n&&i?{left:Ro(n,e,"left"),right:Ro(n,e,"right"),top:Ro(i,e,"top"),bottom:Ro(i,e,"bottom")}:e}var pi;let xt=(pi=class{static register(...e){kt.add(...e),ME()}static unregister(...e){kt.remove(...e),ME()}constructor(e,n){const i=this.config=new w1(n),r=JR(e),a=wE(r);if(a)throw new Error("Canvas is already in use. Chart with ID '"+a.id+"' must be destroyed before the canvas with ID '"+a.canvas.id+"' can be reused.");const s=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||i1(r)),this.platform.updateConfig(i);const o=this.platform.acquireContext(r,s.aspectRatio),l=o&&o.canvas,c=l&&l.height,d=l&&l.width;if(this.id=HP(),this.ctx=o,this.canvas=l,this.width=d,this.height=c,this._options=s,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new T1,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=r0(u=>this.update(u),s.resizeDelay||0),this._dataChanges=[],Xo[this.id]=this,!o||!l){console.error("Failed to create chart: can't acquire context from the given item");return}Hn.listen(this,"complete",DE),Hn.listen(this,"progress",F1),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:n},width:i,height:r,_aspectRatio:a}=this;return Pe(e)?n&&a?a:r?i/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return kt}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():eE(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Zh(this.canvas,this.ctx),this}stop(){return Hn.stop(this),this}resize(e,n){Hn.running(this)?this._resizeBeforeDraw={width:e,height:n}:this._resize(e,n)}_resize(e,n){const i=this.options,r=this.canvas,a=i.maintainAspectRatio&&this.aspectRatio,s=this.platform.getMaximumSize(r,e,n,a),o=i.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=s.width,this.height=s.height,this._aspectRatio=this.aspectRatio,eE(this,o,!0)&&(this.notifyPlugins("resize",{size:s}),Ke(i.onResize,[this,s],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){const n=this.options.scales||{};qe(n,(i,r)=>{i.id=r})}buildOrUpdateScales(){const e=this.options,n=e.scales,i=this.scales,r=Object.keys(i).reduce((s,o)=>(s[o]=!1,s),{});let a=[];n&&(a=a.concat(Object.keys(n).map(s=>{const o=n[s],l=Sm(s,o),c=l==="r",d=l==="x";return{options:o,dposition:c?"chartArea":d?"bottom":"left",dtype:c?"radialLinear":d?"category":"linear"}}))),qe(a,s=>{const o=s.options,l=o.id,c=Sm(l,o),d=xe(o.type,s.dtype);(o.position===void 0||AE(o.position,c)!==AE(s.dposition))&&(o.position=s.dposition),r[l]=!0;let u=null;if(l in i&&i[l].type===d)u=i[l];else{const _=kt.getScale(d);u=new _({id:l,type:d,ctx:this.ctx,chart:this}),i[u.id]=u}u.init(o,e)}),qe(r,(s,o)=>{s||delete i[o]}),qe(i,s=>{Bt.configure(this,s,s.options),Bt.addBox(this,s)})}_updateMetasets(){const e=this._metasets,n=this.data.datasets.length,i=e.length;if(e.sort((r,a)=>r.index-a.index),i>n){for(let r=n;rn.length&&delete this._stacks,e.forEach((i,r)=>{n.filter(a=>a===i._dataset).length===0&&this._destroyDatasetMeta(r)})}buildOrUpdateControllers(){const e=[],n=this.data.datasets;let i,r;for(this._removeUnreferencedMetasets(),i=0,r=n.length;i{this.getDatasetMeta(n).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const n=this.config;n.update();const i=this._options=n.createResolver(n.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0})===!1)return;const a=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let s=0;for(let c=0,d=this.data.datasets.length;c{c.reset()}),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(xE("z","_idx"));const{_active:o,_lastEvent:l}=this;l?this._eventHandler(l,!0):o.length&&this._updateHoverStyles(o,o,!0),this.render()}_updateScales(){qe(this.scales,e=>{Bt.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,n=new Set(Object.keys(this._listeners)),i=new Set(e.events);(!Hh(n,i)||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,n=this._getUniformDataChanges()||[];for(const{method:i,start:r,count:a}of n){const s=i==="_removeElements"?-a:a;U1(e,r,s)}}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const n=this.data.datasets.length,i=a=>new Set(e.filter(s=>s[0]===a).map((s,o)=>o+","+s.splice(1).join(","))),r=i(0);for(let a=1;aa.split(",")).map(a=>({method:a[1],start:+a[2],count:+a[3]}))}_updateLayout(e){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;Bt.update(this,this.width,this.height,e);const n=this.chartArea,i=n.width<=0||n.height<=0;this._layers=[],qe(this.boxes,r=>{i&&r.position==="chartArea"||(r.configure&&r.configure(),this._layers.push(...r._layers()))},this),this._layers.forEach((r,a)=>{r._idx=a}),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})!==!1){for(let n=0,i=this.data.datasets.length;n=0;--n)this._drawDataset(e[n]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const n=this.ctx,i=e._clip,r=!i.disabled,a=G1(e,this.chartArea),s={meta:e,index:e.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",s)!==!1&&(r&&Ys(n,{left:i.left===!1?0:a.left-i.left,right:i.right===!1?this.width:a.right+i.right,top:i.top===!1?0:a.top-i.top,bottom:i.bottom===!1?this.height:a.bottom+i.bottom}),e.controller.draw(),r&&zs(n),s.cancelable=!1,this.notifyPlugins("afterDatasetDraw",s))}isPointInArea(e){return Xn(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,n,i,r){const a=kk.modes[n];return typeof a=="function"?a(this,e,i,r):[]}getDatasetMeta(e){const n=this.data.datasets[e],i=this._metasets;let r=i.filter(a=>a&&a._dataset===n).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:n&&n.order||0,index:e,_dataset:n,_parsed:[],_sorted:!1},i.push(r)),r}getContext(){return this.$context||(this.$context=Bi(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const n=this.data.datasets[e];if(!n)return!1;const i=this.getDatasetMeta(e);return typeof i.hidden=="boolean"?!i.hidden:!n.hidden}setDatasetVisibility(e,n){const i=this.getDatasetMeta(e);i.hidden=!n}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,n,i){const r=i?"show":"hide",a=this.getDatasetMeta(e),s=a.controller._resolveAnimations(void 0,r);hs(n)?(a.data[n].hidden=!i,this.update()):(this.setDatasetVisibility(e,i),s.update(a,{visible:i}),this.update(o=>o.datasetIndex===e?r:void 0))}hide(e,n){this._updateVisibility(e,n,!1)}show(e,n){this._updateVisibility(e,n,!0)}_destroyDatasetMeta(e){const n=this._metasets[e];n&&n.controller&&n.controller._destroy(),delete this._metasets[e]}_stop(){let e,n;for(this.stop(),Hn.remove(this),e=0,n=this.data.datasets.length;e{n.addEventListener(this,a,s),e[a]=s},r=(a,s,o)=>{a.offsetX=s,a.offsetY=o,this._eventHandler(a)};qe(this.options.events,a=>i(a,r))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,n=this.platform,i=(l,c)=>{n.addEventListener(this,l,c),e[l]=c},r=(l,c)=>{e[l]&&(n.removeEventListener(this,l,c),delete e[l])},a=(l,c)=>{this.canvas&&this.resize(l,c)};let s;const o=()=>{r("attach",o),this.attached=!0,this.resize(),i("resize",a),i("detach",s)};s=()=>{this.attached=!1,r("resize",a),this._stop(),this._resize(0,0),i("attach",o)},n.isAttached(this.canvas)?o():s()}unbindEvents(){qe(this._listeners,(e,n)=>{this.platform.removeEventListener(this,n,e)}),this._listeners={},qe(this._responsiveListeners,(e,n)=>{this.platform.removeEventListener(this,n,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,n,i){const r=i?"set":"remove";let a,s,o,l;for(n==="dataset"&&(a=this.getDatasetMeta(e[0].datasetIndex),a.controller["_"+r+"DatasetHoverStyle"]()),o=0,l=e.length;o{const o=this.getDatasetMeta(a);if(!o)throw new Error("No dataset found at index "+a);return{datasetIndex:a,element:o.data[s],index:s}});!Tl(i,n)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,n))}notifyPlugins(e,n,i){return this._plugins.notify(this,e,n,i)}isPluginEnabled(e){return this._plugins._cache.filter(n=>n.plugin.id===e).length===1}_updateHoverStyles(e,n,i){const r=this.options.hover,a=(l,c)=>l.filter(d=>!c.some(u=>d.datasetIndex===u.datasetIndex&&d.index===u.index)),s=a(n,e),o=i?e:a(e,n);s.length&&this.updateHoverStyle(s,r.mode,!1),o.length&&r.mode&&this.updateHoverStyle(o,r.mode,!0)}_eventHandler(e,n){const i={event:e,replay:n,cancelable:!0,inChartArea:this.isPointInArea(e)},r=s=>(s.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins("beforeEvent",i,r)===!1)return;const a=this._handleEvent(e,n,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,r),(a||i.changed)&&this.render(),this}_handleEvent(e,n,i){const{_active:r=[],options:a}=this,s=n,o=this._getActiveElements(e,r,i,s),l=QP(e),c=B1(e,this._lastEvent,i,l);i&&(this._lastEvent=null,Ke(a.onHover,[e,o,this],this),l&&Ke(a.onClick,[e,o,this],this));const d=!Tl(o,r);return(d||n)&&(this._active=o,this._updateHoverStyles(o,r,n)),this._lastEvent=c,d}_getActiveElements(e,n,i,r){if(e.type==="mouseout")return[];if(!i)return n;const a=this.options.hover;return this.getElementsAtEventForMode(e,a.mode,a,r)}},ae(pi,"defaults",st),ae(pi,"instances",Xo),ae(pi,"overrides",mr),ae(pi,"registry",kt),ae(pi,"version",P1),ae(pi,"getChart",wE),pi);function ME(){return qe(xt.instances,t=>t._plugins.invalidate())}function Y1(t,e,n){const{startAngle:i,pixelMargin:r,x:a,y:s,outerRadius:o,innerRadius:l}=e;let c=r/o;t.beginPath(),t.arc(a,s,o,i-c,n+c),l>r?(c=r/l,t.arc(a,s,l,n+c,i-c,!0)):t.arc(a,s,r,n+gt,i-gt),t.closePath(),t.clip()}function z1(t){return Ff(t,["outerStart","outerEnd","innerStart","innerEnd"])}function H1(t,e,n,i){const r=z1(t.options.borderRadius),a=(n-e)/2,s=Math.min(a,i*e/2),o=l=>{const c=(n-Math.min(a,l))*i/2;return Rt(l,0,Math.min(a,c))};return{outerStart:o(r.outerStart),outerEnd:o(r.outerEnd),innerStart:Rt(r.innerStart,0,s),innerEnd:Rt(r.innerEnd,0,s)}}function Or(t,e,n,i){return{x:n+t*Math.cos(e),y:i+t*Math.sin(e)}}function Il(t,e,n,i,r,a){const{x:s,y:o,startAngle:l,pixelMargin:c,innerRadius:d}=e,u=Math.max(e.outerRadius+i+n-c,0),_=d>0?d+i+n+c:0;let p=0;const f=r-l;if(i){const Y=d>0?d-i:0,Q=u>0?u-i:0,w=(Y+Q)/2,K=w!==0?f*w/(w+i):f;p=(f-K)/2}const m=Math.max(.001,f*u-n/it)/u,h=(f-m)/2,g=l+h+p,E=r-h-p,{outerStart:T,outerEnd:b,innerStart:y,innerEnd:N}=H1(e,_,u,E-g),A=u-T,I=u-b,x=g+T/A,k=E-b/I,z=_+y,C=_+N,P=g+y/z,v=E-N/C;if(t.beginPath(),a){const Y=(x+k)/2;if(t.arc(s,o,u,x,Y),t.arc(s,o,u,Y,k),b>0){const W=Or(I,k,s,o);t.arc(W.x,W.y,b,k,E+gt)}const Q=Or(C,E,s,o);if(t.lineTo(Q.x,Q.y),N>0){const W=Or(C,v,s,o);t.arc(W.x,W.y,N,E+gt,v+Math.PI)}const w=(E-N/_+(g+y/_))/2;if(t.arc(s,o,_,E-N/_,w,!0),t.arc(s,o,_,w,g+y/_,!0),y>0){const W=Or(z,P,s,o);t.arc(W.x,W.y,y,P+Math.PI,g-gt)}const K=Or(A,g,s,o);if(t.lineTo(K.x,K.y),T>0){const W=Or(A,x,s,o);t.arc(W.x,W.y,T,g-gt,x)}}else{t.moveTo(s,o);const Y=Math.cos(x)*u+s,Q=Math.sin(x)*u+o;t.lineTo(Y,Q);const w=Math.cos(k)*u+s,K=Math.sin(k)*u+o;t.lineTo(w,K)}t.closePath()}function V1(t,e,n,i,r){const{fullCircles:a,startAngle:s,circumference:o}=e;let l=e.endAngle;if(a){Il(t,e,n,i,l,r);for(let c=0;c=nt||Es(s,l,c),h=Kn(o,d+p,u+p);return m&&h}getCenterPoint(n){const{x:i,y:r,startAngle:a,endAngle:s,innerRadius:o,outerRadius:l}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],n),{offset:c,spacing:d}=this.options,u=(a+s)/2,_=(o+l+d+c)/2;return{x:i+Math.cos(u)*_,y:r+Math.sin(u)*_}}tooltipPosition(n){return this.getCenterPoint(n)}draw(n){const{options:i,circumference:r}=this,a=(i.offset||0)/4,s=(i.spacing||0)/2,o=i.circular;if(this.pixelMargin=i.borderAlign==="inner"?.33:0,this.fullCircles=r>nt?Math.floor(r/nt):0,r===0||this.innerRadius<0||this.outerRadius<0)return;n.save();const l=(this.startAngle+this.endAngle)/2;n.translate(Math.cos(l)*a,Math.sin(l)*a);const c=1-Math.sin(Math.min(it,r||0)),d=a*c;n.fillStyle=i.backgroundColor,n.strokeStyle=i.borderColor,V1(n,this,d,s,o),q1(n,this,d,s,o),n.restore()}}ae(kr,"id","arc"),ae(kr,"defaults",{borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0}),ae(kr,"defaultRoutes",{backgroundColor:"backgroundColor"}),ae(kr,"descriptors",{_scriptable:!0,_indexable:n=>n!=="borderDash"});function eO(t,e,n=e){t.lineCap=xe(n.borderCapStyle,e.borderCapStyle),t.setLineDash(xe(n.borderDash,e.borderDash)),t.lineDashOffset=xe(n.borderDashOffset,e.borderDashOffset),t.lineJoin=xe(n.borderJoinStyle,e.borderJoinStyle),t.lineWidth=xe(n.borderWidth,e.borderWidth),t.strokeStyle=xe(n.borderColor,e.borderColor)}function $1(t,e,n){t.lineTo(n.x,n.y)}function W1(t){return t.stepped?g0:t.tension||t.cubicInterpolationMode==="monotone"?h0:$1}function tO(t,e,n={}){const i=t.length,{start:r=0,end:a=i-1}=n,{start:s,end:o}=e,l=Math.max(r,s),c=Math.min(a,o),d=ro&&a>o;return{count:i,start:l,loop:e.loop,ilen:c(s+(c?o-b:b))%a,T=()=>{m!==h&&(t.lineTo(d,h),t.lineTo(d,m),t.lineTo(d,g))};for(l&&(p=r[E(0)],t.moveTo(p.x,p.y)),_=0;_<=o;++_){if(p=r[E(_)],p.skip)continue;const b=p.x,y=p.y,N=b|0;N===f?(yh&&(h=y),d=(u*d+b)/++u):(T(),t.lineTo(b,y),f=N,u=0,m=h=y),g=y}T()}function bm(t){const e=t.options,n=e.borderDash&&e.borderDash.length;return!t._decimated&&!t._loop&&!e.tension&&e.cubicInterpolationMode!=="monotone"&&!e.stepped&&!n?Q1:K1}function X1(t){return t.stepped?Q0:t.tension||t.cubicInterpolationMode==="monotone"?X0:Xi}function Z1(t,e,n,i){let r=e._path;r||(r=e._path=new Path2D,e.path(r,n,i)&&r.closePath()),eO(t,e.options),t.stroke(r)}function j1(t,e,n,i){const{segments:r,options:a}=e,s=bm(e);for(const o of r)eO(t,a,o.style),t.beginPath(),s(t,e,o,{start:n,end:n+i-1})&&t.closePath(),t.stroke()}const J1=typeof Path2D=="function";function eF(t,e,n,i){J1&&!e.options.segment?Z1(t,e,n,i):j1(t,e,n,i)}class gn extends oi{constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,n){const i=this.options;if((i.tension||i.cubicInterpolationMode==="monotone")&&!i.stepped&&!this._pointsUpdated){const r=i.spanGaps?this._loop:this._fullLoop;Y0(this._points,i,e,r,n),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=nk(this,this.options.segment))}first(){const e=this.segments,n=this.points;return e.length&&n[e[0].start]}last(){const e=this.segments,n=this.points,i=e.length;return i&&n[e[i-1].end]}interpolate(e,n){const i=this.options,r=e[n],a=this.points,s=YR(this,{property:n,start:r,end:r});if(!s.length)return;const o=[],l=X1(i);let c,d;for(c=0,d=s.length;ce!=="borderDash"&&e!=="fill"});function LE(t,e,n,i){const r=t.options,{[n]:a}=t.getProps([n],i);return Math.abs(e-a)t.replace("rgb(","rgba(").replace(")",", 0.5)"));function iO(t){return Tm[t%Tm.length]}function rO(t){return PE[t%PE.length]}function oF(t,e){return t.borderColor=iO(e),t.backgroundColor=rO(e),++e}function lF(t,e){return t.backgroundColor=t.data.map(()=>iO(e++)),e}function cF(t,e){return t.backgroundColor=t.data.map(()=>rO(e++)),e}function dF(t){let e=0;return(n,i)=>{const r=t.getDatasetMeta(i).controller;r instanceof ar?e=lF(n,e):r instanceof $a?e=cF(n,e):r&&(e=oF(n,e))}}function kE(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}function uF(t){return t&&(t.borderColor||t.backgroundColor)}var _F={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,n){if(!n.enabled)return;const{data:{datasets:i},options:r}=t.config,{elements:a}=r;if(!n.forceOverride&&(kE(i)||uF(r)||a&&kE(a)))return;const s=dF(t);i.forEach(s)}};function pF(t,e,n,i,r){const a=r.samples||i;if(a>=n)return t.slice(e,e+n);const s=[],o=(n-2)/(a-2);let l=0;const c=e+n-1;let d=e,u,_,p,f,m;for(s[l++]=t[d],u=0;up&&(p=f,_=t[E],m=E);s[l++]=_,d=m}return s[l++]=t[c],s}function mF(t,e,n,i){let r=0,a=0,s,o,l,c,d,u,_,p,f,m;const h=[],g=e+n-1,E=t[e].x,b=t[g].x-E;for(s=e;sm&&(m=c,_=s),r=(a*r+o.x)/++a;else{const N=s-1;if(!Pe(u)&&!Pe(_)){const A=Math.min(u,_),I=Math.max(u,_);A!==p&&A!==N&&h.push({...t[A],x:r}),I!==p&&I!==N&&h.push({...t[I],x:r})}s>0&&N!==p&&h.push(t[N]),h.push(o),d=y,a=0,f=m=c,u=_=p=s}}return h}function aO(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function FE(t){t.data.datasets.forEach(e=>{aO(e)})}function fF(t,e){const n=e.length;let i=0,r;const{iScale:a}=t,{min:s,max:o,minDefined:l,maxDefined:c}=a.getUserBounds();return l&&(i=Rt(Qn(e,a.axis,s).lo,0,n-1)),c?r=Rt(Qn(e,a.axis,o).hi+1,i,n)-i:r=n-i,{start:i,count:r}}var gF={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,n)=>{if(!n.enabled){FE(t);return}const i=t.width;t.data.datasets.forEach((r,a)=>{const{_data:s,indexAxis:o}=r,l=t.getDatasetMeta(a),c=s||r.data;if(Ze([o,t.options.indexAxis])==="y"||!l.controller.supportsDecimation)return;const d=t.scales[l.xAxisID];if(d.type!=="linear"&&d.type!=="time"||t.options.parsing)return;let{start:u,count:_}=fF(l,c);const p=n.threshold||4*i;if(_<=p){aO(r);return}Pe(s)&&(r._data=c,delete r.data,Object.defineProperty(r,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(m){this._data=m}}));let f;switch(n.algorithm){case"lttb":f=pF(c,u,_,i,n);break;case"min-max":f=mF(c,u,_,i);break;default:throw new Error(`Unsupported decimation algorithm '${n.algorithm}'`)}r._decimated=f})},destroy(t){FE(t)}};function hF(t,e,n){const i=t.segments,r=t.points,a=e.points,s=[];for(const o of i){let{start:l,end:c}=o;c=Vf(l,c,r);const d=vm(n,r[l],r[c],o.loop);if(!e.segments){s.push({source:o,target:d,start:r[l],end:r[c]});continue}const u=YR(e,d);for(const _ of u){const p=vm(n,a[_.start],a[_.end],_.loop),f=GR(o,r,p);for(const m of f)s.push({source:m,target:_,start:{[n]:UE(d,p,"start",Math.max)},end:{[n]:UE(d,p,"end",Math.min)}})}}return s}function vm(t,e,n,i){if(i)return;let r=e[t],a=n[t];return t==="angle"&&(r=nn(r),a=nn(a)),{property:t,start:r,end:a}}function EF(t,e){const{x:n=null,y:i=null}=t||{},r=e.points,a=[];return e.segments.forEach(({start:s,end:o})=>{o=Vf(s,o,r);const l=r[s],c=r[o];i!==null?(a.push({x:l.x,y:i}),a.push({x:c.x,y:i})):n!==null&&(a.push({x:n,y:l.y}),a.push({x:n,y:c.y}))}),a}function Vf(t,e,n){for(;e>t;e--){const i=n[e];if(!isNaN(i.x)&&!isNaN(i.y))break}return e}function UE(t,e,n,i){return t&&e?i(t[n],e[n]):t?t[n]:e?e[n]:0}function sO(t,e){let n=[],i=!1;return et(t)?(i=!0,n=t):n=EF(t,e),n.length?new gn({points:n,options:{tension:0},_loop:i,_fullLoop:i}):null}function BE(t){return t&&t.fill!==!1}function SF(t,e,n){let r=t[e].fill;const a=[e];let s;if(!n)return r;for(;r!==!1&&a.indexOf(r)===-1;){if(!pt(r))return r;if(s=t[r],!s)return!1;if(s.visible)return r;a.push(r),r=s.fill}return!1}function bF(t,e,n){const i=CF(t);if(ke(i))return isNaN(i.value)?!1:i;let r=parseFloat(i);return pt(r)&&Math.floor(r)===r?TF(i[0],e,r,n):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}function TF(t,e,n,i){return(t==="-"||t==="+")&&(n=e+n),n===e||n<0||n>=i?!1:n}function vF(t,e){let n=null;return t==="start"?n=e.bottom:t==="end"?n=e.top:ke(t)?n=e.getPixelForValue(t.value):e.getBasePixel&&(n=e.getBasePixel()),n}function yF(t,e,n){let i;return t==="start"?i=n:t==="end"?i=e.options.reverse?e.min:e.max:ke(t)?i=t.value:i=e.getBaseValue(),i}function CF(t){const e=t.options,n=e.fill;let i=xe(n&&n.target,n);return i===void 0&&(i=!!e.backgroundColor),i===!1||i===null?!1:i===!0?"origin":i}function RF(t){const{scale:e,index:n,line:i}=t,r=[],a=i.segments,s=i.points,o=OF(e,n);o.push(sO({x:null,y:e.bottom},i));for(let l=0;l=0;--s){const o=r[s].$filler;o&&(o.line.updateControlPoints(a,o.axis),i&&o.fill&&Vc(t.ctx,o,a))}},beforeDatasetsDraw(t,e,n){if(n.drawTime!=="beforeDatasetsDraw")return;const i=t.getSortedVisibleDatasetMetas();for(let r=i.length-1;r>=0;--r){const a=i[r].$filler;BE(a)&&Vc(t.ctx,a,t.chartArea)}},beforeDatasetDraw(t,e,n){const i=e.meta.$filler;!BE(i)||n.drawTime!=="beforeDatasetDraw"||Vc(t.ctx,i,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const HE=(t,e)=>{let{boxHeight:n=e,boxWidth:i=e}=t;return t.usePointStyle&&(n=Math.min(n,e),i=t.pointStyleWidth||Math.min(i,e)),{boxWidth:i,boxHeight:n,itemHeight:Math.max(e,n)}},FF=(t,e)=>t!==null&&e!==null&&t.datasetIndex===e.datasetIndex&&t.index===e.index;class VE extends oi{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,n,i){this.maxWidth=e,this.maxHeight=n,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const e=this.options.labels||{};let n=Ke(e.generateLabels,[this.chart],this)||[];e.filter&&(n=n.filter(i=>e.filter(i,this.chart.data))),e.sort&&(n=n.sort((i,r)=>e.sort(i,r,this.chart.data))),this.options.reverse&&n.reverse(),this.legendItems=n}fit(){const{options:e,ctx:n}=this;if(!e.display){this.width=this.height=0;return}const i=e.labels,r=bt(i.font),a=r.size,s=this._computeTitleHeight(),{boxWidth:o,itemHeight:l}=HE(i,a);let c,d;n.font=r.string,this.isHorizontal()?(c=this.maxWidth,d=this._fitRows(s,a,o,l)+10):(d=this.maxHeight,c=this._fitCols(s,r,o,l)+10),this.width=Math.min(c,e.maxWidth||this.maxWidth),this.height=Math.min(d,e.maxHeight||this.maxHeight)}_fitRows(e,n,i,r){const{ctx:a,maxWidth:s,options:{labels:{padding:o}}}=this,l=this.legendHitBoxes=[],c=this.lineWidths=[0],d=r+o;let u=e;a.textAlign="left",a.textBaseline="middle";let _=-1,p=-d;return this.legendItems.forEach((f,m)=>{const h=i+n/2+a.measureText(f.text).width;(m===0||c[c.length-1]+h+2*o>s)&&(u+=d,c[c.length-(m>0?0:1)]=0,p+=d,_++),l[m]={left:0,top:p,row:_,width:h,height:r},c[c.length-1]+=h+o}),u}_fitCols(e,n,i,r){const{ctx:a,maxHeight:s,options:{labels:{padding:o}}}=this,l=this.legendHitBoxes=[],c=this.columnSizes=[],d=s-e;let u=o,_=0,p=0,f=0,m=0;return this.legendItems.forEach((h,g)=>{const{itemWidth:E,itemHeight:T}=UF(i,n,a,h,r);g>0&&p+T+2*o>d&&(u+=_+o,c.push({width:_,height:p}),f+=_+o,m++,_=p=0),l[g]={left:f,top:p,col:m,width:E,height:T},_=Math.max(_,E),p+=T+o}),u+=_,c.push({width:_,height:p}),u}adjustHitBoxes(){if(!this.options.display)return;const e=this._computeTitleHeight(),{legendHitBoxes:n,options:{align:i,labels:{padding:r},rtl:a}}=this,s=zr(a,this.left,this.width);if(this.isHorizontal()){let o=0,l=Pt(i,this.left+r,this.right-this.lineWidths[o]);for(const c of n)o!==c.row&&(o=c.row,l=Pt(i,this.left+r,this.right-this.lineWidths[o])),c.top+=this.top+e+r,c.left=s.leftForLtr(s.x(l),c.width),l+=c.width+r}else{let o=0,l=Pt(i,this.top+e+r,this.bottom-this.columnSizes[o].height);for(const c of n)c.col!==o&&(o=c.col,l=Pt(i,this.top+e+r,this.bottom-this.columnSizes[o].height)),c.top=l,c.left+=this.left+r,c.left=s.leftForLtr(s.x(c.left),c.width),l+=c.height+r}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const e=this.ctx;Ys(e,this),this._draw(),zs(e)}}_draw(){const{options:e,columnSizes:n,lineWidths:i,ctx:r}=this,{align:a,labels:s}=e,o=st.color,l=zr(e.rtl,this.left,this.width),c=bt(s.font),{padding:d}=s,u=c.size,_=u/2;let p;this.drawTitle(),r.textAlign=l.textAlign("left"),r.textBaseline="middle",r.lineWidth=.5,r.font=c.string;const{boxWidth:f,boxHeight:m,itemHeight:h}=HE(s,u),g=function(N,A,I){if(isNaN(f)||f<=0||isNaN(m)||m<0)return;r.save();const x=xe(I.lineWidth,1);if(r.fillStyle=xe(I.fillStyle,o),r.lineCap=xe(I.lineCap,"butt"),r.lineDashOffset=xe(I.lineDashOffset,0),r.lineJoin=xe(I.lineJoin,"miter"),r.lineWidth=x,r.strokeStyle=xe(I.strokeStyle,o),r.setLineDash(xe(I.lineDash,[])),s.usePointStyle){const k={radius:m*Math.SQRT2/2,pointStyle:I.pointStyle,rotation:I.rotation,borderWidth:x},z=l.xPlus(N,f/2),C=A+_;AR(r,k,z,C,s.pointStyleWidth&&f)}else{const k=A+Math.max((u-m)/2,0),z=l.leftForLtr(N,f),C=lr(I.borderRadius);r.beginPath(),Object.values(C).some(P=>P!==0)?Ss(r,{x:z,y:k,w:f,h:m,radius:C}):r.rect(z,k,f,m),r.fill(),x!==0&&r.stroke()}r.restore()},E=function(N,A,I){fr(r,I.text,N,A+h/2,c,{strikethrough:I.hidden,textAlign:l.textAlign(I.textAlign)})},T=this.isHorizontal(),b=this._computeTitleHeight();T?p={x:Pt(a,this.left+d,this.right-i[0]),y:this.top+d+b,line:0}:p={x:this.left+d,y:Pt(a,this.top+b+d,this.bottom-n[0].height),line:0},FR(this.ctx,e.textDirection);const y=h+d;this.legendItems.forEach((N,A)=>{r.strokeStyle=N.fontColor,r.fillStyle=N.fontColor;const I=r.measureText(N.text).width,x=l.textAlign(N.textAlign||(N.textAlign=s.textAlign)),k=f+_+I;let z=p.x,C=p.y;l.setWidth(this.width),T?A>0&&z+k+d>this.right&&(C=p.y+=y,p.line++,z=p.x=Pt(a,this.left+d,this.right-i[p.line])):A>0&&C+y>this.bottom&&(z=p.x=z+n[p.line].width+d,p.line++,C=p.y=Pt(a,this.top+b+d,this.bottom-n[p.line].height));const P=l.x(z);if(g(P,C,N),z=a0(x,z+f+_,T?z+k:this.right,e.rtl),E(l.x(z),C,N),T)p.x+=k+d;else if(typeof N.text!="string"){const v=c.lineHeight;p.y+=lO(N,v)+d}else p.y+=y}),UR(this.ctx,e.textDirection)}drawTitle(){const e=this.options,n=e.title,i=bt(n.font),r=Mt(n.padding);if(!n.display)return;const a=zr(e.rtl,this.left,this.width),s=this.ctx,o=n.position,l=i.size/2,c=r.top+l;let d,u=this.left,_=this.width;if(this.isHorizontal())_=Math.max(...this.lineWidths),d=this.top+c,u=Pt(e.align,u,this.right-_);else{const f=this.columnSizes.reduce((m,h)=>Math.max(m,h.height),0);d=c+Pt(e.align,this.top,this.bottom-f-e.labels.padding-this._computeTitleHeight())}const p=Pt(o,u,u+_);s.textAlign=a.textAlign(Pf(o)),s.textBaseline="middle",s.strokeStyle=n.color,s.fillStyle=n.color,s.font=i.string,fr(s,n.text,p,d,i)}_computeTitleHeight(){const e=this.options.title,n=bt(e.font),i=Mt(e.padding);return e.display?n.lineHeight+i.height:0}_getLegendItemAt(e,n){let i,r,a;if(Kn(e,this.left,this.right)&&Kn(n,this.top,this.bottom)){for(a=this.legendHitBoxes,i=0;ia.length>s.length?a:s)),e+n.size/2+i.measureText(r).width}function GF(t,e,n){let i=t;return typeof e.text!="string"&&(i=lO(e,n)),i}function lO(t,e){const n=t.text?t.text.length:0;return e*n}function YF(t,e){return!!((t==="mousemove"||t==="mouseout")&&(e.onHover||e.onLeave)||e.onClick&&(t==="click"||t==="mouseup"))}var zF={id:"legend",_element:VE,start(t,e,n){const i=t.legend=new VE({ctx:t.ctx,options:n,chart:t});Bt.configure(t,i,n),Bt.addBox(t,i)},stop(t){Bt.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,n){const i=t.legend;Bt.configure(t,i,n),i.options=n},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,n){const i=e.datasetIndex,r=n.chart;r.isDatasetVisible(i)?(r.hide(i),e.hidden=!0):(r.show(i),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:n,pointStyle:i,textAlign:r,color:a,useBorderRadius:s,borderRadius:o}}=t.legend.options;return t._getSortedDatasetMetas().map(l=>{const c=l.controller.getStyle(n?0:void 0),d=Mt(c.borderWidth);return{text:e[l.index].label,fillStyle:c.backgroundColor,fontColor:a,hidden:!l.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(d.width+d.height)/4,strokeStyle:c.borderColor,pointStyle:i||c.pointStyle,rotation:c.rotation,textAlign:r||c.textAlign,borderRadius:s&&(o||c.borderRadius),datasetIndex:l.index}},this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class qf extends oi{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,n){const i=this.options;if(this.left=0,this.top=0,!i.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=n;const r=et(i.text)?i.text.length:1;this._padding=Mt(i.padding);const a=r*bt(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=a:this.width=a}isHorizontal(){const e=this.options.position;return e==="top"||e==="bottom"}_drawArgs(e){const{top:n,left:i,bottom:r,right:a,options:s}=this,o=s.align;let l=0,c,d,u;return this.isHorizontal()?(d=Pt(o,i,a),u=n+e,c=a-i):(s.position==="left"?(d=i+e,u=Pt(o,r,n),l=it*-.5):(d=a-e,u=Pt(o,n,r),l=it*.5),c=r-n),{titleX:d,titleY:u,maxWidth:c,rotation:l}}draw(){const e=this.ctx,n=this.options;if(!n.display)return;const i=bt(n.font),a=i.lineHeight/2+this._padding.top,{titleX:s,titleY:o,maxWidth:l,rotation:c}=this._drawArgs(a);fr(e,n.text,0,0,i,{color:n.color,maxWidth:l,rotation:c,textAlign:Pf(n.align),textBaseline:"middle",translation:[s,o]})}}function HF(t,e){const n=new qf({ctx:t.ctx,options:e,chart:t});Bt.configure(t,n,e),Bt.addBox(t,n),t.titleBlock=n}var VF={id:"title",_element:qf,start(t,e,n){HF(t,n)},stop(t){const e=t.titleBlock;Bt.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,n){const i=t.titleBlock;Bt.configure(t,i,n),i.options=n},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Oo=new WeakMap;var qF={id:"subtitle",start(t,e,n){const i=new qf({ctx:t.ctx,options:n,chart:t});Bt.configure(t,i,n),Bt.addBox(t,i),Oo.set(t,i)},stop(t){Bt.removeBox(t,Oo.get(t)),Oo.delete(t)},beforeUpdate(t,e,n){const i=Oo.get(t);Bt.configure(t,i,n),i.options=n},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Oa={average(t){if(!t.length)return!1;let e,n,i=0,r=0,a=0;for(e=0,n=t.length;e-1?t.split(`
+`):t}function $F(t,e){const{element:n,datasetIndex:i,index:r}=e,a=t.getDatasetMeta(i).controller,{label:s,value:o}=a.getLabelAndValue(r);return{chart:t,label:s,parsed:a.getParsed(r),raw:t.data.datasets[i].data[r],formattedValue:o,dataset:a.getDataset(),dataIndex:r,datasetIndex:i,element:n}}function qE(t,e){const n=t.chart.ctx,{body:i,footer:r,title:a}=t,{boxWidth:s,boxHeight:o}=e,l=bt(e.bodyFont),c=bt(e.titleFont),d=bt(e.footerFont),u=a.length,_=r.length,p=i.length,f=Mt(e.padding);let m=f.height,h=0,g=i.reduce((b,y)=>b+y.before.length+y.lines.length+y.after.length,0);if(g+=t.beforeBody.length+t.afterBody.length,u&&(m+=u*c.lineHeight+(u-1)*e.titleSpacing+e.titleMarginBottom),g){const b=e.displayColors?Math.max(o,l.lineHeight):l.lineHeight;m+=p*b+(g-p)*l.lineHeight+(g-1)*e.bodySpacing}_&&(m+=e.footerMarginTop+_*d.lineHeight+(_-1)*e.footerSpacing);let E=0;const T=function(b){h=Math.max(h,n.measureText(b).width+E)};return n.save(),n.font=c.string,qe(t.title,T),n.font=l.string,qe(t.beforeBody.concat(t.afterBody),T),E=e.displayColors?s+2+e.boxPadding:0,qe(i,b=>{qe(b.before,T),qe(b.lines,T),qe(b.after,T)}),E=0,n.font=d.string,qe(t.footer,T),n.restore(),h+=f.width,{width:h,height:m}}function WF(t,e){const{y:n,height:i}=e;return nt.height-i/2?"bottom":"center"}function KF(t,e,n,i){const{x:r,width:a}=i,s=n.caretSize+n.caretPadding;if(t==="left"&&r+a+s>e.width||t==="right"&&r-a-s<0)return!0}function QF(t,e,n,i){const{x:r,width:a}=n,{width:s,chartArea:{left:o,right:l}}=t;let c="center";return i==="center"?c=r<=(o+l)/2?"left":"right":r<=a/2?c="left":r>=s-a/2&&(c="right"),KF(c,t,e,n)&&(c="center"),c}function $E(t,e,n){const i=n.yAlign||e.yAlign||WF(t,n);return{xAlign:n.xAlign||e.xAlign||QF(t,e,n,i),yAlign:i}}function XF(t,e){let{x:n,width:i}=t;return e==="right"?n-=i:e==="center"&&(n-=i/2),n}function ZF(t,e,n){let{y:i,height:r}=t;return e==="top"?i+=n:e==="bottom"?i-=r+n:i-=r/2,i}function WE(t,e,n,i){const{caretSize:r,caretPadding:a,cornerRadius:s}=t,{xAlign:o,yAlign:l}=n,c=r+a,{topLeft:d,topRight:u,bottomLeft:_,bottomRight:p}=lr(s);let f=XF(e,o);const m=ZF(e,l,c);return l==="center"?o==="left"?f+=c:o==="right"&&(f-=c):o==="left"?f-=Math.max(d,_)+r:o==="right"&&(f+=Math.max(u,p)+r),{x:Rt(f,0,i.width-e.width),y:Rt(m,0,i.height-e.height)}}function No(t,e,n){const i=Mt(n.padding);return e==="center"?t.x+t.width/2:e==="right"?t.x+t.width-i.right:t.x+i.left}function KE(t){return Cn([],Vn(t))}function jF(t,e,n){return Bi(t,{tooltip:e,tooltipItems:n,type:"tooltip"})}function QE(t,e){const n=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return n?t.override(n):t}const cO={beforeTitle:Yn,title(t){if(t.length>0){const e=t[0],n=e.chart.data.labels,i=n?n.length:0;if(this&&this.options&&this.options.mode==="dataset")return e.dataset.label||"";if(e.label)return e.label;if(i>0&&e.dataIndex"u"?cO[e].call(n,i):r}class ym extends oi{constructor(e){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=e.chart,this.options=e.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(e){this.options=e,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const e=this._cachedAnimations;if(e)return e;const n=this.chart,i=this.options.setContext(this.getContext()),r=i.enabled&&n.options.animation&&i.animations,a=new zR(this.chart,r);return r._cacheable&&(this._cachedAnimations=Object.freeze(a)),a}getContext(){return this.$context||(this.$context=jF(this.chart.getContext(),this,this._tooltipItems))}getTitle(e,n){const{callbacks:i}=n,r=Vt(i,"beforeTitle",this,e),a=Vt(i,"title",this,e),s=Vt(i,"afterTitle",this,e);let o=[];return o=Cn(o,Vn(r)),o=Cn(o,Vn(a)),o=Cn(o,Vn(s)),o}getBeforeBody(e,n){return KE(Vt(n.callbacks,"beforeBody",this,e))}getBody(e,n){const{callbacks:i}=n,r=[];return qe(e,a=>{const s={before:[],lines:[],after:[]},o=QE(i,a);Cn(s.before,Vn(Vt(o,"beforeLabel",this,a))),Cn(s.lines,Vt(o,"label",this,a)),Cn(s.after,Vn(Vt(o,"afterLabel",this,a))),r.push(s)}),r}getAfterBody(e,n){return KE(Vt(n.callbacks,"afterBody",this,e))}getFooter(e,n){const{callbacks:i}=n,r=Vt(i,"beforeFooter",this,e),a=Vt(i,"footer",this,e),s=Vt(i,"afterFooter",this,e);let o=[];return o=Cn(o,Vn(r)),o=Cn(o,Vn(a)),o=Cn(o,Vn(s)),o}_createItems(e){const n=this._active,i=this.chart.data,r=[],a=[],s=[];let o=[],l,c;for(l=0,c=n.length;le.filter(d,u,_,i))),e.itemSort&&(o=o.sort((d,u)=>e.itemSort(d,u,i))),qe(o,d=>{const u=QE(e.callbacks,d);r.push(Vt(u,"labelColor",this,d)),a.push(Vt(u,"labelPointStyle",this,d)),s.push(Vt(u,"labelTextColor",this,d))}),this.labelColors=r,this.labelPointStyles=a,this.labelTextColors=s,this.dataPoints=o,o}update(e,n){const i=this.options.setContext(this.getContext()),r=this._active;let a,s=[];if(!r.length)this.opacity!==0&&(a={opacity:0});else{const o=Oa[i.position].call(this,r,this._eventPosition);s=this._createItems(i),this.title=this.getTitle(s,i),this.beforeBody=this.getBeforeBody(s,i),this.body=this.getBody(s,i),this.afterBody=this.getAfterBody(s,i),this.footer=this.getFooter(s,i);const l=this._size=qE(this,i),c=Object.assign({},o,l),d=$E(this.chart,i,c),u=WE(i,c,d,this.chart);this.xAlign=d.xAlign,this.yAlign=d.yAlign,a={opacity:1,x:u.x,y:u.y,width:l.width,height:l.height,caretX:o.x,caretY:o.y}}this._tooltipItems=s,this.$context=void 0,a&&this._resolveAnimations().update(this,a),e&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(e,n,i,r){const a=this.getCaretPosition(e,i,r);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)}getCaretPosition(e,n,i){const{xAlign:r,yAlign:a}=this,{caretSize:s,cornerRadius:o}=i,{topLeft:l,topRight:c,bottomLeft:d,bottomRight:u}=lr(o),{x:_,y:p}=e,{width:f,height:m}=n;let h,g,E,T,b,y;return a==="center"?(b=p+m/2,r==="left"?(h=_,g=h-s,T=b+s,y=b-s):(h=_+f,g=h+s,T=b-s,y=b+s),E=h):(r==="left"?g=_+Math.max(l,d)+s:r==="right"?g=_+f-Math.max(c,u)-s:g=this.caretX,a==="top"?(T=p,b=T-s,h=g-s,E=g+s):(T=p+m,b=T+s,h=g+s,E=g-s),y=T),{x1:h,x2:g,x3:E,y1:T,y2:b,y3:y}}drawTitle(e,n,i){const r=this.title,a=r.length;let s,o,l;if(a){const c=zr(i.rtl,this.x,this.width);for(e.x=No(this,i.titleAlign,i),n.textAlign=c.textAlign(i.titleAlign),n.textBaseline="middle",s=bt(i.titleFont),o=i.titleSpacing,n.fillStyle=i.titleColor,n.font=s.string,l=0;lE!==0)?(e.beginPath(),e.fillStyle=a.multiKeyBackground,Ss(e,{x:m,y:f,w:c,h:l,radius:g}),e.fill(),e.stroke(),e.fillStyle=s.backgroundColor,e.beginPath(),Ss(e,{x:h,y:f+1,w:c-2,h:l-2,radius:g}),e.fill()):(e.fillStyle=a.multiKeyBackground,e.fillRect(m,f,c,l),e.strokeRect(m,f,c,l),e.fillStyle=s.backgroundColor,e.fillRect(h,f+1,c-2,l-2))}e.fillStyle=this.labelTextColors[i]}drawBody(e,n,i){const{body:r}=this,{bodySpacing:a,bodyAlign:s,displayColors:o,boxHeight:l,boxWidth:c,boxPadding:d}=i,u=bt(i.bodyFont);let _=u.lineHeight,p=0;const f=zr(i.rtl,this.x,this.width),m=function(I){n.fillText(I,f.x(e.x+p),e.y+_/2),e.y+=_+a},h=f.textAlign(s);let g,E,T,b,y,N,A;for(n.textAlign=s,n.textBaseline="middle",n.font=u.string,e.x=No(this,h,i),n.fillStyle=i.bodyColor,qe(this.beforeBody,m),p=o&&h!=="right"?s==="center"?c/2+d:c+2+d:0,b=0,N=r.length;b0&&n.stroke()}_updateAnimationTarget(e){const n=this.chart,i=this.$animations,r=i&&i.x,a=i&&i.y;if(r||a){const s=Oa[e.position].call(this,this._active,this._eventPosition);if(!s)return;const o=this._size=qE(this,e),l=Object.assign({},s,this._size),c=$E(n,e,l),d=WE(e,l,c,n);(r._to!==d.x||a._to!==d.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=o.width,this.height=o.height,this.caretX=s.x,this.caretY=s.y,this._resolveAnimations().update(this,d))}}_willRender(){return!!this.opacity}draw(e){const n=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(n);const r={width:this.width,height:this.height},a={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const s=Mt(n.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;n.enabled&&o&&(e.save(),e.globalAlpha=i,this.drawBackground(a,e,r,n),FR(e,n.textDirection),a.y+=s.top,this.drawTitle(a,e,n),this.drawBody(a,e,n),this.drawFooter(a,e,n),UR(e,n.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,n){const i=this._active,r=e.map(({datasetIndex:o,index:l})=>{const c=this.chart.getDatasetMeta(o);if(!c)throw new Error("Cannot find a dataset at index "+o);return{datasetIndex:o,element:c.data[l],index:l}}),a=!Tl(i,r),s=this._positionChanged(r,n);(a||s)&&(this._active=r,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,n,i=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const r=this.options,a=this._active||[],s=this._getActiveElements(e,a,n,i),o=this._positionChanged(s,e),l=n||!Tl(s,a)||o;return l&&(this._active=s,(r.enabled||r.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,n))),l}_getActiveElements(e,n,i,r){const a=this.options;if(e.type==="mouseout")return[];if(!r)return n.filter(o=>this.chart.data.datasets[o.datasetIndex]&&this.chart.getDatasetMeta(o.datasetIndex).controller.getParsed(o.index)!==void 0);const s=this.chart.getElementsAtEventForMode(e,a.mode,a,i);return a.reverse&&s.reverse(),s}_positionChanged(e,n){const{caretX:i,caretY:r,options:a}=this,s=Oa[a.position].call(this,e,n);return s!==!1&&(i!==s.x||r!==s.y)}}ae(ym,"positioners",Oa);var JF={id:"tooltip",_element:ym,positioners:Oa,afterInit(t,e,n){n&&(t.tooltip=new ym({chart:t,options:n}))},beforeUpdate(t,e,n){t.tooltip&&t.tooltip.initialize(n)},reset(t,e,n){t.tooltip&&t.tooltip.initialize(n)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const n={tooltip:e};if(t.notifyPlugins("beforeTooltipDraw",{...n,cancelable:!0})===!1)return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",n)}},afterEvent(t,e){if(t.tooltip){const n=e.replay;t.tooltip.handleEvent(e.event,n,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:cO},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>t!=="filter"&&t!=="itemSort"&&t!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},eU=Object.freeze({__proto__:null,Colors:_F,Decimation:gF,Filler:kF,Legend:zF,SubTitle:qF,Title:VF,Tooltip:JF});const tU=(t,e,n,i)=>(typeof e=="string"?(n=t.push(e)-1,i.unshift({index:n,label:e})):isNaN(e)&&(n=null),n);function nU(t,e,n,i){const r=t.indexOf(e);if(r===-1)return tU(t,e,n,i);const a=t.lastIndexOf(e);return r!==a?n:r}const iU=(t,e)=>t===null?null:Rt(Math.round(t),0,e);function XE(t){const e=this.getLabels();return t>=0&&tn.length-1?null:this.getPixelForValue(n[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}}ae(Cm,"id","category"),ae(Cm,"defaults",{ticks:{callback:XE}});function rU(t,e){const n=[],{bounds:r,step:a,min:s,max:o,precision:l,count:c,maxTicks:d,maxDigits:u,includeBounds:_}=t,p=a||1,f=d-1,{min:m,max:h}=e,g=!Pe(s),E=!Pe(o),T=!Pe(c),b=(h-m)/(u+1);let y=qh((h-m)/f/p)*p,N,A,I,x;if(y<1e-14&&!g&&!E)return[{value:m},{value:h}];x=Math.ceil(h/y)-Math.floor(m/y),x>f&&(y=qh(x*y/f/p)*p),Pe(l)||(N=Math.pow(10,l),y=Math.ceil(y*N)/N),r==="ticks"?(A=Math.floor(m/y)*y,I=Math.ceil(h/y)*y):(A=m,I=h),g&&E&&a&&JP((o-s)/a,y/1e3)?(x=Math.round(Math.min((o-s)/y,d)),y=(o-s)/x,A=s,I=o):T?(A=g?s:A,I=E?o:I,x=c-1,y=(I-A)/x):(x=(I-A)/y,za(x,Math.round(x),y/1e3)?x=Math.round(x):x=Math.ceil(x));const k=Math.max($h(y),$h(A));N=Math.pow(10,Pe(l)?k:l),A=Math.round(A*N)/N,I=Math.round(I*N)/N;let z=0;for(g&&(_&&A!==s?(n.push({value:s}),Ao)break;n.push({value:C})}return E&&_&&I!==o?n.length&&za(n[n.length-1].value,o,ZE(o,b,t))?n[n.length-1].value=o:n.push({value:o}):(!E||I===o)&&n.push({value:I}),n}function ZE(t,e,{horizontal:n,minRotation:i}){const r=fn(i),a=(n?Math.sin(r):Math.cos(r))||.001,s=.75*e*(""+t).length;return Math.min(e/a,s)}class Al extends br{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,n){return Pe(e)||(typeof e=="number"||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){const{beginAtZero:e}=this.options,{minDefined:n,maxDefined:i}=this.getUserBounds();let{min:r,max:a}=this;const s=l=>r=n?r:l,o=l=>a=i?a:l;if(e){const l=Dn(r),c=Dn(a);l<0&&c<0?o(0):l>0&&c>0&&s(0)}if(r===a){let l=a===0?1:Math.abs(a*.05);o(a+l),e||s(r-l)}this.min=r,this.max=a}getTickLimit(){const e=this.options.ticks;let{maxTicksLimit:n,stepSize:i}=e,r;return i?(r=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,r>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${r} ticks. Limiting to 1000.`),r=1e3)):(r=this.computeTickLimit(),n=n||11),n&&(r=Math.min(n,r)),r}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const e=this.options,n=e.ticks;let i=this.getTickLimit();i=Math.max(2,i);const r={maxTicks:i,bounds:e.bounds,min:e.min,max:e.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},a=this._range||this,s=rU(r,a);return e.bounds==="ticks"&&SR(s,this,"value"),e.reverse?(s.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),s}configure(){const e=this.ticks;let n=this.min,i=this.max;if(super.configure(),this.options.offset&&e.length){const r=(i-n)/Math.max(e.length-1,1)/2;n-=r,i+=r}this._startValue=n,this._endValue=i,this._valueRange=i-n}getLabelForValue(e){return Gs(e,this.chart.options.locale,this.options.ticks.format)}}class gr extends Al{determineDataLimits(){const{min:e,max:n}=this.getMinMax(!0);this.min=pt(e)?e:0,this.max=pt(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){const e=this.isHorizontal(),n=e?this.width:this.height,i=fn(this.options.ticks.minRotation),r=(e?Math.sin(i):Math.cos(i))||.001,a=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,a.lineHeight/r))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}}ae(gr,"id","linear"),ae(gr,"defaults",{ticks:{callback:dc.formatters.numeric}});const Ts=t=>Math.floor(Ti(t)),$i=(t,e)=>Math.pow(10,Ts(t)+e);function jE(t){return t/Math.pow(10,Ts(t))===1}function JE(t,e,n){const i=Math.pow(10,n),r=Math.floor(t/i);return Math.ceil(e/i)-r}function aU(t,e){const n=e-t;let i=Ts(n);for(;JE(t,e,i)>10;)i++;for(;JE(t,e,i)<10;)i--;return Math.min(i,Ts(t))}function sU(t,{min:e,max:n}){e=en(t.min,e);const i=[],r=Ts(e);let a=aU(e,n),s=a<0?Math.pow(10,Math.abs(a)):1;const o=Math.pow(10,a),l=r>a?Math.pow(10,r):0,c=Math.round((e-l)*s)/s,d=Math.floor((e-l)/o/10)*o*10;let u=Math.floor((c-d)/Math.pow(10,a)),_=en(t.min,Math.round((l+d+u*Math.pow(10,a))*s)/s);for(;_=10?u=u<15?15:20:u++,u>=20&&(a++,u=2,s=a>=0?1:s),_=Math.round((l+d+u*Math.pow(10,a))*s)/s;const p=en(t.max,_);return i.push({value:p,major:jE(p),significand:u}),i}class Rm extends br{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,n){const i=Al.prototype.parse.apply(this,[e,n]);if(i===0){this._zero=!0;return}return pt(i)&&i>0?i:null}determineDataLimits(){const{min:e,max:n}=this.getMinMax(!0);this.min=pt(e)?Math.max(0,e):null,this.max=pt(n)?Math.max(0,n):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!pt(this._userMin)&&(this.min=e===$i(this.min,0)?$i(this.min,-1):$i(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:e,maxDefined:n}=this.getUserBounds();let i=this.min,r=this.max;const a=o=>i=e?i:o,s=o=>r=n?r:o;i===r&&(i<=0?(a(1),s(10)):(a($i(i,-1)),s($i(r,1)))),i<=0&&a($i(r,-1)),r<=0&&s($i(i,1)),this.min=i,this.max=r}buildTicks(){const e=this.options,n={min:this._userMin,max:this._userMax},i=sU(n,this);return e.bounds==="ticks"&&SR(i,this,"value"),e.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}getLabelForValue(e){return e===void 0?"0":Gs(e,this.chart.options.locale,this.options.ticks.format)}configure(){const e=this.min;super.configure(),this._startValue=Ti(e),this._valueRange=Ti(this.max)-Ti(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(Ti(e)-this._startValue)/this._valueRange)}getValueForPixel(e){const n=this.getDecimalForPixel(e);return Math.pow(10,this._startValue+n*this._valueRange)}}ae(Rm,"id","logarithmic"),ae(Rm,"defaults",{ticks:{callback:dc.formatters.logarithmic,major:{enabled:!0}}});function Om(t){const e=t.ticks;if(e.display&&t.display){const n=Mt(e.backdropPadding);return xe(e.font&&e.font.size,st.font.size)+n.height}return 0}function oU(t,e,n){return n=et(n)?n:[n],{w:f0(t,e.string,n),h:n.length*e.lineHeight}}function eS(t,e,n,i,r){return t===i||t===r?{start:e-n/2,end:e+n/2}:tr?{start:e-n,end:e}:{start:e,end:e+n}}function lU(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},n=Object.assign({},e),i=[],r=[],a=t._pointLabels.length,s=t.options.pointLabels,o=s.centerPointLabels?it/a:0;for(let l=0;le.r&&(o=(i.end-e.r)/a,t.r=Math.max(t.r,e.r+o)),r.starte.b&&(l=(r.end-e.b)/s,t.b=Math.max(t.b,e.b+l))}function dU(t,e,n){const i=t.drawingArea,{extra:r,additionalAngle:a,padding:s,size:o}=n,l=t.getPointPosition(e,i+r+s,a),c=Math.round(Mf(nn(l.angle+gt))),d=fU(l.y,o.h,c),u=pU(c),_=mU(l.x,o.w,u);return{visible:!0,x:l.x,y:d,textAlign:u,left:_,top:d,right:_+o.w,bottom:d+o.h}}function uU(t,e){if(!e)return!0;const{left:n,top:i,right:r,bottom:a}=t;return!(Xn({x:n,y:i},e)||Xn({x:n,y:a},e)||Xn({x:r,y:i},e)||Xn({x:r,y:a},e))}function _U(t,e,n){const i=[],r=t._pointLabels.length,a=t.options,{centerPointLabels:s,display:o}=a.pointLabels,l={extra:Om(a)/2,additionalAngle:s?it/r:0};let c;for(let d=0;d270||n<90)&&(t-=e),t}function gU(t,e,n){const{left:i,top:r,right:a,bottom:s}=n,{backdropColor:o}=e;if(!Pe(o)){const l=lr(e.borderRadius),c=Mt(e.backdropPadding);t.fillStyle=o;const d=i-c.left,u=r-c.top,_=a-i+c.width,p=s-r+c.height;Object.values(l).some(f=>f!==0)?(t.beginPath(),Ss(t,{x:d,y:u,w:_,h:p,radius:l}),t.fill()):t.fillRect(d,u,_,p)}}function hU(t,e){const{ctx:n,options:{pointLabels:i}}=t;for(let r=e-1;r>=0;r--){const a=t._pointLabelItems[r];if(!a.visible)continue;const s=i.setContext(t.getPointLabelContext(r));gU(n,s,a);const o=bt(s.font),{x:l,y:c,textAlign:d}=a;fr(n,t._pointLabels[r],l,c+o.lineHeight/2,o,{color:s.color,textAlign:d,textBaseline:"middle"})}}function dO(t,e,n,i){const{ctx:r}=t;if(n)r.arc(t.xCenter,t.yCenter,e,0,nt);else{let a=t.getPointPosition(0,e);r.moveTo(a.x,a.y);for(let s=1;s{const r=Ke(this.options.pointLabels.callback,[n,i],this);return r||r===0?r:""}).filter((n,i)=>this.chart.getDataVisibility(i))}fit(){const e=this.options;e.display&&e.pointLabels.display?lU(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,n,i,r){this.xCenter+=Math.floor((e-n)/2),this.yCenter+=Math.floor((i-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,n,i,r))}getIndexAngle(e){const n=nt/(this._pointLabels.length||1),i=this.options.startAngle||0;return nn(e*n+fn(i))}getDistanceFromCenterForValue(e){if(Pe(e))return NaN;const n=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*n:(e-this.min)*n}getValueForDistanceFromCenter(e){if(Pe(e))return NaN;const n=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-n:this.min+n}getPointLabelContext(e){const n=this._pointLabels||[];if(e>=0&&e{if(u!==0){l=this.getDistanceFromCenterForValue(d.value);const _=this.getContext(u),p=r.setContext(_),f=a.setContext(_);EU(this,p,l,s,f)}}),i.display){for(e.save(),o=s-1;o>=0;o--){const d=i.setContext(this.getPointLabelContext(o)),{color:u,lineWidth:_}=d;!_||!u||(e.lineWidth=_,e.strokeStyle=u,e.setLineDash(d.borderDash),e.lineDashOffset=d.borderDashOffset,l=this.getDistanceFromCenterForValue(n.ticks.reverse?this.min:this.max),c=this.getPointPosition(o,l),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(c.x,c.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){const e=this.ctx,n=this.options,i=n.ticks;if(!i.display)return;const r=this.getIndexAngle(0);let a,s;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(r),e.textAlign="center",e.textBaseline="middle",this.ticks.forEach((o,l)=>{if(l===0&&!n.reverse)return;const c=i.setContext(this.getContext(l)),d=bt(c.font);if(a=this.getDistanceFromCenterForValue(this.ticks[l].value),c.showLabelBackdrop){e.font=d.string,s=e.measureText(o.label).width,e.fillStyle=c.backdropColor;const u=Mt(c.backdropPadding);e.fillRect(-s/2-u.left,-a-d.size/2-u.top,s+u.width,d.size+u.height)}fr(e,o.label,0,-a,d,{color:c.color,strokeColor:c.textStrokeColor,strokeWidth:c.textStrokeWidth})}),e.restore()}drawTitle(){}}ae(Na,"id","radialLinear"),ae(Na,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:dc.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(e){return e},padding:5,centerPointLabels:!1}}),ae(Na,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),ae(Na,"descriptors",{angleLines:{_fallback:"grid"}});const _c={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Qt=Object.keys(_c);function tS(t,e){return t-e}function nS(t,e){if(Pe(e))return null;const n=t._adapter,{parser:i,round:r,isoWeekday:a}=t._parseOpts;let s=e;return typeof i=="function"&&(s=i(s)),pt(s)||(s=typeof i=="string"?n.parse(s,i):n.parse(s)),s===null?null:(r&&(s=r==="week"&&(Xr(a)||a===!0)?n.startOf(s,"isoWeek",a):n.startOf(s,r)),+s)}function iS(t,e,n,i){const r=Qt.length;for(let a=Qt.indexOf(t);a=Qt.indexOf(n);a--){const s=Qt[a];if(_c[s].common&&t._adapter.diff(r,i,s)>=e-1)return s}return Qt[n?Qt.indexOf(n):0]}function TU(t){for(let e=Qt.indexOf(t)+1,n=Qt.length;e=e?n[i]:n[r];t[a]=!0}}function vU(t,e,n,i){const r=t._adapter,a=+r.startOf(e[0].value,i),s=e[e.length-1].value;let o,l;for(o=a;o<=s;o=+r.add(o,1,i))l=n[o],l>=0&&(e[l].major=!0);return e}function aS(t,e,n){const i=[],r={},a=e.length;let s,o;for(s=0;s+e.value))}initOffsets(e=[]){let n=0,i=0,r,a;this.options.offset&&e.length&&(r=this.getDecimalForValue(e[0]),e.length===1?n=1-r:n=(this.getDecimalForValue(e[1])-r)/2,a=this.getDecimalForValue(e[e.length-1]),e.length===1?i=a:i=(a-this.getDecimalForValue(e[e.length-2]))/2);const s=e.length<3?.5:.25;n=Rt(n,0,s),i=Rt(i,0,s),this._offsets={start:n,end:i,factor:1/(n+1+i)}}_generate(){const e=this._adapter,n=this.min,i=this.max,r=this.options,a=r.time,s=a.unit||iS(a.minUnit,n,i,this._getLabelCapacity(n)),o=xe(r.ticks.stepSize,1),l=s==="week"?a.isoWeekday:!1,c=Xr(l)||l===!0,d={};let u=n,_,p;if(c&&(u=+e.startOf(u,"isoWeek",l)),u=+e.startOf(u,c?"day":s),e.diff(i,n,s)>1e5*o)throw new Error(n+" and "+i+" are too far apart with stepSize of "+o+" "+s);const f=r.ticks.source==="data"&&this.getDataTimestamps();for(_=u,p=0;_+m)}getLabelForValue(e){const n=this._adapter,i=this.options.time;return i.tooltipFormat?n.format(e,i.tooltipFormat):n.format(e,i.displayFormats.datetime)}format(e,n){const r=this.options.time.displayFormats,a=this._unit,s=n||r[a];return this._adapter.format(e,s)}_tickFormatFunction(e,n,i,r){const a=this.options,s=a.ticks.callback;if(s)return Ke(s,[e,n,i],this);const o=a.time.displayFormats,l=this._unit,c=this._majorUnit,d=l&&o[l],u=c&&o[c],_=i[n],p=c&&u&&_&&_.major;return this._adapter.format(e,r||(p?u:d))}generateTickLabels(e){let n,i,r;for(n=0,i=e.length;n0?o:1}getDataTimestamps(){let e=this._cache.data||[],n,i;if(e.length)return e;const r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(n=0,i=r.length;n=t[i].pos&&e<=t[r].pos&&({lo:i,hi:r}=Qn(t,"pos",e)),{pos:a,time:o}=t[i],{pos:s,time:l}=t[r]):(e>=t[i].time&&e<=t[r].time&&({lo:i,hi:r}=Qn(t,"time",e)),{time:a,pos:o}=t[i],{time:s,pos:l}=t[r]);const c=s-a;return c?o+(l-o)*(e-a)/c:o}class Nm extends vs{constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const e=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(e);this._minPos=Io(n,this.min),this._tableRange=Io(n,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){const{min:n,max:i}=this,r=[],a=[];let s,o,l,c,d;for(s=0,o=e.length;s=n&&c<=i&&r.push(c);if(r.length<2)return[{time:n,pos:0},{time:i,pos:1}];for(s=0,o=r.length;sr-a)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;const n=this.getDataTimestamps(),i=this.getLabelTimestamps();return n.length&&i.length?e=this.normalize(n.concat(i)):e=n.length?n:i,e=this._cache.all=e,e}getDecimalForValue(e){return(Io(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){const n=this._offsets,i=this.getDecimalForPixel(e)/n.factor-n.end;return Io(this._table,i*this._tableRange+this._minPos,!0)}}ae(Nm,"id","timeseries"),ae(Nm,"defaults",vs.defaults);var yU=Object.freeze({__proto__:null,CategoryScale:Cm,LinearScale:gr,LogarithmicScale:Rm,RadialLinearScale:Na,TimeScale:vs,TimeSeriesScale:Nm});const $f=[xk,sF,eU,yU],uO={data:{type:Object,required:!0},options:{type:Object,default:()=>({})},plugins:{type:Array,default:()=>[]},datasetIdKey:{type:String,default:"label"},updateMode:{type:String,default:void 0}},CU={type:{type:String,required:!0},...uO},RU=pC[0]==="2"?(t,e)=>Object.assign(t,{attrs:e}):(t,e)=>Object.assign(t,e);function Nr(t){return Wl(t)?Ue(t):t}function OU(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t;return Wl(e)?new Proxy(t,{}):t}function NU(t,e){const n=t.options;n&&e&&Object.assign(n,e)}function _O(t,e){t.labels=e}function pO(t,e,n){const i=[];t.datasets=e.map(r=>{const a=t.datasets.find(s=>s[n]===r[n]);return!a||!r.data||i.includes(a)?{...r}:(i.push(a),Object.assign(a,r),a)})}function IU(t,e){const n={labels:[],datasets:[]};return _O(n,t.labels),pO(n,t.datasets,e),n}const AU=Fe({props:CU,setup(t,e){let{expose:n}=e;const i=$e(null),r=Jm(null);n({chart:r});const a=()=>{if(!i.value)return;const{type:l,data:c,options:d,plugins:u,datasetIdKey:_}=t,p=IU(c,_),f=OU(p,c);r.value=new xt(i.value,{type:l,data:f,options:{...d},plugins:u})},s=()=>{const l=Ue(r.value);l&&(l.destroy(),r.value=null)},o=l=>{l.update(t.updateMode)};return Jl(a),Xy(s),An([()=>t.options,()=>t.data],(l,c)=>{let[d,u]=l,[_,p]=c;const f=Ue(r.value);if(!f)return;let m=!1;if(d){const h=Nr(d),g=Nr(_);h&&h!==g&&(NU(f,h),m=!0)}if(u){const h=Nr(u.labels),g=Nr(p.labels),E=Nr(u.datasets),T=Nr(p.datasets);h!==g&&(_O(f.config.data,h),m=!0),E&&E!==T&&(pO(f.config.data,E,t.datasetIdKey),m=!0)}m&&o(f)},{deep:!0}),()=>Mi("canvas",{ref:i})}});function mO(t,e){return xt.register(e),Fe({props:uO,setup(n,i){let{expose:r}=i;const a=Jm(null),s=o=>{a.value=o==null?void 0:o.chart};return r({chart:a}),()=>Mi(AU,RU({ref:s},{type:t,...n}))}})}const xU=mO("bar",qa),DU=mO("radar",Wa);/*!
+ * chartjs-plugin-datalabels v2.2.0
+ * https://chartjs-plugin-datalabels.netlify.app
+ * (c) 2017-2022 chartjs-plugin-datalabels contributors
+ * Released under the MIT license
+ */var sS=function(){if(typeof window<"u"){if(window.devicePixelRatio)return window.devicePixelRatio;var t=window.screen;if(t)return(t.deviceXDPI||1)/(t.logicalXDPI||1)}return 1}(),Qa={toTextLines:function(t){var e=[],n;for(t=[].concat(t);t.length;)n=t.pop(),typeof n=="string"?e.unshift.apply(e,n.split(`
+`)):Array.isArray(n)?t.push.apply(t,n):Pe(t)||e.unshift(""+n);return e},textSize:function(t,e,n){var i=[].concat(e),r=i.length,a=t.font,s=0,o;for(t.font=n.string,o=0;on.right&&(i|=gO),en.bottom&&(i|=hO),i}function LU(t,e){for(var n=t.x0,i=t.y0,r=t.x1,a=t.y1,s=Ao(n,i,e),o=Ao(r,a,e),l,c,d;!(!(s|o)||s&o);)l=s||o,l&EO?(c=n+(r-n)*(e.top-i)/(a-i),d=e.top):l&hO?(c=n+(r-n)*(e.bottom-i)/(a-i),d=e.bottom):l&gO?(d=i+(a-i)*(e.right-n)/(r-n),c=e.right):l&fO&&(d=i+(a-i)*(e.left-n)/(r-n),c=e.left),l===s?(n=c,i=d,s=Ao(n,i,e)):(r=c,a=d,o=Ao(r,a,e));return{x0:n,x1:r,y0:i,y1:a}}function xo(t,e){var n=e.anchor,i=t,r,a;return e.clamp&&(i=LU(i,e.area)),n==="start"?(r=i.x0,a=i.y0):n==="end"?(r=i.x1,a=i.y1):(r=(i.x0+i.x1)/2,a=(i.y0+i.y1)/2),wU(r,a,t.vx,t.vy,e.align)}var Do={arc:function(t,e){var n=(t.startAngle+t.endAngle)/2,i=Math.cos(n),r=Math.sin(n),a=t.innerRadius,s=t.outerRadius;return xo({x0:t.x+i*a,y0:t.y+r*a,x1:t.x+i*s,y1:t.y+r*s,vx:i,vy:r},e)},point:function(t,e){var n=qc(t,e.origin),i=n.x*t.options.radius,r=n.y*t.options.radius;return xo({x0:t.x-i,y0:t.y-r,x1:t.x+i,y1:t.y+r,vx:n.x,vy:n.y},e)},bar:function(t,e){var n=qc(t,e.origin),i=t.x,r=t.y,a=0,s=0;return t.horizontal?(i=Math.min(t.x,t.base),a=Math.abs(t.base-t.x)):(r=Math.min(t.y,t.base),s=Math.abs(t.base-t.y)),xo({x0:i,y0:r+s,x1:i+a,y1:r,vx:n.x,vy:n.y},e)},fallback:function(t,e){var n=qc(t,e.origin);return xo({x0:t.x,y0:t.y,x1:t.x+(t.width||0),y1:t.y+(t.height||0),vx:n.x,vy:n.y},e)}},Zn=Qa.rasterize;function PU(t){var e=t.borderWidth||0,n=t.padding,i=t.size.height,r=t.size.width,a=-r/2,s=-i/2;return{frame:{x:a-n.left-e,y:s-n.top-e,w:r+n.width+e*2,h:i+n.height+e*2},text:{x:a,y:s,w:r,h:i}}}function kU(t,e){var n=e.chart.getDatasetMeta(e.datasetIndex).vScale;if(!n)return null;if(n.xCenter!==void 0&&n.yCenter!==void 0)return{x:n.xCenter,y:n.yCenter};var i=n.getBasePixel();return t.horizontal?{x:i,y:null}:{x:null,y:i}}function FU(t){return t instanceof kr?Do.arc:t instanceof jn?Do.point:t instanceof Ka?Do.bar:Do.fallback}function UU(t,e,n,i,r,a){var s=Math.PI/2;if(a){var o=Math.min(a,r/2,i/2),l=e+o,c=n+o,d=e+i-o,u=n+r-o;t.moveTo(e,c),li.x+i.w+n*2||t.y>i.y+i.h+n*2)},intersects:function(t){var e=this._points(),n=t._points(),i=[wo(e[0],e[1]),wo(e[0],e[3])],r,a,s;for(this._rotation!==t._rotation&&i.push(wo(n[0],n[1]),wo(n[0],n[3])),r=0;r=0;--n)for(r=t[n].$layout,i=n-1;i>=0&&r._visible;--i)a=t[i].$layout,a._visible&&r._box.intersects(a._box)&&e(r,a);return t}function $U(t){var e,n,i,r,a,s,o;for(e=0,n=t.length;el.getProps([c],!0)[c]}),a=i.geometry(),s=TO(o,i.model(),a),r._box.update(s,a,i.rotation()));return qU(t,function(l,c){var d=l._hidable,u=c._hidable;d&&u||u?c._visible=!1:d&&(l._visible=!1)})}var Xa={prepare:function(t){var e=[],n,i,r,a,s;for(n=0,r=t.length;n=0;--n)if(i=t[n].$layout,i&&i._visible&&i._box.contains(e))return t[n];return null},draw:function(t,e){var n,i,r,a,s,o;for(n=0,i=e.length;nSe().uiState.useDarkMode?"#ffffff":"#000000"),gridLines:Ce(()=>Se().uiState.useDarkMode?"rgba(256, 256, 256, 0.2)":"rgba(0, 0, 0, 0.2)"),contentFill:`rgba(${zn.red}, ${zn.green}, ${zn.blue}, 0.5)`,contentBorder:"rgb(127, 15, 24)",pointFill:`rgba(${zn.red}, ${zn.green}, ${zn.blue}, 1)`,additionalLine:Ce(()=>Se().uiState.useDarkMode?"rgba(200, 200, 200, 0.3)":"rgba(0, 0, 0, 0.5)"),contentFillAlpha(t){return`rgba(${zn.red}, ${zn.green}, ${zn.blue}, ${t})`}},tB=Fe({__name:"DistributionDiagram",props:{distribution:{type:Object,required:!0},xScale:{type:String,required:!1,default:"linear"}},setup(t){const e=t;xt.register(...$f),xt.register(Wf);const n=Ce(()=>Math.max(...e.distribution.splitIntoTenBuckets())),i=["91-100%","81-90%","71-80%","61-70%","51-60%","41-50%","31-40%","21-30%","11-20%","0-10%"],r=Ce(()=>({label:"Comparison Count",backgroundColor:lt.contentFill,borderWidth:1,borderColor:lt.contentBorder,tickColor:lt.ticksAndFont.value})),a=Ce(()=>({labels:i,datasets:[{...r.value,data:e.distribution.splitIntoTenBuckets()}]})),s=Ce(()=>({responsive:!0,maintainAspectRatio:!1,indexAxis:"y",scales:{x:{suggestedMax:e.xScale==="linear"?n.value+5:10**Math.ceil(Math.log10(n.value+5)),type:e.xScale,ticks:{minRotation:e.xScale==="logarithmic"?30:0,autoSkipPadding:10,color:lt.ticksAndFont.value,callback:function(o){if(e.xScale==="logarithmic"&&(o+"").match(/1(0)*[^1-9.]/)||e.xScale!=="logarithmic")return o}},grid:{color:lt.gridLines.value}},y:{ticks:{color:lt.ticksAndFont.value},grid:{color:lt.gridLines.value}}},plugins:{datalabels:{color:lt.ticksAndFont.value,font:{weight:"bold"},anchor:"end",align:"end",clamp:!0},legend:{display:!1}}}));return(o,l)=>(_e(),ve("div",null,[ue(Te(xU),{data:a.value,options:s.value},null,8,["data","options"])]))}});function nB(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);var n=t.indexOf("Trident/");if(n>0){var i=t.indexOf("rv:");return parseInt(t.substring(i+3,t.indexOf(".",i)),10)}var r=t.indexOf("Edge/");return r>0?parseInt(t.substring(r+5,t.indexOf(".",r)),10):-1}let jo;function Am(){Am.init||(Am.init=!0,jo=nB()!==-1)}var pc={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:["notify"],mounted(){Am(),aa(()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()});const t=document.createElement("object");this._resizeObject=t,t.setAttribute("aria-hidden","true"),t.setAttribute("tabindex",-1),t.onload=this.addResizeHandlers,t.type="text/html",jo&&this.$el.appendChild(t),t.data="about:blank",jo||this.$el.appendChild(t)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!jo&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}};const iB=rx();nf("data-v-b329ee4c");const rB={class:"resize-observer",tabindex:"-1"};rf();const aB=iB((t,e,n,i,r,a)=>(_e(),Qe("div",rB)));pc.render=aB;pc.__scopeId="data-v-b329ee4c";pc.__file="src/components/ResizeObserver.vue";function Jo(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Jo=function(e){return typeof e}:Jo=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Jo(t)}function sB(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function cS(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,i=new Array(e);n2&&arguments[2]!==void 0?arguments[2]:{},i,r,a,s=function(l){for(var c=arguments.length,d=new Array(c>1?c-1:0),u=1;u1){var c=o.find(function(u){return u.isIntersecting});c&&(l=c)}if(r.callback){var d=l.isIntersecting&&l.intersectionRatio>=r.threshold;if(d===r.oldResult)return;r.oldResult=d,r.callback(d,l)}},this.options.intersection),aa(function(){r.observer&&r.observer.observe(r.el)})}}},{key:"destroyObserver",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.callback&&this.callback._clear&&(this.callback._clear(),this.callback=null)}},{key:"threshold",get:function(){return this.options.intersection&&typeof this.options.intersection.threshold=="number"?this.options.intersection.threshold:0}}]),t}();function RO(t,e,n){var i=e.value;if(i)if(typeof IntersectionObserver>"u")console.warn("[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill");else{var r=new mB(t,i,n);t._vue_visibilityState=r}}function fB(t,e,n){var i=e.value,r=e.oldValue;if(!CO(i,r)){var a=t._vue_visibilityState;if(!i){OO(t);return}a?a.createObserver(i,n):RO(t,{value:i},n)}}function OO(t){var e=t._vue_visibilityState;e&&(e.destroyObserver(),delete t._vue_visibilityState)}var gB={beforeMount:RO,updated:fB,unmounted:OO};function hB(t){return{all:t=t||new Map,on:function(e,n){var i=t.get(e);i&&i.push(n)||t.set(e,[n])},off:function(e,n){var i=t.get(e);i&&i.splice(i.indexOf(n)>>>0,1)},emit:function(e,n){(t.get(e)||[]).slice().map(function(i){i(n)}),(t.get("*")||[]).slice().map(function(i){i(e,n)})}}}var NO={itemsLimit:1e3},EB=/(auto|scroll)/;function IO(t,e){return t.parentNode===null?e:IO(t.parentNode,e.concat([t]))}var $c=function(e,n){return getComputedStyle(e,null).getPropertyValue(n)},SB=function(e){return $c(e,"overflow")+$c(e,"overflow-y")+$c(e,"overflow-x")},bB=function(e){return EB.test(SB(e))};function uS(t){if(t instanceof HTMLElement||t instanceof SVGElement){for(var e=IO(t.parentNode,[]),n=0;n{this.$_prerender=!1,this.updateVisibleItems(!0),this.ready=!0})},activated(){const t=this.$_lastUpdateScrollPosition;typeof t=="number"&&this.$nextTick(()=>{this.scrollToPosition(t)})},beforeUnmount(){this.removeListeners()},methods:{addView(t,e,n,i,r){const a=Ds({id:vB++,index:e,used:!0,key:i,type:r}),s=Xm({item:n,position:0,nr:a});return t.push(s),s},unuseView(t,e=!1){const n=this.$_unusedViews,i=t.nr.type;let r=n.get(i);r||(r=[],n.set(i,r)),r.push(t),e||(t.nr.used=!1,t.position=-9999)},handleResize(){this.$emit("resize"),this.ready&&this.updateVisibleItems(!1)},handleScroll(t){if(!this.$_scrollDirty){if(this.$_scrollDirty=!0,this.$_updateTimeout)return;const e=()=>requestAnimationFrame(()=>{this.$_scrollDirty=!1;const{continuous:n}=this.updateVisibleItems(!1,!0);n||(clearTimeout(this.$_refreshTimout),this.$_refreshTimout=setTimeout(this.handleScroll,this.updateInterval+100))});e(),this.updateInterval&&(this.$_updateTimeout=setTimeout(()=>{this.$_updateTimeout=0,this.$_scrollDirty&&e()},this.updateInterval))}},handleVisibilityChange(t,e){this.ready&&(t||e.boundingClientRect.width!==0||e.boundingClientRect.height!==0?(this.$emit("visible"),requestAnimationFrame(()=>{this.updateVisibleItems(!1)})):this.$emit("hidden"))},updateVisibleItems(t,e=!1){const n=this.itemSize,i=this.gridItems||1,r=this.itemSecondarySize||n,a=this.$_computedMinItemSize,s=this.typeField,o=this.simpleArray?null:this.keyField,l=this.items,c=l.length,d=this.sizes,u=this.$_views,_=this.$_unusedViews,p=this.pool,f=this.itemIndexByKey;let m,h,g,E,T;if(!c)m=h=E=T=g=0;else if(this.$_prerender)m=E=0,h=T=Math.min(this.prerender,l.length),g=null;else{const k=this.getScroll();if(e){let P=k.start-this.$_lastUpdateScrollPosition;if(P<0&&(P=-P),n===null&&Pk.start&&(Y=Q),Q=~~((v+Y)/2);while(Q!==w);for(Q<0&&(Q=0),m=Q,g=d[c-1].accumulator,h=Q;hc&&(h=c)),E=m;Ec&&(h=c),E<0&&(E=0),T>c&&(T=c),g=Math.ceil(c/i)*n}}h-m>NO.itemsLimit&&this.itemsLimitError(),this.totalSize=g;let b;const y=m<=this.$_endIndex&&h>=this.$_startIndex;if(y)for(let k=0,z=p.length;k=h)&&this.unuseView(b));const N=y?null:new Map;let A,I,x;for(let k=m;k=C.length)&&(b=this.addView(p,k,A,z,I),this.unuseView(b,!0),C=_.get(I)),b=C[x],N.set(I,x+1)),u.delete(b.nr.key),b.nr.used=!0,b.nr.index=k,b.nr.key=z,b.nr.type=I,u.set(z,b),P=!0;else if(!b.nr.used&&(b.nr.used=!0,P=!0,C)){const v=C.indexOf(b);v!==-1&&C.splice(v,1)}b.item=A,P&&(k===l.length-1&&this.$emit("scroll-end"),k===0&&this.$emit("scroll-start")),n===null?(b.position=d[k-1].accumulator,b.offset=0):(b.position=Math.floor(k/i)*n,b.offset=k%i*r)}return this.$_startIndex=m,this.$_endIndex=h,this.emitUpdate&&this.$emit("update",m,h,E,T),clearTimeout(this.$_sortTimer),this.$_sortTimer=setTimeout(this.sortViews,this.updateInterval+300),{continuous:y}},getListenerTarget(){let t=uS(this.$el);return window.document&&(t===window.document.documentElement||t===window.document.body)&&(t=window),t},getScroll(){const{$el:t,direction:e}=this,n=e==="vertical";let i;if(this.pageMode){const r=t.getBoundingClientRect(),a=n?r.height:r.width;let s=-(n?r.top:r.left),o=n?window.innerHeight:window.innerWidth;s<0&&(o+=s,s=0),s+o>a&&(o=a-s),i={start:s,end:s+o}}else n?i={start:t.scrollTop,end:t.scrollTop+t.clientHeight}:i={start:t.scrollLeft,end:t.scrollLeft+t.clientWidth};return i},applyPageMode(){this.pageMode?this.addListeners():this.removeListeners()},addListeners(){this.listenerTarget=this.getListenerTarget(),this.listenerTarget.addEventListener("scroll",this.handleScroll,wm?{passive:!0}:!1),this.listenerTarget.addEventListener("resize",this.handleResize)},removeListeners(){this.listenerTarget&&(this.listenerTarget.removeEventListener("scroll",this.handleScroll),this.listenerTarget.removeEventListener("resize",this.handleResize),this.listenerTarget=null)},scrollToItem(t){let e;const n=this.gridItems||1;this.itemSize===null?e=t>0?this.sizes[t-1].accumulator:0:e=Math.floor(t/n)*this.itemSize,this.scrollToPosition(e)},scrollToPosition(t){const e=this.direction==="vertical"?{scroll:"scrollTop",start:"top"}:{scroll:"scrollLeft",start:"left"};let n,i,r;if(this.pageMode){const a=uS(this.$el),s=a.tagName==="HTML"?0:a[e.scroll],o=a.getBoundingClientRect(),c=this.$el.getBoundingClientRect()[e.start]-o[e.start];n=a,i=e.scroll,r=t+s+c}else n=this.$el,i=e.scroll,r=t;n[i]=r},itemsLimitError(){throw setTimeout(()=>{console.log("It seems the scroller element isn't scrolling, so it tries to render all the items at once.","Scroller:",this.$el),console.log("Make sure the scroller has a fixed height (or width) and 'overflow-y' (or 'overflow-x') set to 'auto' so it can scroll correctly and only render the items visible in the scroll viewport.")}),new Error("Rendered items limit reached")},sortViews(){this.pool.sort((t,e)=>t.nr.index-e.nr.index)}}};const yB={key:0,ref:"before",class:"vue-recycle-scroller__slot"},CB={key:1,ref:"after",class:"vue-recycle-scroller__slot"};function RB(t,e,n,i,r,a){const s=ws("ResizeObserver"),o=vx("observe-visibility");return Zl((_e(),ve("div",{class:Tn(["vue-recycle-scroller",{ready:r.ready,"page-mode":n.pageMode,[`direction-${t.direction}`]:!0}]),onScrollPassive:e[0]||(e[0]=(...l)=>a.handleScroll&&a.handleScroll(...l))},[t.$slots.before?(_e(),ve("div",yB,[wt(t.$slots,"before")],512)):Ut("v-if",!0),(_e(),Qe(yg(n.listTag),{ref:"wrapper",style:Ln({[t.direction==="vertical"?"minHeight":"minWidth"]:r.totalSize+"px"}),class:Tn(["vue-recycle-scroller__item-wrapper",n.listClass])},{default:fe(()=>[(_e(!0),ve(At,null,sa(r.pool,l=>(_e(),Qe(yg(n.itemTag),uf({key:l.nr.id,style:r.ready?{transform:`translate${t.direction==="vertical"?"Y":"X"}(${l.position}px) translate${t.direction==="vertical"?"X":"Y"}(${l.offset}px)`,width:n.gridItems?`${t.direction==="vertical"&&n.itemSecondarySize||n.itemSize}px`:void 0,height:n.gridItems?`${t.direction==="horizontal"&&n.itemSecondarySize||n.itemSize}px`:void 0}:null,class:["vue-recycle-scroller__item-view",[n.itemClass,{hover:!n.skipHover&&r.hoverKey===l.nr.key}]]},yx(n.skipHover?{}:{mouseenter:()=>{r.hoverKey=l.nr.key},mouseleave:()=>{r.hoverKey=null}})),{default:fe(()=>[wt(t.$slots,"default",{item:l.item,index:l.nr.index,active:l.nr.used})]),_:2},1040,["style","class"]))),128)),wt(t.$slots,"empty")]),_:3},8,["style","class"])),t.$slots.after?(_e(),ve("div",CB,[wt(t.$slots,"after")],512)):Ut("v-if",!0),ue(s,{onNotify:a.handleResize},null,8,["onNotify"])],34)),[[o,a.handleVisibilityChange]])}ys.render=RB;ys.__file="src/components/RecycleScroller.vue";var Cs={name:"DynamicScroller",components:{RecycleScroller:ys},provide(){return typeof ResizeObserver<"u"&&(this.$_resizeObserver=new ResizeObserver(t=>{requestAnimationFrame(()=>{if(Array.isArray(t)){for(const e of t)if(e.target&&e.target.$_vs_onResize){let n,i;if(e.borderBoxSize){const r=e.borderBoxSize[0];n=r.inlineSize,i=r.blockSize}else n=e.contentRect.width,i=e.contentRect.height;e.target.$_vs_onResize(e.target.$_vs_id,n,i)}}})})),{vscrollData:this.vscrollData,vscrollParent:this,vscrollResizeObserver:this.$_resizeObserver}},inheritAttrs:!1,props:{...AO,minItemSize:{type:[Number,String],required:!0}},emits:["resize","visible"],data(){return{vscrollData:{active:!0,sizes:{},keyField:this.keyField,simpleArray:!1}}},computed:{simpleArray:xO,itemsWithSize(){const t=[],{items:e,keyField:n,simpleArray:i}=this,r=this.vscrollData.sizes,a=e.length;for(let s=0;s"u"&&!this.$_undefinedMap[l]&&(c=0),t.push({item:o,id:l,size:c})}return t}},watch:{items(){this.forceUpdate()},simpleArray:{handler(t){this.vscrollData.simpleArray=t},immediate:!0},direction(t){this.forceUpdate(!0)},itemsWithSize(t,e){const n=this.$el.scrollTop;let i=0,r=0;const a=Math.min(t.length,e.length);for(let o=0;o=n);o++)i+=e[o].size||this.minItemSize,r+=t[o].size||this.minItemSize;const s=r-i;s!==0&&(this.$el.scrollTop+=s)}},beforeCreate(){this.$_updates=[],this.$_undefinedSizes=0,this.$_undefinedMap={},this.$_events=hB()},activated(){this.vscrollData.active=!0},deactivated(){this.vscrollData.active=!1},unmounted(){this.$_events.all.clear()},methods:{onScrollerResize(){this.$refs.scroller&&this.forceUpdate(),this.$emit("resize")},onScrollerVisible(){this.$_events.emit("vscroll:update",{force:!1}),this.$emit("visible")},forceUpdate(t=!1){(t||this.simpleArray)&&(this.vscrollData.sizes={}),this.$_events.emit("vscroll:update",{force:!0})},scrollToItem(t){const e=this.$refs.scroller;e&&e.scrollToItem(t)},getItemSize(t,e=void 0){const n=this.simpleArray?e??this.items.indexOf(t):t[this.keyField];return this.vscrollData.sizes[n]||0},scrollToBottom(){if(this.$_scrollingToBottom)return;this.$_scrollingToBottom=!0;const t=this.$el;this.$nextTick(()=>{t.scrollTop=t.scrollHeight+5e3;const e=()=>{t.scrollTop=t.scrollHeight+5e3,requestAnimationFrame(()=>{t.scrollTop=t.scrollHeight+5e3,this.$_undefinedSizes===0?this.$_scrollingToBottom=!1:requestAnimationFrame(e)})};requestAnimationFrame(e)})}}};function OB(t,e,n,i,r,a){const s=ws("RecycleScroller");return _e(),Qe(s,uf({ref:"scroller",items:a.itemsWithSize,"min-item-size":n.minItemSize,direction:t.direction,"key-field":"id","list-tag":t.listTag,"item-tag":t.itemTag},t.$attrs,{onResize:a.onScrollerResize,onVisible:a.onScrollerVisible}),{default:fe(({item:o,index:l,active:c})=>[wt(t.$slots,"default",uA(dC({item:o.item,index:l,active:c,itemWithSize:o})))]),before:fe(()=>[wt(t.$slots,"before")]),after:fe(()=>[wt(t.$slots,"after")]),empty:fe(()=>[wt(t.$slots,"empty")]),_:3},16,["items","min-item-size","direction","list-tag","item-tag","onResize","onVisible"])}Cs.render=OB;Cs.__file="src/components/DynamicScroller.vue";var xl={name:"DynamicScrollerItem",inject:["vscrollData","vscrollParent","vscrollResizeObserver"],props:{item:{required:!0},watchData:{type:Boolean,default:!1},active:{type:Boolean,required:!0},index:{type:Number,default:void 0},sizeDependencies:{type:[Array,Object],default:null},emitResize:{type:Boolean,default:!1},tag:{type:String,default:"div"}},emits:["resize"],computed:{id(){if(this.vscrollData.simpleArray)return this.index;if(this.vscrollData.keyField in this.item)return this.item[this.vscrollData.keyField];throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`)},size(){return this.vscrollData.sizes[this.id]||0},finalActive(){return this.active&&this.vscrollData.active}},watch:{watchData:"updateWatchData",id(t,e){if(this.$el.$_vs_id=this.id,this.size||this.onDataUpdate(),this.$_sizeObserved){const n=this.vscrollData.sizes[e],i=this.vscrollData.sizes[t];n!=null&&n!==i&&this.applySize(n)}},finalActive(t){this.size||(t?this.vscrollParent.$_undefinedMap[this.id]||(this.vscrollParent.$_undefinedSizes++,this.vscrollParent.$_undefinedMap[this.id]=!0):this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=!1)),this.vscrollResizeObserver?t?this.observeSize():this.unobserveSize():t&&this.$_pendingVScrollUpdate===this.id&&this.updateSize()}},created(){if(!this.$isServer&&(this.$_forceNextVScrollUpdate=null,this.updateWatchData(),!this.vscrollResizeObserver)){for(const t in this.sizeDependencies)this.$watch(()=>this.sizeDependencies[t],this.onDataUpdate);this.vscrollParent.$_events.on("vscroll:update",this.onVscrollUpdate)}},mounted(){this.finalActive&&(this.updateSize(),this.observeSize())},beforeUnmount(){this.vscrollParent.$_events.off("vscroll:update",this.onVscrollUpdate),this.unobserveSize()},methods:{updateSize(){this.finalActive?this.$_pendingSizeUpdate!==this.id&&(this.$_pendingSizeUpdate=this.id,this.$_forceNextVScrollUpdate=null,this.$_pendingVScrollUpdate=null,this.computeSize(this.id)):this.$_forceNextVScrollUpdate=this.id},updateWatchData(){this.watchData&&!this.vscrollResizeObserver?this.$_watchData=this.$watch("item",()=>{this.onDataUpdate()},{deep:!0}):this.$_watchData&&(this.$_watchData(),this.$_watchData=null)},onVscrollUpdate({force:t}){!this.finalActive&&t&&(this.$_pendingVScrollUpdate=this.id),(this.$_forceNextVScrollUpdate===this.id||t||!this.size)&&this.updateSize()},onDataUpdate(){this.updateSize()},computeSize(t){this.$nextTick(()=>{if(this.id===t){const e=this.$el.offsetWidth,n=this.$el.offsetHeight;this.applyWidthHeight(e,n)}this.$_pendingSizeUpdate=null})},applyWidthHeight(t,e){const n=~~(this.vscrollParent.direction==="vertical"?e:t);n&&this.size!==n&&this.applySize(n)},applySize(t){this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=void 0),this.vscrollData.sizes[this.id]=t,this.emitResize&&this.$emit("resize",this.id)},observeSize(){this.vscrollResizeObserver&&(this.$_sizeObserved||(this.vscrollResizeObserver.observe(this.$el),this.$el.$_vs_id=this.id,this.$el.$_vs_onResize=this.onResize,this.$_sizeObserved=!0))},unobserveSize(){this.vscrollResizeObserver&&this.$_sizeObserved&&(this.vscrollResizeObserver.unobserve(this.$el),this.$el.$_vs_onResize=void 0,this.$_sizeObserved=!1)},onResize(t,e,n){this.id===t&&this.applyWidthHeight(e,n)}},render(){return Mi(this.tag,this.$slots.default())}};xl.__file="src/components/DynamicScrollerItem.vue";function NB(t,e){t.component("".concat(e,"recycle-scroller"),ys),t.component("".concat(e,"RecycleScroller"),ys),t.component("".concat(e,"dynamic-scroller"),Cs),t.component("".concat(e,"DynamicScroller"),Cs),t.component("".concat(e,"dynamic-scroller-item"),xl),t.component("".concat(e,"DynamicScrollerItem"),xl)}var IB={version:"2.0.0-beta.8",install:function(e,n){var i=Object.assign({},{installComponents:!0,componentsPrefix:""},n);for(var r in i)typeof i[r]<"u"&&(NO[r]=i[r]);i.installComponents&&NB(e,i.componentsPrefix)}};const AB={class:"group relative inline-block"},_S=.8,xi=Fe({__name:"ToolTipComponent",props:{direction:{type:String,required:!1,default:"top"}},setup(t){const e=t,n=Ce(()=>{const r={};return e.direction=="left"||e.direction=="right"?(r.top="50%",r.transform="translateY(-50%)",e.direction=="left"?r.right="105%":r.left="105%"):(r.left="50%",r.transform="translateX(-50%)",e.direction=="top"?r.bottom="105%":r.top="105%"),r.backgroundColor=`rgba(0,0,0,${_S})`,r}),i=Ce(()=>{const r={};r.content=" ",r.borderColor="";for(const a of["top","right","bottom","left"])r.borderColor+=a==e.direction?`rgba(0,0,0,${_S}) `:"transparent ";return e.direction=="left"||e.direction=="right"?(r.top="50%",r.marginTop="-4px"):(r.left="50%",r.marginLeft="-4px"),r[e.direction]="100%",r});return(r,a)=>(_e(),ve("div",AB,[wt(r.$slots,"default"),ce("div",{class:"invisible absolute z-10 rounded-md px-1 text-center text-white delay-0 group-hover:visible group-hover:delay-200",style:Ln(n.value)},[wt(r.$slots,"tooltip"),r.$slots.tooltip?(_e(),ve("div",{key:0,class:"absolute border-4 border-solid",style:Ln(i.value)},null,4)):Ut("",!0)],4)]))}}),xB={class:"group relative flex items-center justify-center"},pS=Fe({__name:"NameElement",props:{id:{type:String,required:!0},anonymousBlur:{type:Boolean,required:!1,default:!0},anonymousName:{type:String,required:!1,default:"Hidden"}},setup(t){const e=t;pr.add(PL),pr.add(ML);function n(i){i.stopPropagation(),Se().isAnonymous(e.id)?Se().removeAnonymous([e.id]):Se().addAnonymous([e.id])}return(i,r)=>(_e(),ve("div",xB,[ce("div",{class:Tn(["break-anywhere",{"blur-[1px]":Te(Se)().isAnonymous(e.id)&&t.anonymousBlur}])},Re(Te(Se)().isAnonymous(e.id)?t.anonymousName:Te(Se)().submissionDisplayName(t.id)),3),ce("div",{class:"invisible absolute right-0 top-0 z-10 flex h-full cursor-pointer items-center p-2 delay-0 group-hover:visible group-hover:delay-100",onClick:r[0]||(r[0]=a=>n(a))},[ue(Te(Fs),{class:"text-gray-500",icon:Te(Se)().isAnonymous(e.id)?["fas","eye"]:["fas","eye-slash"]},null,8,["icon"])])]))}}),DB=["placeholder"],wB=Fe({__name:"SearchBarComponent",props:{placeholder:{type:String,default:"Search...",required:!1},modelValue:{type:String,default:"",required:!1}},emits:["inputChanged","searchClicked","update:modelValue"],setup(t,{emit:e}){const n=t;pr.add(FL);const i=Ce({get:()=>n.modelValue,set:r=>{e("update:modelValue",r),e("inputChanged",r)}});return(r,a)=>(_e(),Qe(oa,{class:"flex flex-row items-center space-x-2 px-2 py-2"},{default:fe(()=>[ue(Te(Fs),{icon:["fas","magnifying-glass"],class:"text-gray-500",onClick:a[0]||(a[0]=s=>e("searchClicked",i.value))}),Zl(ce("input",{type:"text",class:"flex-auto border-0 bg-transparent outline-none placeholder:text-gray-500",placeholder:t.placeholder,"onUpdate:modelValue":a[1]||(a[1]=s=>i.value=s)},null,8,DB),[[ED,i.value]])]),_:1}))}}),Dl=Fe({__name:"OptionComponent",props:{label:{type:String,required:!0},selected:{type:Boolean,required:!1,default:!1}},emits:["click"],setup(t){return(e,n)=>(_e(),Qe(oa,{class:Tn(["mr-2 box-border flex h-6 w-fit items-center justify-center whitespace-nowrap !rounded-2xl px-[12px] text-center hover:!border-[2px] hover:px-[11px]",{"!border-accent-dark !bg-accent !bg-opacity-40":t.selected}]),onClick:n[0]||(n[0]=i=>e.$emit("click"))},{default:fe(()=>[Ge(Re(t.label),1)]),_:1},8,["class"]))}}),MB={class:"flex h-fit flex-row items-center text-center text-xs"},LB={key:0,class:"mr-3 text-base"},PB={class:"whitespace-pre text-sm"},mc=Fe({__name:"OptionsSelectorComponent",props:{title:{type:String,required:!1,default:""},labels:{type:Array,required:!0},defaultSelected:{type:Number,required:!1,default:0}},emits:["selectionChanged"],setup(t,{emit:e}){const n=t,i=$e(-1);function r(){return i.value==-1?n.defaultSelected:i.value}function a(s){e("selectionChanged",s),i.value=s}return(s,o)=>(_e(),ve("div",MB,[t.title!=""?(_e(),ve("div",LB,Re(t.title),1)):Ut("",!0),(_e(!0),ve(At,null,sa(t.labels.entries(),([l,c])=>(_e(),ve("div",{key:l},[c.displayValue!==void 0?(_e(),Qe(xi,{key:0,direction:"right"},{default:fe(()=>[ue(Dl,{label:c.displayValue,selected:l==r(),onClick:d=>a(l)},null,8,["label","selected","onClick"])]),tooltip:fe(()=>[ce("p",PB,Re(c.tooltip),1)]),_:2},1024)):(_e(),Qe(Dl,{key:1,label:c,selected:l==r(),onClick:d=>a(l)},null,8,["label","selected","onClick"]))]))),128))]))}}),kB={class:"space-y-2"},FB={class:"flex flex-row flex-wrap items-center gap-x-8 gap-y-2"},UB=ce("p",{class:"whitespace-pre text-sm"}," Type in the name of a submission to only show comparisons that contain this submission. ",-1),BB=ce("p",{class:"whitespace-pre text-sm"},"Fully written out names get unhidden.",-1),GB=Fe({__name:"ComparisonTableFilter",props:{searchString:{type:String,default:""},enableClusterSorting:{type:Boolean,default:!0},header:{type:String,default:"Top Comparisons:"}},emits:["update:searchString"],setup(t,{emit:e}){const n=t,i=Ce({get:()=>n.searchString,set:c=>{e("update:searchString",c);const d=c.trimEnd().toLowerCase().split(/ +/g).map(u=>u.trim().replace(/,/g,""));if(d.length!=0)for(const u of d)for(const _ of Se().getSubmissionIds)_.toLowerCase()==u&&Se().state.anonymous.delete(_)}});function r(c){Se().uiState.comparisonTableSortingMetric=c