From 84d6589e1ee74f5250407464b48aa77e9934e3ea Mon Sep 17 00:00:00 2001 From: Simey Lameze Date: Fri, 29 Sep 2017 12:09:49 +0800 Subject: [PATCH] MDL-60289 libraries: Upgrade Chart.js to 2.7.0 --- lib/amd/build/chartjs-lazy.min.js | 12 +- lib/amd/src/chartjs-lazy.js | 29039 ++++++++++++++++++---------- lib/thirdpartylibs.xml | 2 +- 3 files changed, 18512 insertions(+), 10541 deletions(-) diff --git a/lib/amd/build/chartjs-lazy.min.js b/lib/amd/build/chartjs-lazy.min.js index 62a3d19ed16..b672fc1b05f 100644 --- a/lib/amd/build/chartjs-lazy.min.js +++ b/lib/amd/build/chartjs-lazy.min.js @@ -1,5 +1,7 @@ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Chart=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gc?(b+.05)/(c+.05):(c+.05)/(b+.05)},level:function(a){var b=this.contrast(a);return b>=7.1?"AAA":b>=4.5?"AA":""},dark:function(){var a=this.values.rgb,b=(299*a[0]+587*a[1]+114*a[2])/1e3;return b<128},light:function(){return!this.dark()},negate:function(){for(var a=[],b=0;b<3;b++)a[b]=255-this.values.rgb[b];return this.setValues("rgb",a),this},lighten:function(a){var b=this.values.hsl;return b[2]+=b[2]*a,this.setValues("hsl",b),this},darken:function(a){var b=this.values.hsl;return b[2]-=b[2]*a,this.setValues("hsl",b),this},saturate:function(a){var b=this.values.hsl;return b[1]+=b[1]*a,this.setValues("hsl",b),this},desaturate:function(a){var b=this.values.hsl;return b[1]-=b[1]*a,this.setValues("hsl",b),this},whiten:function(a){var b=this.values.hwb;return b[1]+=b[1]*a,this.setValues("hwb",b),this},blacken:function(a){var b=this.values.hwb;return b[2]+=b[2]*a,this.setValues("hwb",b),this},greyscale:function(){var a=this.values.rgb,b=.3*a[0]+.59*a[1]+.11*a[2];return this.setValues("rgb",[b,b,b]),this},clearer:function(a){var b=this.values.alpha;return this.setValues("alpha",b-b*a),this},opaquer:function(a){var b=this.values.alpha;return this.setValues("alpha",b+b*a),this},rotate:function(a){var b=this.values.hsl,c=(b[0]+a)%360;return b[0]=c<0?360+c:c,this.setValues("hsl",b),this},mix:function(a,b){var c=this,d=a,e=void 0===b?.5:b,f=2*e-1,g=c.alpha()-d.alpha(),h=((f*g===-1?f:(f+g)/(1+f*g))+1)/2,i=1-h;return this.rgb(h*c.red()+i*d.red(),h*c.green()+i*d.green(),h*c.blue()+i*d.blue()).alpha(c.alpha()*e+d.alpha()*(1-e))},toJSON:function(){return this.rgb()},clone:function(){var a,b,c=new f,d=this.values,e=c.values;for(var g in d)d.hasOwnProperty(g)&&(a=d[g],b={}.toString.call(a),"[object Array]"===b?e[g]=a.slice(0):"[object Number]"===b?e[g]=a:console.error("unexpected color value:",a));return c}},f.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},f.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},f.prototype.getValues=function(a){for(var b=this.values,c={},d=0;d.04045?Math.pow((b+.055)/1.055,2.4):b/12.92,c=c>.04045?Math.pow((c+.055)/1.055,2.4):c/12.92,d=d>.04045?Math.pow((d+.055)/1.055,2.4):d/12.92;var e=.4124*b+.3576*c+.1805*d,f=.2126*b+.7152*c+.0722*d,g=.0193*b+.1192*c+.9505*d;return[100*e,100*f,100*g]}function l(a){var b,c,d,e=k(a),f=e[0],g=e[1],h=e[2];return f/=95.047,g/=100,h/=108.883,f=f>.008856?Math.pow(f,1/3):7.787*f+16/116,g=g>.008856?Math.pow(g,1/3):7.787*g+16/116,h=h>.008856?Math.pow(h,1/3):7.787*h+16/116,b=116*g-16,c=500*(f-g),d=200*(g-h),[b,c,d]}function m(a){return M(l(a))}function n(a){var b,c,d,e,f,g=a[0]/360,h=a[1]/100,i=a[2]/100;if(0==h)return f=255*i,[f,f,f];c=i<.5?i*(1+h):i+h-i*h,b=2*i-c,e=[0,0,0];for(var j=0;j<3;j++)d=g+1/3*-(j-1),d<0&&d++,d>1&&d--,f=6*d<1?b+6*(c-b)*d:2*d<1?c:3*d<2?b+(c-b)*(2/3-d)*6:b,e[j]=255*f;return e}function o(a){var b,c,d=a[0],e=a[1]/100,f=a[2]/100;return 0===f?[0,0,0]:(f*=2,e*=f<=1?f:2-f,c=(f+e)/2,b=2*e/(f+e),[d,100*b,100*c])}function p(a){return h(n(a))}function q(a){return i(n(a))}function s(a){return j(n(a))}function t(a){var b=a[0]/60,c=a[1]/100,d=a[2]/100,e=Math.floor(b)%6,f=b-Math.floor(b),g=255*d*(1-c),h=255*d*(1-c*f),i=255*d*(1-c*(1-f)),d=255*d;switch(e){case 0:return[d,i,g];case 1:return[h,d,g];case 2:return[g,d,i];case 3:return[g,h,d];case 4:return[i,g,d];case 5:return[d,g,h]}}function u(a){var b,c,d=a[0],e=a[1]/100,f=a[2]/100;return c=(2-e)*f,b=e*f,b/=c<=1?c:2-c,b=b||0,c/=2,[d,100*b,100*c]}function v(a){return h(t(a))}function w(a){return i(t(a))}function x(a){return j(t(a))}function y(a){var c,d,e,f,h=a[0]/360,i=a[1]/100,j=a[2]/100,k=i+j;switch(k>1&&(i/=k,j/=k),c=Math.floor(6*h),d=1-j,e=6*h-c,0!=(1&c)&&(e=1-e),f=i+e*(d-i),c){default:case 6:case 0:r=d,g=f,b=i;break;case 1:r=f,g=d,b=i;break;case 2:r=i,g=d,b=f;break;case 3:r=i,g=f,b=d;break;case 4:r=f,g=i,b=d;break;case 5:r=d,g=i,b=f}return[255*r,255*g,255*b]}function z(a){return e(y(a))}function A(a){return f(y(a))}function B(a){return i(y(a))}function C(a){return j(y(a))}function D(a){var b,c,d,e=a[0]/100,f=a[1]/100,g=a[2]/100,h=a[3]/100;return b=1-Math.min(1,e*(1-h)+h),c=1-Math.min(1,f*(1-h)+h),d=1-Math.min(1,g*(1-h)+h),[255*b,255*c,255*d]}function E(a){return e(D(a))}function F(a){return f(D(a))}function G(a){return h(D(a))}function H(a){return j(D(a))}function I(a){var b,c,d,e=a[0]/100,f=a[1]/100,g=a[2]/100;return b=3.2406*e+f*-1.5372+g*-.4986,c=e*-.9689+1.8758*f+.0415*g,d=.0557*e+f*-.204+1.057*g,b=b>.0031308?1.055*Math.pow(b,1/2.4)-.055:b=12.92*b,c=c>.0031308?1.055*Math.pow(c,1/2.4)-.055:c=12.92*c,d=d>.0031308?1.055*Math.pow(d,1/2.4)-.055:d=12.92*d,b=Math.min(Math.max(0,b),1),c=Math.min(Math.max(0,c),1),d=Math.min(Math.max(0,d),1),[255*b,255*c,255*d]}function J(a){var b,c,d,e=a[0],f=a[1],g=a[2];return e/=95.047,f/=100,g/=108.883,e=e>.008856?Math.pow(e,1/3):7.787*e+16/116,f=f>.008856?Math.pow(f,1/3):7.787*f+16/116,g=g>.008856?Math.pow(g,1/3):7.787*g+16/116,b=116*f-16,c=500*(e-f),d=200*(f-g),[b,c,d]}function K(a){return M(J(a))}function L(a){var b,c,d,e,f=a[0],g=a[1],h=a[2];return f<=8?(c=100*f/903.3,e=7.787*(c/100)+16/116):(c=100*Math.pow((f+16)/116,3),e=Math.pow(c/100,1/3)),b=b/95.047<=.008856?b=95.047*(g/500+e-16/116)/7.787:95.047*Math.pow(g/500+e,3),d=d/108.883<=.008859?d=108.883*(e-h/200-16/116)/7.787:108.883*Math.pow(e-h/200,3),[b,c,d]}function M(a){var b,c,d,e=a[0],f=a[1],g=a[2];return b=Math.atan2(g,f),c=360*b/2/Math.PI,c<0&&(c+=360),d=Math.sqrt(f*f+g*g),[e,d,c]}function N(a){return I(L(a))}function O(a){var b,c,d,e=a[0],f=a[1],g=a[2];return d=g/360*2*Math.PI,b=f*Math.cos(d),c=f*Math.sin(d),[e,b,c]}function P(a){return L(O(a))}function Q(a){return N(O(a))}function R(a){return Y[a]}function S(a){return e(R(a))}function T(a){return f(R(a))}function U(a){return h(R(a))}function V(a){return i(R(a))}function W(a){return l(R(a))}function X(a){return k(R(a))}c.exports={rgb2hsl:e,rgb2hsv:f,rgb2hwb:h,rgb2cmyk:i,rgb2keyword:j,rgb2xyz:k,rgb2lab:l,rgb2lch:m,hsl2rgb:n,hsl2hsv:o,hsl2hwb:p,hsl2cmyk:q,hsl2keyword:s,hsv2rgb:t,hsv2hsl:u,hsv2hwb:v,hsv2cmyk:w,hsv2keyword:x,hwb2rgb:y,hwb2hsl:z,hwb2hsv:A,hwb2cmyk:B,hwb2keyword:C,cmyk2rgb:D,cmyk2hsl:E,cmyk2hsv:F,cmyk2hwb:G,cmyk2keyword:H,keyword2rgb:R,keyword2hsl:S,keyword2hsv:T,keyword2hwb:U,keyword2cmyk:V,keyword2lab:W,keyword2xyz:X,xyz2rgb:I,xyz2lab:J,xyz2lch:K,lab2xyz:L,lab2rgb:N,lab2lch:M,lch2lab:O,lch2xyz:P,lch2rgb:Q};var Y={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Z={};for(var $ in Y)Z[JSON.stringify(Y[$])]=$},{}],5:[function(a,b,c){var d=a(4),e=function(){return new j};for(var f in d){e[f+"Raw"]=function(a){return function(b){return"number"==typeof b&&(b=Array.prototype.slice.call(arguments)),d[a](b)}}(f);var g=/(\w+)2(\w+)/.exec(f),h=g[1],i=g[2];e[h]=e[h]||{},e[h][i]=e[f]=function(a){return function(b){"number"==typeof b&&(b=Array.prototype.slice.call(arguments));var c=d[a](b);if("string"==typeof c||void 0===c)return c;for(var e=0;e0&&(a[0].yLabel?c=a[0].yLabel:b.labels.length>0&&a[0].index=c.y-c.height/2&&b<=c.y+c.height/2&&a>=c.x&&a<=c.base:b>=c.y-c.height/2&&b<=c.y+c.height/2&&a>=c.base&&a<=c.x),d}}),a.pivot()},calculateBarBase:function(a,b){var c=this,d=c.getMeta(),e=c.getScaleForId(d.xAxisID),f=0; -if(e.options.stacked){for(var g=c.chart,h=g.data.datasets,i=Number(h[a].data[b]),j=0;j');var c=a.data,d=c.datasets,e=c.labels;if(d.length)for(var f=0;f'),e[f]&&b.push(e[f]),b.push("");return b.push(""),b.join("")},legend:{labels:{generateLabels:function(a){var c=a.data;return c.labels.length&&c.datasets.length?c.labels.map(function(d,e){var f=a.getDatasetMeta(0),g=c.datasets[0],h=f.data[e],i=h&&h.custom||{},j=b.getValueAtIndexOrDefault,k=a.options.elements.arc,l=i.backgroundColor?i.backgroundColor:j(g.backgroundColor,e,k.backgroundColor),m=i.borderColor?i.borderColor:j(g.borderColor,e,k.borderColor),n=i.borderWidth?i.borderWidth:j(g.borderWidth,e,k.borderWidth);return{text:d,fillStyle:l,strokeStyle:m,lineWidth:n,hidden:isNaN(g.data[e])||f.data[e].hidden,index:e}}):[]}},onClick:function(a,b){var c,d,e,f=b.index,g=this.chart;for(c=0,d=(g.data.datasets||[]).length;c=Math.PI?-1:o<-Math.PI?1:0);var p=o+n,q={x:Math.cos(o),y:Math.sin(o)},r={x:Math.cos(p),y:Math.sin(p)},s=o<=0&&0<=p||o<=2*Math.PI&&2*Math.PI<=p,t=o<=.5*Math.PI&&.5*Math.PI<=p||o<=2.5*Math.PI&&2.5*Math.PI<=p,u=o<=-Math.PI&&-Math.PI<=p||o<=Math.PI&&Math.PI<=p,v=o<=.5*-Math.PI&&.5*-Math.PI<=p||o<=1.5*Math.PI&&1.5*Math.PI<=p,w=m/100,x={x:u?-1:Math.min(q.x*(q.x<0?1:w),r.x*(r.x<0?1:w)),y:v?-1:Math.min(q.y*(q.y<0?1:w),r.y*(r.y<0?1:w))},y={x:s?1:Math.max(q.x*(q.x>0?1:w),r.x*(r.x>0?1:w)),y:t?1:Math.max(q.y*(q.y>0?1:w),r.y*(r.y>0?1:w))},z={width:.5*(y.x-x.x),height:.5*(y.y-x.y)};j=Math.min(h/z.width,i/z.height),k={x:(y.x+x.x)*-.5,y:(y.y+x.y)*-.5}}d.borderWidth=c.getMaxBorderWidth(l.data),d.outerRadius=Math.max((j-d.borderWidth)/2,0),d.innerRadius=Math.max(m?d.outerRadius/100*m:1,0),d.radiusLength=(d.outerRadius-d.innerRadius)/d.getVisibleDatasetCount(),d.offsetX=k.x*d.outerRadius,d.offsetY=k.y*d.outerRadius,l.total=c.calculateTotal(),c.outerRadius=d.outerRadius-d.radiusLength*c.getRingIndex(c.index),c.innerRadius=c.outerRadius-d.radiusLength,b.each(l.data,function(b,d){c.updateElement(b,d,a)})},updateElement:function(a,c,d){var e=this,f=e.chart,g=f.chartArea,h=f.options,i=h.animation,j=(g.left+g.right)/2,k=(g.top+g.bottom)/2,l=h.rotation,m=h.rotation,n=e.getDataset(),o=d&&i.animateRotate?0:a.hidden?0:e.calculateCircumference(n.data[c])*(h.circumference/(2*Math.PI)),p=d&&i.animateScale?0:e.innerRadius,q=d&&i.animateScale?0:e.outerRadius,r=b.getValueAtIndexOrDefault;b.extend(a,{_datasetIndex:e.index,_index:c,_model:{x:j+f.offsetX,y:k+f.offsetY,startAngle:l,endAngle:m,circumference:o,outerRadius:q,innerRadius:p,label:r(n.label,c,f.data.labels[c])}});var s=a._model;this.removeHoverStyle(a),d&&i.animateRotate||(0===c?s.startAngle=h.rotation:s.startAngle=e.getMeta().data[c-1]._model.endAngle,s.endAngle=s.startAngle+s.circumference),a.pivot()},removeHoverStyle:function(b){a.DatasetController.prototype.removeHoverStyle.call(this,b,this.chart.options.elements.arc)},calculateTotal:function(){var a,c=this.getDataset(),d=this.getMeta(),e=0;return b.each(d.data,function(b,d){a=c.data[d],isNaN(a)||b.hidden||(e+=Math.abs(a))}),e},calculateCircumference:function(a){var b=this.getMeta().total;return b>0&&!isNaN(a)?2*Math.PI*(a/b):0},getMaxBorderWidth:function(a){for(var b,c,d=0,e=this.index,f=a.length,g=0;gd?b:d,d=c>d?c:d;return d}})}},{}],18:[function(a,b,c){"use strict";b.exports=function(a){function b(a,b){return c.getValueOrDefault(a.showLine,b.showLines)}var c=a.helpers;a.defaults.line={showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}},a.controllers.line=a.DatasetController.extend({datasetElementType:a.elements.Line,dataElementType:a.elements.Point,addElementAndReset:function(c){var d=this,e=d.chart.options,f=d.getMeta();a.DatasetController.prototype.addElementAndReset.call(d,c),b(d.getDataset(),e)&&0!==f.dataset._model.tension&&d.updateBezierControlPoints()},update:function(a){var d,e,f,g=this,h=g.getMeta(),i=h.dataset,j=h.data||[],k=g.chart.options,l=k.elements.line,m=g.getScaleForId(h.yAxisID),n=g.getDataset(),o=b(n,k);for(o&&(f=i.custom||{},void 0!==n.tension&&void 0===n.lineTension&&(n.lineTension=n.tension),i._scale=m,i._datasetIndex=g.index,i._children=j,i._model={spanGaps:n.spanGaps?n.spanGaps:k.spanGaps,tension:f.tension?f.tension:c.getValueOrDefault(n.lineTension,l.tension),backgroundColor:f.backgroundColor?f.backgroundColor:n.backgroundColor||l.backgroundColor,borderWidth:f.borderWidth?f.borderWidth:n.borderWidth||l.borderWidth,borderColor:f.borderColor?f.borderColor:n.borderColor||l.borderColor,borderCapStyle:f.borderCapStyle?f.borderCapStyle:n.borderCapStyle||l.borderCapStyle,borderDash:f.borderDash?f.borderDash:n.borderDash||l.borderDash,borderDashOffset:f.borderDashOffset?f.borderDashOffset:n.borderDashOffset||l.borderDashOffset,borderJoinStyle:f.borderJoinStyle?f.borderJoinStyle:n.borderJoinStyle||l.borderJoinStyle,fill:f.fill?f.fill:void 0!==n.fill?n.fill:l.fill,steppedLine:f.steppedLine?f.steppedLine:c.getValueOrDefault(n.steppedLine,l.stepped),cubicInterpolationMode:f.cubicInterpolationMode?f.cubicInterpolationMode:c.getValueOrDefault(n.cubicInterpolationMode,l.cubicInterpolationMode),scaleTop:m.top,scaleBottom:m.bottom,scaleZero:m.getBasePixel()},i.pivot()),d=0,e=j.length;d');var c=a.data,d=c.datasets,e=c.labels;if(d.length)for(var f=0;f'),e[f]&&b.push(e[f]),b.push("");return b.push(""),b.join("")},legend:{labels:{generateLabels:function(a){var c=a.data;return c.labels.length&&c.datasets.length?c.labels.map(function(d,e){var f=a.getDatasetMeta(0),g=c.datasets[0],h=f.data[e],i=h.custom||{},j=b.getValueAtIndexOrDefault,k=a.options.elements.arc,l=i.backgroundColor?i.backgroundColor:j(g.backgroundColor,e,k.backgroundColor),m=i.borderColor?i.borderColor:j(g.borderColor,e,k.borderColor),n=i.borderWidth?i.borderWidth:j(g.borderWidth,e,k.borderWidth);return{text:d,fillStyle:l,strokeStyle:m,lineWidth:n,hidden:isNaN(g.data[e])||f.data[e].hidden,index:e}}):[]}},onClick:function(a,b){var c,d,e,f=b.index,g=this.chart;for(c=0,d=(g.data.datasets||[]).length;c0&&!isNaN(a)?2*Math.PI/b:0}})}},{}],20:[function(a,b,c){"use strict";b.exports=function(a){var b=a.helpers;a.defaults.radar={scale:{type:"radialLinear"},elements:{line:{tension:0}}},a.controllers.radar=a.DatasetController.extend({datasetElementType:a.elements.Line,dataElementType:a.elements.Point,linkScales:b.noop,addElementAndReset:function(b){a.DatasetController.prototype.addElementAndReset.call(this,b),this.updateBezierControlPoints()},update:function(a){var c=this,d=c.getMeta(),e=d.dataset,f=d.data,g=e.custom||{},h=c.getDataset(),i=c.chart.options.elements.line,j=c.chart.scale;void 0!==h.tension&&void 0===h.lineTension&&(h.lineTension=h.tension),b.extend(d.dataset,{_datasetIndex:c.index,_children:f,_loop:!0,_model:{tension:g.tension?g.tension:b.getValueOrDefault(h.lineTension,i.tension),backgroundColor:g.backgroundColor?g.backgroundColor:h.backgroundColor||i.backgroundColor,borderWidth:g.borderWidth?g.borderWidth:h.borderWidth||i.borderWidth,borderColor:g.borderColor?g.borderColor:h.borderColor||i.borderColor,fill:g.fill?g.fill:void 0!==h.fill?h.fill:i.fill,borderCapStyle:g.borderCapStyle?g.borderCapStyle:h.borderCapStyle||i.borderCapStyle,borderDash:g.borderDash?g.borderDash:h.borderDash||i.borderDash,borderDashOffset:g.borderDashOffset?g.borderDashOffset:h.borderDashOffset||i.borderDashOffset,borderJoinStyle:g.borderJoinStyle?g.borderJoinStyle:h.borderJoinStyle||i.borderJoinStyle,scaleTop:j.top,scaleBottom:j.bottom,scaleZero:j.getBasePosition()}}),d.dataset.pivot(),b.each(f,function(b,d){c.updateElement(b,d,a)},c),c.updateBezierControlPoints()},updateElement:function(a,c,d){var e=this,f=a.custom||{},g=e.getDataset(),h=e.chart.scale,i=e.chart.options.elements.point,j=h.getPointPositionForValue(c,g.data[c]);b.extend(a,{_datasetIndex:e.index,_index:c,_scale:h,_model:{x:d?h.xCenter:j.x,y:d?h.yCenter:j.y,tension:f.tension?f.tension:b.getValueOrDefault(g.tension,e.chart.options.elements.line.tension),radius:f.radius?f.radius:b.getValueAtIndexOrDefault(g.pointRadius,c,i.radius),backgroundColor:f.backgroundColor?f.backgroundColor:b.getValueAtIndexOrDefault(g.pointBackgroundColor,c,i.backgroundColor),borderColor:f.borderColor?f.borderColor:b.getValueAtIndexOrDefault(g.pointBorderColor,c,i.borderColor),borderWidth:f.borderWidth?f.borderWidth:b.getValueAtIndexOrDefault(g.pointBorderWidth,c,i.borderWidth),pointStyle:f.pointStyle?f.pointStyle:b.getValueAtIndexOrDefault(g.pointStyle,c,i.pointStyle),hitRadius:f.hitRadius?f.hitRadius:b.getValueAtIndexOrDefault(g.hitRadius,c,i.hitRadius)}}),a._model.skip=f.skip?f.skip:isNaN(a._model.x)||isNaN(a._model.y)},updateBezierControlPoints:function(){var a=this.chart.chartArea,c=this.getMeta();b.each(c.data,function(d,e){var f=d._model,g=b.splineCurve(b.previousItem(c.data,e,!0)._model,f,b.nextItem(c.data,e,!0)._model,f.tension);f.controlPointPreviousX=Math.max(Math.min(g.previous.x,a.right),a.left),f.controlPointPreviousY=Math.max(Math.min(g.previous.y,a.bottom),a.top),f.controlPointNextX=Math.max(Math.min(g.next.x,a.right),a.left),f.controlPointNextY=Math.max(Math.min(g.next.y,a.bottom),a.top),d.pivot()})},draw:function(a){var c=this.getMeta(),d=a||1;b.each(c.data,function(a){a.transition(d)}),c.dataset.transition(d).draw(),b.each(c.data,function(a){a.draw()})},setHoverStyle:function(a){var c=this.chart.data.datasets[a._datasetIndex],d=a.custom||{},e=a._index,f=a._model;f.radius=d.hoverRadius?d.hoverRadius:b.getValueAtIndexOrDefault(c.pointHoverRadius,e,this.chart.options.elements.point.hoverRadius),f.backgroundColor=d.hoverBackgroundColor?d.hoverBackgroundColor:b.getValueAtIndexOrDefault(c.pointHoverBackgroundColor,e,b.getHoverColor(f.backgroundColor)),f.borderColor=d.hoverBorderColor?d.hoverBorderColor:b.getValueAtIndexOrDefault(c.pointHoverBorderColor,e,b.getHoverColor(f.borderColor)),f.borderWidth=d.hoverBorderWidth?d.hoverBorderWidth:b.getValueAtIndexOrDefault(c.pointHoverBorderWidth,e,f.borderWidth)},removeHoverStyle:function(a){var c=this.chart.data.datasets[a._datasetIndex],d=a.custom||{},e=a._index,f=a._model,g=this.chart.options.elements.point;f.radius=d.radius?d.radius:b.getValueAtIndexOrDefault(c.radius,e,g.radius),f.backgroundColor=d.backgroundColor?d.backgroundColor:b.getValueAtIndexOrDefault(c.pointBackgroundColor,e,g.backgroundColor),f.borderColor=d.borderColor?d.borderColor:b.getValueAtIndexOrDefault(c.pointBorderColor,e,g.borderColor),f.borderWidth=d.borderWidth?d.borderWidth:b.getValueAtIndexOrDefault(c.pointBorderWidth,e,g.borderWidth)}})}},{}],21:[function(a,b,c){"use strict";b.exports=function(a){var b=a.helpers;a.defaults.global.animation={duration:1e3,easing:"easeOutQuart",onProgress:b.noop,onComplete:b.noop},a.Animation=a.Element.extend({currentStep:null,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),a.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(a,b,c,d){var e=this;d||(a.animating=!0);for(var f=0;f1&&(c=Math.floor(a.dropFrames),a.dropFrames=a.dropFrames%1);for(var d=0;da.animations[d].animationObject.numSteps&&(a.animations[d].animationObject.currentStep=a.animations[d].animationObject.numSteps),a.animations[d].animationObject.render(a.animations[d].chartInstance,a.animations[d].animationObject),a.animations[d].animationObject.onAnimationProgress&&a.animations[d].animationObject.onAnimationProgress.call&&a.animations[d].animationObject.onAnimationProgress.call(a.animations[d].chartInstance,a.animations[d]),a.animations[d].animationObject.currentStep===a.animations[d].animationObject.numSteps?(a.animations[d].animationObject.onAnimationComplete&&a.animations[d].animationObject.onAnimationComplete.call&&a.animations[d].animationObject.onAnimationComplete.call(a.animations[d].chartInstance,a.animations[d]),a.animations[d].chartInstance.animating=!1,a.animations.splice(d,1)):++d;var e=Date.now(),f=(e-b)/a.frameDuration;a.dropFrames+=f,a.animations.length>0&&a.requestAnimationFrame()}}}},{}],22:[function(a,b,c){"use strict";b.exports=function(a){var b=a.canvasHelpers={};b.drawPoint=function(a,b,c,d,e){var f,g,h,i,j,k;if("object"==typeof b&&(f=b.toString(),"[object HTMLImageElement]"===f||"[object HTMLCanvasElement]"===f))return void a.drawImage(b,d-b.width/2,e-b.height/2);if(!(isNaN(c)||c<=0)){switch(b){default:a.beginPath(),a.arc(d,e,c,0,2*Math.PI),a.closePath(),a.fill();break;case"triangle":a.beginPath(),g=3*c/Math.sqrt(3),j=g*Math.sqrt(3)/2,a.moveTo(d-g/2,e+j/3),a.lineTo(d+g/2,e+j/3),a.lineTo(d,e-2*j/3),a.closePath(),a.fill();break;case"rect":k=1/Math.SQRT2*c,a.beginPath(),a.fillRect(d-k,e-k,2*k,2*k),a.strokeRect(d-k,e-k,2*k,2*k);break;case"rectRot":k=1/Math.SQRT2*c,a.beginPath(),a.moveTo(d-k,e),a.lineTo(d,e+k),a.lineTo(d+k,e),a.lineTo(d,e-k),a.closePath(),a.fill();break;case"cross":a.beginPath(),a.moveTo(d,e+c),a.lineTo(d,e-c),a.moveTo(d-c,e),a.lineTo(d+c,e),a.closePath();break;case"crossRot":a.beginPath(),h=Math.cos(Math.PI/4)*c,i=Math.sin(Math.PI/4)*c,a.moveTo(d-h,e-i),a.lineTo(d+h,e+i),a.moveTo(d-h,e+i),a.lineTo(d+h,e-i),a.closePath();break;case"star":a.beginPath(),a.moveTo(d,e+c),a.lineTo(d,e-c),a.moveTo(d-c,e),a.lineTo(d+c,e),h=Math.cos(Math.PI/4)*c,i=Math.sin(Math.PI/4)*c,a.moveTo(d-h,e-i),a.lineTo(d+h,e+i),a.moveTo(d-h,e+i),a.lineTo(d+h,e-i),a.closePath();break;case"line":a.beginPath(),a.moveTo(d-c,e),a.lineTo(d+c,e),a.closePath();break;case"dash":a.beginPath(),a.moveTo(d,e),a.lineTo(d+c,e),a.closePath()}a.stroke()}}}},{}],23:[function(a,b,c){"use strict";b.exports=function(a){var b=a.helpers;a.types={},a.instances={},a.controllers={},a.Controller=function(c){return this.chart=c,this.config=c.config,this.options=this.config.options=b.configMerge(a.defaults.global,a.defaults[this.config.type],this.config.options||{}),this.id=b.uid(),Object.defineProperty(this,"data",{get:function(){return this.config.data}}),a.instances[this.id]=this,this.options.responsive&&this.resize(!0),this.initialize(),this},b.extend(a.Controller.prototype,{initialize:function(){var b=this;return a.plugins.notify("beforeInit",[b]),b.bindEvents(),b.ensureScalesHaveIDs(),b.buildOrUpdateControllers(),b.buildScales(),b.updateLayout(),b.resetElements(),b.initToolTip(),b.update(),a.plugins.notify("afterInit",[b]),b},clear:function(){return b.clear(this.chart),this},stop:function(){return a.animationService.cancelAnimation(this),this},resize:function(c){var d=this,e=d.chart,f=e.canvas,g=b.getMaximumWidth(f),h=e.aspectRatio,i=d.options.maintainAspectRatio&&isNaN(h)===!1&&isFinite(h)&&0!==h?g/h:b.getMaximumHeight(f),j=e.width!==g||e.height!==i;if(!j)return d;f.width=e.width=g,f.height=e.height=i,b.retinaScale(e);var k={width:g,height:i};return a.plugins.notify("resize",[d,k]),d.options.onResize&&d.options.onResize(d,k),c||(d.stop(),d.update(d.options.responsiveAnimationDuration)),d},ensureScalesHaveIDs:function(){var a=this.options,c=a.scales||{},d=a.scale;b.each(c.xAxes,function(a,b){a.id=a.id||"x-axis-"+b}),b.each(c.yAxes,function(a,b){a.id=a.id||"y-axis-"+b}),d&&(d.id=d.id||"scale")},buildScales:function(){var c=this,d=c.options,e=c.scales={},f=[];d.scales&&(f=f.concat((d.scales.xAxes||[]).map(function(a){return{options:a,dtype:"category"}}),(d.scales.yAxes||[]).map(function(a){return{options:a,dtype:"linear"}}))),d.scale&&f.push({options:d.scale,dtype:"radialLinear",isDefault:!0}),b.each(f,function(d){var f=d.options,g=b.getValueOrDefault(f.type,d.dtype),h=a.scaleService.getScaleConstructor(g);if(h){var i=new h({id:f.id,options:f,ctx:c.chart.ctx,chart:c});e[i.id]=i,d.isDefault&&(c.scale=i)}}),a.scaleService.addScalesToLayout(this)},updateLayout:function(){a.layoutService.update(this,this.chart.width,this.chart.height)},buildOrUpdateControllers:function(){var c=this,d=[],e=[];if(b.each(c.data.datasets,function(b,f){var g=c.getDatasetMeta(f);g.type||(g.type=b.type||c.config.type),d.push(g.type),g.controller?g.controller.updateIndex(f):(g.controller=new a.controllers[g.type](c,f),e.push(g.controller))},c),d.length>1)for(var f=1;f0&&(b=this.getDatasetMeta(b[0]._datasetIndex).data), -b},getDatasetMeta:function(a){var b=this,c=b.data.datasets[a];c._meta||(c._meta={});var d=c._meta[b.id];return d||(d=c._meta[b.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),d},getVisibleDatasetCount:function(){for(var a=0,b=0,c=this.data.datasets.length;bd)for(var e=d;e=0;e--)b.call(c,a[e],e);else for(e=0;e=d[c].length||!d[c][e].type?d[c].push(f.configMerge(h,b)):b.type&&b.type!==d[c][e].type?d[c][e]=f.configMerge(d[c][e],h,b):d[c][e]=f.configMerge(d[c][e],b)}):(d[c]=[],f.each(b,function(b){var e=f.getValueOrDefault(b.type,"xAxes"===c?"category":"linear");d[c].push(f.configMerge(a.scaleService.getScaleDefaults(e),b))})):d.hasOwnProperty(c)&&"object"==typeof d[c]&&null!==d[c]&&"object"==typeof b?d[c]=f.configMerge(d[c],b):d[c]=b}),d},f.getValueAtIndexOrDefault=function(a,b,c){return void 0===a||null===a?c:f.isArray(a)?b=0;d--){var e=a[d];if(b(e))return e}},f.inherits=function(a){var b=this,c=a&&a.hasOwnProperty("constructor")?a.constructor:function(){return b.apply(this,arguments)},d=function(){this.constructor=c};return d.prototype=b.prototype,c.prototype=new d,c.extend=f.inherits,a&&f.extend(c.prototype,a),c.__super__=b.prototype,c},f.noop=function(){},f.uid=function(){var a=0;return function(){return a++}}(),f.isNumber=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},f.almostEquals=function(a,b,c){return Math.abs(a-b)0?1:-1},f.log10=Math.log10?function(a){return Math.log10(a)}:function(a){return Math.log(a)/Math.LN10},f.toRadians=function(a){return a*(Math.PI/180)},f.toDegrees=function(a){return a*(180/Math.PI)},f.getAngleFromPoint=function(a,b){var c=b.x-a.x,d=b.y-a.y,e=Math.sqrt(c*c+d*d),f=Math.atan2(d,c);return f<-.5*Math.PI&&(f+=2*Math.PI),{angle:f,distance:e}},f.aliasPixel=function(a){return a%2===0?0:.5},f.splineCurve=function(a,b,c,d){var e=a.skip?b:a,f=b,g=c.skip?b:c,h=Math.sqrt(Math.pow(f.x-e.x,2)+Math.pow(f.y-e.y,2)),i=Math.sqrt(Math.pow(g.x-f.x,2)+Math.pow(g.y-f.y,2)),j=h/(h+i),k=i/(h+i);j=isNaN(j)?0:j,k=isNaN(k)?0:k;var l=d*j,m=d*k;return{previous:{x:f.x-l*(g.x-e.x),y:f.y-l*(g.y-e.y)},next:{x:f.x+m*(g.x-e.x),y:f.y+m*(g.y-e.y)}}},f.EPSILON=Number.EPSILON||1e-14,f.splineCurveMonotone=function(a){var b,c,d,e,g=(a||[]).map(function(a){return{model:a._model,deltaK:0,mK:0}}),h=g.length;for(b=0;b0?g[b-1]:null,e=b0?g[b-1]:null,e=b=a.length-1?a[0]:a[b+1]:b>=a.length-1?a[a.length-1]:a[b+1]},f.previousItem=function(a,b,c){return c?b<=0?a[a.length-1]:a[b-1]:b<=0?a[0]:a[b-1]},f.niceNum=function(a,b){var c,d=Math.floor(f.log10(a)),e=a/Math.pow(10,d);return c=b?e<1.5?1:e<3?2:e<7?5:10:e<=1?1:e<=2?2:e<=5?5:10,c*Math.pow(10,d)};var g=f.easingEffects={linear:function(a){return a},easeInQuad:function(a){return a*a},easeOutQuad:function(a){return-1*a*(a-2)},easeInOutQuad:function(a){return(a/=.5)<1?.5*a*a:-.5*(--a*(a-2)-1)},easeInCubic:function(a){return a*a*a},easeOutCubic:function(a){return 1*((a=a/1-1)*a*a+1)},easeInOutCubic:function(a){return(a/=.5)<1?.5*a*a*a:.5*((a-=2)*a*a+2)},easeInQuart:function(a){return a*a*a*a},easeOutQuart:function(a){return-1*((a=a/1-1)*a*a*a-1)},easeInOutQuart:function(a){return(a/=.5)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)},easeInQuint:function(a){return 1*(a/=1)*a*a*a*a},easeOutQuint:function(a){return 1*((a=a/1-1)*a*a*a*a+1)},easeInOutQuint:function(a){return(a/=.5)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)},easeInSine:function(a){return-1*Math.cos(a/1*(Math.PI/2))+1},easeOutSine:function(a){return 1*Math.sin(a/1*(Math.PI/2))},easeInOutSine:function(a){return-.5*(Math.cos(Math.PI*a/1)-1)},easeInExpo:function(a){return 0===a?1:1*Math.pow(2,10*(a/1-1))},easeOutExpo:function(a){return 1===a?1:1*(-Math.pow(2,-10*a/1)+1)},easeInOutExpo:function(a){return 0===a?0:1===a?1:(a/=.5)<1?.5*Math.pow(2,10*(a-1)):.5*(-Math.pow(2,-10*--a)+2)},easeInCirc:function(a){return a>=1?a:-1*(Math.sqrt(1-(a/=1)*a)-1)},easeOutCirc:function(a){return 1*Math.sqrt(1-(a=a/1-1)*a)},easeInOutCirc:function(a){return(a/=.5)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)},easeInElastic:function(a){var b=1.70158,c=0,d=1;return 0===a?0:1===(a/=1)?1:(c||(c=.3),d0?(c=i[0].clientX,d=i[0].clientY):(c=e.clientX,d=e.clientY);var j=parseFloat(f.getStyle(g,"padding-left")),k=parseFloat(f.getStyle(g,"padding-top")),l=parseFloat(f.getStyle(g,"padding-right")),m=parseFloat(f.getStyle(g,"padding-bottom")),n=h.right-h.left-j-l,o=h.bottom-h.top-k-m;return c=Math.round((c-h.left-j)/n*g.width/b.currentDevicePixelRatio),d=Math.round((d-h.top-k)/o*g.height/b.currentDevicePixelRatio),{x:c,y:d}},f.addEvent=function(a,b,c){a.addEventListener?a.addEventListener(b,c):a.attachEvent?a.attachEvent("on"+b,c):a["on"+b]=c},f.removeEvent=function(a,b,c){a.removeEventListener?a.removeEventListener(b,c,!1):a.detachEvent?a.detachEvent("on"+b,c):a["on"+b]=f.noop},f.bindEvents=function(a,b,c){var d=a.events=a.events||{};f.each(b,function(b){d[b]=function(){c.apply(a,arguments)},f.addEvent(a.chart.canvas,b,d[b])})},f.unbindEvents=function(a,b){var c=a.chart.canvas;f.each(b,function(a,b){f.removeEvent(c,b,a)})},f.getConstraintWidth=function(a){return e(a,"max-width","clientWidth")},f.getConstraintHeight=function(a){return e(a,"max-height","clientHeight")},f.getMaximumWidth=function(a){var b=a.parentNode,c=parseInt(f.getStyle(b,"padding-left"))+parseInt(f.getStyle(b,"padding-right")),d=b.clientWidth-c,e=f.getConstraintWidth(a);return isNaN(e)?d:Math.min(d,e)},f.getMaximumHeight=function(a){var b=a.parentNode,c=parseInt(f.getStyle(b,"padding-top"))+parseInt(f.getStyle(b,"padding-bottom")),d=b.clientHeight-c,e=f.getConstraintHeight(a);return isNaN(e)?d:Math.min(d,e)},f.getStyle=function(a,b){return a.currentStyle?a.currentStyle[b]:document.defaultView.getComputedStyle(a,null).getPropertyValue(b)},f.retinaScale=function(a){var b=a.ctx,c=a.canvas,d=c.width,e=c.height,f=a.currentDevicePixelRatio=window.devicePixelRatio||1;1!==f&&(c.height=e*f,c.width=d*f,b.scale(f,f),a.originalDevicePixelRatio=a.originalDevicePixelRatio||f),c.style.width=d+"px",c.style.height=e+"px"},f.clear=function(a){a.ctx.clearRect(0,0,a.width,a.height)},f.fontString=function(a,b,c){return b+" "+a+"px "+c},f.longestText=function(a,b,c,d){d=d||{};var e=d.data=d.data||{},g=d.garbageCollect=d.garbageCollect||[];d.font!==b&&(e=d.data={},g=d.garbageCollect=[],d.font=b),a.font=b;var h=0;f.each(c,function(b){void 0!==b&&null!==b&&f.isArray(b)!==!0?h=f.measureText(a,e,g,h,b):f.isArray(b)&&f.each(b,function(b){void 0===b||null===b||f.isArray(b)||(h=f.measureText(a,e,g,h,b))})});var i=g.length/2;if(i>c.length){for(var j=0;jd&&(d=f),d},f.numberOfLabelLines=function(a){var b=1;return f.each(a,function(a){f.isArray(a)&&a.length>b&&(b=a.length)}),b},f.drawRoundedRectangle=function(a,b,c,d,e,f){a.beginPath(),a.moveTo(b+f,c),a.lineTo(b+d-f,c),a.quadraticCurveTo(b+d,c,b+d,c+f),a.lineTo(b+d,c+e-f),a.quadraticCurveTo(b+d,c+e,b+d-f,c+e),a.lineTo(b+f,c+e),a.quadraticCurveTo(b,c+e,b,c+e-f),a.lineTo(b,c+f),a.quadraticCurveTo(b,c,b+f,c),a.closePath()},f.color=function(b){return d?d(b instanceof CanvasGradient?a.defaults.global.defaultColor:b):(console.log("Color.js not found!"),b)},f.addResizeListener=function(a,b){var c=document.createElement("iframe"),d="chartjs-hidden-iframe";c.classlist?c.classlist.add(d):c.setAttribute("class",d),c.tabIndex=-1;var e=c.style;e.width="100%",e.display="block",e.border=0,e.height=0,e.margin=0,e.position="absolute",e.left=0,e.right=0,e.top=0,e.bottom=0,a.insertBefore(c,a.firstChild),(c.contentWindow||c).onresize=function(){b&&b()}},f.removeResizeListener=function(a){var b=a.querySelector(".chartjs-hidden-iframe");b&&b.parentNode.removeChild(b)},f.isArray=Array.isArray?function(a){return Array.isArray(a)}:function(a){return"[object Array]"===Object.prototype.toString.call(a)},f.arrayEquals=function(a,b){var c,d,e,g;if(!a||!b||a.length!=b.length)return!1;for(c=0,d=a.length;c');for(var c=0;c'),a.data.datasets[c].label&&b.push(a.data.datasets[c].label),b.push("");return b.push(""),b.join("")}}},a.Chart=a,a}},{}],28:[function(a,b,c){"use strict";b.exports=function(a){var b=a.helpers;a.layoutService={defaults:{},addBox:function(a,b){a.boxes||(a.boxes=[]),a.boxes.push(b)},removeBox:function(a,b){a.boxes&&a.boxes.splice(a.boxes.indexOf(b),1)},update:function(a,c,d){function e(a){var b,c=a.isHorizontal();c?(b=a.update(a.options.fullWidth?p:v,u),w-=b.height):(b=a.update(t,s),v-=b.width),x.push({horizontal:c,minSize:b,box:a})}function f(a){var c=b.findNextWhere(x,function(b){return b.box===a});if(c)if(a.isHorizontal()){var d={left:y,right:z,top:0,bottom:0};a.update(a.options.fullWidth?p:v,q/2,d)}else a.update(c.minSize.width,w)}function g(a){var c=b.findNextWhere(x,function(b){return b.box===a}),d={left:0,right:0,top:A,bottom:B};c&&a.update(c.minSize.width,w,d)}function h(a){a.isHorizontal()?(a.left=a.options.fullWidth?i:y,a.right=a.options.fullWidth?c-i:y+v,a.top=F,a.bottom=F+a.height,F=a.bottom):(a.left=E,a.right=E+a.width,a.top=A,a.bottom=A+w,E=a.right)}if(a){var i=0,j=0,k=b.where(a.boxes,function(a){return"left"===a.options.position}),l=b.where(a.boxes,function(a){return"right"===a.options.position}),m=b.where(a.boxes,function(a){return"top"===a.options.position}),n=b.where(a.boxes,function(a){return"bottom"===a.options.position}),o=b.where(a.boxes,function(a){return"chartArea"===a.options.position});m.sort(function(a,b){return(b.options.fullWidth?1:0)-(a.options.fullWidth?1:0)}),n.sort(function(a,b){return(a.options.fullWidth?1:0)-(b.options.fullWidth?1:0)});var p=c-2*i,q=d-2*j,r=p/2,s=q/2,t=(c-r)/(k.length+l.length),u=(d-s)/(m.length+n.length),v=p,w=q,x=[];b.each(k.concat(l,m,n),e);var y=i,z=i,A=j,B=j;b.each(k.concat(l),f),b.each(k,function(a){y+=a.width}),b.each(l,function(a){z+=a.width}),b.each(m.concat(n),f),b.each(m,function(a){A+=a.height}),b.each(n,function(a){B+=a.height}),b.each(k.concat(l),g),y=i,z=i,A=j,B=j,b.each(k,function(a){y+=a.width}),b.each(l,function(a){z+=a.width}),b.each(m,function(a){A+=a.height}),b.each(n,function(a){B+=a.height});var C=d-A-B,D=c-y-z;D===v&&C===w||(b.each(k,function(a){a.height=C}),b.each(l,function(a){a.height=C}),b.each(m,function(a){a.options.fullWidth||(a.width=D)}),b.each(n,function(a){a.options.fullWidth||(a.width=D)}),w=C,v=D);var E=i,F=j;b.each(k.concat(m),h),E+=v,F+=w,b.each(l,h),b.each(n,h),a.chartArea={left:y,top:A,right:y+v,bottom:A+w},b.each(o,function(b){b.left=a.chartArea.left,b.top=a.chartArea.top,b.right=a.chartArea.right,b.bottom=a.chartArea.bottom,b.update(v,w)})}}}}},{}],29:[function(a,b,c){"use strict";b.exports=function(a){var b=a.helpers,c=b.noop;a.defaults.global.legend={display:!0,position:"top",fullWidth:!0,reverse:!1,onClick:function(a,b){var c=b.datasetIndex,d=this.chart,e=d.getDatasetMeta(c);e.hidden=null===e.hidden?!d.data.datasets[c].hidden:null,d.update()},labels:{boxWidth:40,padding:10,generateLabels:function(a){var c=a.data;return b.isArray(c.datasets)?c.datasets.map(function(c,d){return{text:c.label,fillStyle:b.isArray(c.backgroundColor)?c.backgroundColor[0]:c.backgroundColor,hidden:!a.isDatasetVisible(d),lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:c.borderWidth,strokeStyle:c.borderColor,pointStyle:c.pointStyle,datasetIndex:d}},this):[]}}},a.Legend=a.Element.extend({initialize:function(a){b.extend(this,a),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:c,update:function(a,b,c){var d=this;return d.beforeUpdate(),d.maxWidth=a,d.maxHeight=b,d.margins=c,d.beforeSetDimensions(),d.setDimensions(),d.afterSetDimensions(),d.beforeBuildLabels(),d.buildLabels(),d.afterBuildLabels(),d.beforeFit(),d.fit(),d.afterFit(),d.afterUpdate(),d.minSize},afterUpdate:c,beforeSetDimensions:c,setDimensions:function(){var a=this;a.isHorizontal()?(a.width=a.maxWidth,a.left=0,a.right=a.width):(a.height=a.maxHeight,a.top=0,a.bottom=a.height),a.paddingLeft=0,a.paddingTop=0,a.paddingRight=0,a.paddingBottom=0,a.minSize={width:0,height:0}},afterSetDimensions:c,beforeBuildLabels:c,buildLabels:function(){var a=this;a.legendItems=a.options.labels.generateLabels.call(a,a.chart),a.options.reverse&&a.legendItems.reverse()},afterBuildLabels:c,beforeFit:c,fit:function(){var c=this,d=c.options,e=d.labels,f=d.display,g=c.ctx,h=a.defaults.global,i=b.getValueOrDefault,j=i(e.fontSize,h.defaultFontSize),k=i(e.fontStyle,h.defaultFontStyle),l=i(e.fontFamily,h.defaultFontFamily),m=b.fontString(j,k,l),n=c.legendHitBoxes=[],o=c.minSize,p=c.isHorizontal();if(p?(o.width=c.maxWidth,o.height=f?10:0):(o.width=f?10:0,o.height=c.maxHeight),f)if(g.font=m,p){var q=c.lineWidths=[0],r=c.legendItems.length?j+e.padding:0;g.textAlign="left",g.textBaseline="top",b.each(c.legendItems,function(a,b){var d=e.usePointStyle?j*Math.sqrt(2):e.boxWidth,f=d+j/2+g.measureText(a.text).width;q[q.length-1]+f+e.padding>=c.width&&(r+=j+e.padding,q[q.length]=c.left),n[b]={left:0,top:0,width:f,height:j},q[q.length-1]+=f+e.padding}),o.height+=r}else{var s=e.padding,t=c.columnWidths=[],u=e.padding,v=0,w=0,x=j+s;b.each(c.legendItems,function(a,b){var c=e.usePointStyle?2*e.boxWidth:e.boxWidth,d=c+j/2+g.measureText(a.text).width;w+x>o.height&&(u+=v+e.padding,t.push(v),v=0,w=0),v=Math.max(v,d),w+=x,n[b]={left:0,top:0,width:d,height:j}}),u+=v,t.push(v),o.width+=u}c.width=o.width,c.height=o.height},afterFit:c,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var c=this,d=c.options,e=d.labels,f=a.defaults.global,g=f.elements.line,h=c.width,i=c.lineWidths;if(d.display){var j,k=c.ctx,l=b.getValueOrDefault,m=l(e.fontColor,f.defaultFontColor),n=l(e.fontSize,f.defaultFontSize),o=l(e.fontStyle,f.defaultFontStyle),p=l(e.fontFamily,f.defaultFontFamily),q=b.fontString(n,o,p);k.textAlign="left",k.textBaseline="top",k.lineWidth=.5,k.strokeStyle=m,k.fillStyle=m,k.font=q;var r=e.boxWidth,s=c.legendHitBoxes,t=function(b,c,e){if(!(isNaN(r)||r<=0)){if(k.save(),k.fillStyle=l(e.fillStyle,f.defaultColor),k.lineCap=l(e.lineCap,g.borderCapStyle),k.lineDashOffset=l(e.lineDashOffset,g.borderDashOffset),k.lineJoin=l(e.lineJoin,g.borderJoinStyle),k.lineWidth=l(e.lineWidth,g.borderWidth),k.strokeStyle=l(e.strokeStyle,f.defaultColor),k.setLineDash&&k.setLineDash(l(e.lineDash,g.borderDash)),d.labels&&d.labels.usePointStyle){var h=n*Math.SQRT2/2,i=h/Math.SQRT2,j=b+i,m=c+i;a.canvasHelpers.drawPoint(k,e.pointStyle,h,j,m)}else k.strokeRect(b,c,r,n),k.fillRect(b,c,r,n);k.restore()}},u=function(a,b,c,d){k.fillText(c.text,r+n/2+a,b),c.hidden&&(k.beginPath(),k.lineWidth=2,k.moveTo(r+n/2+a,b+n/2),k.lineTo(r+n/2+a+d,b+n/2),k.stroke())},v=c.isHorizontal();j=v?{x:c.left+(h-i[0])/2,y:c.top+e.padding,line:0}:{x:c.left+e.padding,y:c.top+e.padding,line:0};var w=n+e.padding;b.each(c.legendItems,function(a,b){var d=k.measureText(a.text).width,f=e.usePointStyle?n+n/2+d:r+n/2+d,g=j.x,l=j.y;v?g+f>=h&&(l=j.y+=w,j.line++,g=j.x=c.left+(h-i[j.line])/2):l+w>c.bottom&&(g=j.x=g+c.columnWidths[j.line]+e.padding,l=j.y=c.top,j.line++),t(g,l,a),s[b].left=g,s[b].top=l,u(g,l,a,d),v?j.x+=f+e.padding:j.y+=w})}},handleEvent:function(a){var c=this,d=b.getRelativePosition(a,c.chart.chart),e=d.x,f=d.y,g=c.options;if(e>=c.left&&e<=c.right&&f>=c.top&&f<=c.bottom)for(var h=c.legendHitBoxes,i=0;i=j.left&&e<=j.left+j.width&&f>=j.top&&f<=j.top+j.height){g.onClick&&g.onClick.call(c,a,c.legendItems[i]);break}}}}),a.plugins.register({beforeInit:function(b){var c=b.options,d=c.legend;d&&(b.legend=new a.Legend({ctx:b.chart.ctx,options:d,chart:b}),a.layoutService.addBox(b,b.legend))}})}},{}],30:[function(a,b,c){"use strict";b.exports=function(a){var b=a.helpers.noop;a.plugins={_plugins:[],register:function(a){var b=this._plugins;[].concat(a).forEach(function(a){b.indexOf(a)===-1&&b.push(a)})},unregister:function(a){var b=this._plugins;[].concat(a).forEach(function(a){var c=b.indexOf(a);c!==-1&&b.splice(c,1)})},clear:function(){this._plugins=[]},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(a,b){var c,d,e=this._plugins,f=e.length;for(c=0;cr&&c.labelRotationc.yLabelWidth&&(c.paddingLeft=k+g/2),c.paddingRight=g/2,o*p>c.maxHeight){c.labelRotation--;break}c.labelRotation++,q=n*p}}c.margins&&(c.paddingLeft=Math.max(c.paddingLeft-c.margins.left,0),c.paddingRight=Math.max(c.paddingRight-c.margins.right,0))},afterCalculateTickRotation:function(){b.callCallback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){b.callCallback(this.options.beforeFit,[this])},fit:function(){var c=this,d=c.minSize={width:0,height:0},e=c.options,f=a.defaults.global,g=e.ticks,h=e.scaleLabel,i=e.gridLines,j=e.display,k=c.isHorizontal(),l=b.getValueOrDefault(g.fontSize,f.defaultFontSize),m=b.getValueOrDefault(g.fontStyle,f.defaultFontStyle),n=b.getValueOrDefault(g.fontFamily,f.defaultFontFamily),o=b.fontString(l,m,n),p=b.getValueOrDefault(h.fontSize,f.defaultFontSize),q=e.gridLines.tickMarkLength;if(k?d.width=c.isFullWidth()?c.maxWidth-c.margins.left-c.margins.right:c.maxWidth:d.width=j&&i.drawTicks?q:0,k?d.height=j&&i.drawTicks?q:0:d.height=c.maxHeight,h.display&&j&&(k?d.height+=1.5*p:d.width+=1.5*p),g.display&&j){c.longestTextCache||(c.longestTextCache={});var r=b.longestText(c.ctx,o,c.ticks,c.longestTextCache),s=b.numberOfLabelLines(c.ticks),t=.5*l;if(k){c.longestLabelWidth=r;var u=Math.sin(b.toRadians(c.labelRotation))*c.longestLabelWidth+l*s+t*s;d.height=Math.min(c.maxHeight,d.height+u),c.ctx.font=o;var v=c.ctx.measureText(c.ticks[0]).width,w=c.ctx.measureText(c.ticks[c.ticks.length-1]).width,x=Math.cos(b.toRadians(c.labelRotation)),y=Math.sin(b.toRadians(c.labelRotation));c.paddingLeft=0!==c.labelRotation?x*v+3:v/2+3,c.paddingRight=0!==c.labelRotation?y*(l/2)+3:w/2+3}else{var z=c.maxWidth-d.width,A=g.mirror;A?r=0:r+=c.options.ticks.padding,r0&&c>0?b:0)},draw:function(c){var d=this,e=d.options;if(e.display){var f,g,h=d.ctx,i=a.defaults.global,j=e.ticks,k=e.gridLines,l=e.scaleLabel,m=0!==d.labelRotation,n=j.autoSkip,o=d.isHorizontal();j.maxTicksLimit&&(g=j.maxTicksLimit);var p=b.getValueOrDefault(j.fontColor,i.defaultFontColor),q=b.getValueOrDefault(j.fontSize,i.defaultFontSize),r=b.getValueOrDefault(j.fontStyle,i.defaultFontStyle),s=b.getValueOrDefault(j.fontFamily,i.defaultFontFamily),t=b.fontString(q,r,s),u=k.tickMarkLength,v=b.getValueOrDefault(k.borderDash,i.borderDash),w=b.getValueOrDefault(k.borderDashOffset,i.borderDashOffset),x=b.getValueOrDefault(l.fontColor,i.defaultFontColor),y=b.getValueOrDefault(l.fontSize,i.defaultFontSize),z=b.getValueOrDefault(l.fontStyle,i.defaultFontStyle),A=b.getValueOrDefault(l.fontFamily,i.defaultFontFamily),B=b.fontString(y,z,A),C=b.toRadians(d.labelRotation),D=Math.cos(C),E=d.longestLabelWidth*D;h.fillStyle=p;var F=[];if(o){if(f=!1,m&&(E/=2),(E+j.autoSkipPadding)*d.ticks.length>d.width-(d.paddingLeft+d.paddingRight)&&(f=1+Math.floor((E+j.autoSkipPadding)*d.ticks.length/(d.width-(d.paddingLeft+d.paddingRight)))),g&&d.ticks.length>g)for(;!f||d.ticks.length/(f||1)>g;)f||(f=1),f+=1;n||(f=!1)}var G="right"===e.position?d.left:d.right-u,H="right"===e.position?d.left+u:d.right,I="bottom"===e.position?d.top:d.bottom-u,J="bottom"===e.position?d.top+u:d.bottom;if(b.each(d.ticks,function(a,g){if(void 0!==a&&null!==a){var h=d.ticks.length===g+1,i=f>1&&g%f>0||g%f===0&&g+f>=d.ticks.length;if((!i||h)&&void 0!==a&&null!==a){var l,n;g===("undefined"!=typeof d.zeroLineIndex?d.zeroLineIndex:0)?(l=k.zeroLineWidth,n=k.zeroLineColor):(l=b.getValueAtIndexOrDefault(k.lineWidth,g),n=b.getValueAtIndexOrDefault(k.color,g));var p,q,r,s,t,x,y,z,A,B,D,E="middle";if(o){m||(E="top"===e.position?"bottom":"top"),D=m?"right":"center";var K=d.getPixelForTick(g)+b.aliasPixel(l);A=d.getPixelForTick(g,k.offsetGridLines)+j.labelOffset,B=m?d.top+12:"top"===e.position?d.bottom-u:d.top+u,p=r=t=y=K,q=I,s=J,x=c.top,z=c.bottom}else{"left"===e.position?j.mirror?(A=d.right+j.padding,D="left"):(A=d.right-j.padding,D="right"):j.mirror?(A=d.left-j.padding,D="right"):(A=d.left+j.padding,D="left");var L=d.getPixelForTick(g);L+=b.aliasPixel(l),B=d.getPixelForTick(g,k.offsetGridLines),p=G,r=H,t=c.left,y=c.right,q=s=x=z=L}F.push({tx1:p,ty1:q,tx2:r,ty2:s,x1:t,y1:x,x2:y,y2:z,labelX:A,labelY:B,glWidth:l,glColor:n,glBorderDash:v,glBorderDashOffset:w,rotation:-1*C,label:a,textBaseline:E,textAlign:D})}}}),b.each(F,function(a){if(k.display&&(h.save(),h.lineWidth=a.glWidth,h.strokeStyle=a.glColor,h.setLineDash&&(h.setLineDash(a.glBorderDash),h.lineDashOffset=a.glBorderDashOffset),h.beginPath(),k.drawTicks&&(h.moveTo(a.tx1,a.ty1),h.lineTo(a.tx2,a.ty2)),k.drawOnChartArea&&(h.moveTo(a.x1,a.y1),h.lineTo(a.x2,a.y2)),h.stroke(),h.restore()),j.display){h.save(),h.translate(a.labelX,a.labelY),h.rotate(a.rotation),h.font=t,h.textBaseline=a.textBaseline,h.textAlign=a.textAlign;var c=a.label;if(b.isArray(c))for(var d=0,e=0;d0){var f=a[0];f.xLabel?c=f.xLabel:e>0&&f.index1&&e.each(o,function(a){m.push(h.callbacks.labelColor.call(g,a,l))}),e.extend(i,{title:g.getTitle(o,k),beforeBody:g.getBeforeBody(o,k),body:g.getBody(o,k),afterBody:g.getAfterBody(o,k),footer:g.getFooter(o,k),x:Math.round(n.x),y:Math.round(n.y),caretPadding:e.getValueOrDefault(n.padding,2),labelColors:m});var p=g.getTooltipSize(i);g.determineAlignment(p),e.extend(i,g.getBackgroundPoint(i,p))}else g._model.opacity=0;return a&&h.custom&&h.custom.call(g,i),g},getTooltipSize:function(a){var b=this._chart.ctx,c={height:2*a.yPadding,width:0},d=a.body,f=d.reduce(function(a,b){return a+b.before.length+b.lines.length+b.after.length},0);f+=a.beforeBody.length+a.afterBody.length;var g=a.title.length,h=a.footer.length,i=a.titleFontSize,j=a.bodyFontSize,k=a.footerFontSize;c.height+=g*i,c.height+=(g-1)*a.titleSpacing,c.height+=g?a.titleMarginBottom:0,c.height+=f*j,c.height+=f?(f-1)*a.bodySpacing:0,c.height+=h?a.footerMarginTop:0,c.height+=h*k,c.height+=h?(h-1)*a.footerSpacing:0;var l=0,m=function(a){c.width=Math.max(c.width,b.measureText(a).width+l)};return b.font=e.fontString(i,a._titleFontStyle,a._titleFontFamily),e.each(a.title,m),b.font=e.fontString(j,a._bodyFontStyle,a._bodyFontFamily),e.each(a.beforeBody.concat(a.afterBody),m),l=d.length>1?j+2:0,e.each(d,function(a){e.each(a.before,m),e.each(a.lines,m),e.each(a.after,m)}),l=0,b.font=e.fontString(k,a._footerFontStyle,a._footerFontFamily),e.each(a.footer,m),c.width+=2*a.xPadding,c},determineAlignment:function(a){var b=this,c=b._model,d=b._chart,e=b._chartInstance.chartArea;c.yd.height-a.height&&(c.yAlign="bottom");var f,g,h,i,j,k=(e.left+e.right)/2,l=(e.top+e.bottom)/2;"center"===c.yAlign?(f=function(a){return a<=k},g=function(a){return a>k}):(f=function(b){return b<=a.width/2},g=function(b){return b>=d.width-a.width/2}),h=function(b){return b+a.width>d.width},i=function(b){return b-a.width<0},j=function(a){return a<=l?"top":"bottom"},f(c.x)?(c.xAlign="left",h(c.x)&&(c.xAlign="center",c.yAlign=j(c.y))):g(c.x)&&(c.xAlign="right",i(c.x)&&(c.xAlign="center",c.yAlign=j(c.y)))},getBackgroundPoint:function(a,b){var c={x:a.x,y:a.y},d=a.caretSize,e=a.caretPadding,f=a.cornerRadius,g=a.xAlign,h=a.yAlign,i=d+e,j=f+e;return"right"===g?c.x-=b.width:"center"===g&&(c.x-=b.width/2),"top"===h?c.y+=i:"bottom"===h?c.y-=b.height+i:c.y-=b.height/2,"center"===h?"left"===g?c.x+=i:"right"===g&&(c.x-=i):"left"===g?c.x-=j:"right"===g&&(c.x+=j),c},drawCaret:function(a,b,c){var d,f,g,h,i,j,k=this._view,l=this._chart.ctx,m=k.caretSize,n=k.cornerRadius,o=k.xAlign,p=k.yAlign,q=a.x,r=a.y,s=b.width,t=b.height;"center"===p?("left"===o?(d=q,f=d-m,g=d):(d=q+s,f=d+m,g=d),i=r+t/2,h=i-m,j=i+m):("left"===o?(d=q+n,f=d+m,g=f+m):"right"===o?(d=q+s-n,f=d-m,g=f-m):(f=q+s/2,d=f-m,g=f+m),"top"===p?(h=r,i=h-m,j=h):(h=r+t,i=h+m,j=h));var u=e.color(k.backgroundColor);l.fillStyle=u.alpha(c*u.alpha()).rgbString(),l.beginPath(),l.moveTo(d,h),l.lineTo(f,i),l.lineTo(g,j),l.closePath(),l.fill()},drawTitle:function(a,b,c,d){var f=b.title;if(f.length){c.textAlign=b._titleAlign,c.textBaseline="top";var g=b.titleFontSize,h=b.titleSpacing,i=e.color(b.titleFontColor);c.fillStyle=i.alpha(d*i.alpha()).rgbString(),c.font=e.fontString(g,b._titleFontStyle,b._titleFontFamily);var j,k;for(j=0,k=f.length;j1;k=m?f+2:0,e.each(h,function(g,h){e.each(g.before,l),e.each(g.lines,function(g){m&&(c.fillStyle=e.color(b.legendColorBackground).alpha(d).rgbaString(),c.fillRect(a.x,a.y,f,f),c.strokeStyle=e.color(b.labelColors[h].borderColor).alpha(d).rgbaString(),c.strokeRect(a.x,a.y,f,f),c.fillStyle=e.color(b.labelColors[h].backgroundColor).alpha(d).rgbaString(),c.fillRect(a.x+1,a.y+1,f-2,f-2),c.fillStyle=j),l(g)}),e.each(g.after,l)}),k=0,e.each(b.afterBody,l),a.y-=g},drawFooter:function(a,b,c,d){var f=b.footer;if(f.length){a.y+=b.footerMarginTop,c.textAlign=b._footerAlign,c.textBaseline="top";var g=e.color(b.footerFontColor);c.fillStyle=g.alpha(d*g.alpha()).rgbString(),c.font=e.fontString(b.footerFontSize,b._footerFontStyle,b._footerFontFamily),e.each(f,function(d){c.fillText(d,a.x,a.y),a.y+=b.footerFontSize+b.footerSpacing})}},draw:function(){var a=this._chart.ctx,b=this._view;if(0!==b.opacity){var c=this.getTooltipSize(b),d={x:b.x,y:b.y},f=Math.abs(b.opacity<.001)?0:b.opacity;if(this._options.enabled){var g=e.color(b.backgroundColor);a.fillStyle=g.alpha(f*g.alpha()).rgbString(),e.drawRoundedRectangle(a,d.x,d.y,c.width,c.height,b.cornerRadius),a.fill(),this.drawCaret(d,c,f),d.x+=b.xPadding,d.y+=b.yPadding,this.drawTitle(d,b,a,f),this.drawBody(d,b,a,f),this.drawFooter(d,b,a,f)}}}})}},{}],35:[function(a,b,c){"use strict";b.exports=function(a){var b=a.helpers,c=a.defaults.global;c.elements.arc={backgroundColor:c.defaultColor,borderColor:"#fff",borderWidth:2},a.elements.Arc=a.Element.extend({inLabelRange:function(a){var b=this._view;return!!b&&Math.pow(a-b.x,2)i;)f-=2*Math.PI;for(;f=h&&f<=i,k=g>=d.innerRadius&&g<=d.outerRadius;return j&&k}return!1},tooltipPosition:function(){var a=this._view,b=a.startAngle+(a.endAngle-a.startAngle)/2,c=(a.outerRadius-a.innerRadius)/2+a.innerRadius;return{x:a.x+Math.cos(b)*c,y:a.y+Math.sin(b)*c}},draw:function(){var a=this._chart.ctx,b=this._view,c=b.startAngle,d=b.endAngle;a.beginPath(),a.arc(b.x,b.y,b.outerRadius,c,d),a.arc(b.x,b.y,b.innerRadius,d,c,!0),a.closePath(),a.strokeStyle=b.borderColor,a.lineWidth=b.borderWidth,a.fillStyle=b.backgroundColor,a.fill(),a.lineJoin="bevel",b.borderWidth&&a.stroke()}})}},{}],36:[function(a,b,c){"use strict";b.exports=function(a){var b=a.helpers,c=a.defaults.global;a.defaults.global.elements.line={tension:.4,backgroundColor:c.defaultColor,borderWidth:3,borderColor:c.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0},a.elements.Line=a.Element.extend({draw:function(){function a(a,b){var c=b._view;b._view.steppedLine===!0?(i.lineTo(b._view.x,a._view.y),i.lineTo(b._view.x,b._view.y)):0===b._view.tension?i.lineTo(c.x,c.y):i.bezierCurveTo(a._view.controlPointNextX,a._view.controlPointNextY,c.controlPointPreviousX,c.controlPointPreviousY,c.x,c.y)}var d=this,e=d._view,f=e.spanGaps,g=e.scaleZero,h=d._loop,i=d._chart.ctx;i.save();var j=d._children.slice(),k=-1;h&&j.length&&j.push(j[0]);var l,m,n,o;if(j.length&&e.fill){for(i.beginPath(),l=0;l=c.x-c.width/2&&a<=c.x+c.width/2&&b>=c.y&&b<=c.base:a>=c.x-c.width/2&&a<=c.x+c.width/2&&b>=c.base&&b<=c.y)},inLabelRange:function(a){var b=this._view;return!!b&&(a>=b.x-b.width/2&&a<=b.x+b.width/2)},tooltipPosition:function(){var a=this._view;return{x:a.x,y:a.y}}})}},{}],39:[function(a,b,c){"use strict";b.exports=function(a){var b=a.helpers,c={position:"bottom"},d=a.Scale.extend({getLabels:function(){var a=this.chart.data;return(this.isHorizontal()?a.xLabels:a.yLabels)||a.labels},determineDataLimits:function(){var a=this,c=a.getLabels();a.minIndex=0,a.maxIndex=c.length-1;var d;void 0!==a.options.ticks.min&&(d=b.indexOf(c,a.options.ticks.min),a.minIndex=d!==-1?d:a.minIndex),void 0!==a.options.ticks.max&&(d=b.indexOf(c,a.options.ticks.max),a.maxIndex=d!==-1?d:a.maxIndex),a.min=c[a.minIndex],a.max=c[a.maxIndex]},buildTicks:function(){var a=this,b=a.getLabels();a.ticks=0===a.minIndex&&a.maxIndex===b.length-1?b:b.slice(a.minIndex,a.maxIndex+1)},getLabelForIndex:function(a){return this.ticks[a]},getPixelForValue:function(a,b,c,d){var e=this,f=Math.max(e.maxIndex+1-e.minIndex-(e.options.gridLines.offsetGridLines?0:1),1);if(void 0!==a&&isNaN(b)){var g=e.getLabels(),h=g.indexOf(a);b=h!==-1?h:b}if(e.isHorizontal()){var i=e.width-(e.paddingLeft+e.paddingRight),j=i/f,k=j*(b-e.minIndex)+e.paddingLeft;return(e.options.gridLines.offsetGridLines&&d||e.maxIndex===e.minIndex&&d)&&(k+=j/2),e.left+Math.round(k)}var l=e.height-(e.paddingTop+e.paddingBottom),m=l/f,n=m*(b-e.minIndex)+e.paddingTop;return e.options.gridLines.offsetGridLines&&d&&(n+=m/2),e.top+Math.round(n)},getPixelForTick:function(a,b){return this.getPixelForValue(this.ticks[a],a+this.minIndex,null,b)},getValueForPixel:function(a){var b,c=this,d=Math.max(c.ticks.length-(c.options.gridLines.offsetGridLines?0:1),1),e=c.isHorizontal(),f=e?c.width-(c.paddingLeft+c.paddingRight):c.height-(c.paddingTop+c.paddingBottom),g=f/d;return a-=e?c.left:c.top,c.options.gridLines.offsetGridLines&&(a-=g/2),a-=e?c.paddingLeft:c.paddingTop,b=a<=0?0:Math.round(a/g)},getBasePixel:function(){return this.bottom}});a.scaleService.registerScaleType("category",d,c)}},{}],40:[function(a,b,c){"use strict";b.exports=function(a){var b=a.helpers,c={position:"left",ticks:{callback:function(a,c,d){var e=d.length>3?d[2]-d[1]:d[1]-d[0];Math.abs(e)>1&&a!==Math.floor(a)&&(e=a-Math.floor(a));var f=b.log10(Math.abs(e)),g="";if(0!==a){var h=-1*Math.floor(f);h=Math.max(Math.min(h,20),0),g=a.toFixed(h)}else g="0";return g}}},d=a.LinearScaleBase.extend({determineDataLimits:function(){function a(a){return h?a.xAxisID===c.id:a.yAxisID===c.id}var c=this,d=c.options,e=c.chart,f=e.data,g=f.datasets,h=c.isHorizontal();if(c.min=null,c.max=null,d.stacked){var i={},j=!1,k=!1;b.each(g,function(f,g){var h=e.getDatasetMeta(g);void 0===i[h.type]&&(i[h.type]={positiveValues:[],negativeValues:[]});var l=i[h.type].positiveValues,m=i[h.type].negativeValues;e.isDatasetVisible(g)&&a(h)&&b.each(f.data,function(a,b){var e=+c.getRightValue(a);isNaN(e)||h.data[b].hidden||(l[b]=l[b]||0,m[b]=m[b]||0,d.relativePoints?l[b]=100:e<0?(k=!0,m[b]+=e):(j=!0,l[b]+=e))})}),b.each(i,function(a){var d=a.positiveValues.concat(a.negativeValues),e=b.min(d),f=b.max(d);c.min=null===c.min?e:Math.min(c.min,e),c.max=null===c.max?f:Math.max(c.max,f)})}else b.each(g,function(d,f){var g=e.getDatasetMeta(f);e.isDatasetVisible(f)&&a(g)&&b.each(d.data,function(a,b){var d=+c.getRightValue(a);isNaN(d)||g.data[b].hidden||(null===c.min?c.min=d:dc.max&&(c.max=d))})});this.handleTickRangeOptions()},getTickLimit:function(){var c,d=this,e=d.options.ticks;if(d.isHorizontal())c=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(d.width/50));else{var f=b.getValueOrDefault(e.fontSize,a.defaults.global.defaultFontSize);c=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(d.height/(2*f)))}return c},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(a,b){return+this.getRightValue(this.chart.data.datasets[b].data[a])},getPixelForValue:function(a){var b,c,d=this,e=d.paddingLeft,f=d.paddingBottom,g=d.start,h=+d.getRightValue(a),i=d.end-g;return d.isHorizontal()?(c=d.width-(e+d.paddingRight),b=d.left+c/i*(h-g),Math.round(b+e)):(c=d.height-(d.paddingTop+f),b=d.bottom-f-c/i*(h-g),Math.round(b))},getValueForPixel:function(a){var b=this,c=b.isHorizontal(),d=b.paddingLeft,e=b.paddingBottom,f=c?b.width-(d+b.paddingRight):b.height-(b.paddingTop+e),g=(c?a-b.left-d:b.bottom-e-a)/f;return b.start+(b.end-b.start)*g},getPixelForTick:function(a){return this.getPixelForValue(this.ticksAsNumbers[a])}});a.scaleService.registerScaleType("linear",d,c)}},{}],41:[function(a,b,c){"use strict";b.exports=function(a){var b=a.helpers,c=b.noop;a.LinearScaleBase=a.Scale.extend({handleTickRangeOptions:function(){var a=this,c=a.options,d=c.ticks;if(d.beginAtZero){var e=b.sign(a.min),f=b.sign(a.max);e<0&&f<0?a.max=0:e>0&&f>0&&(a.min=0)}void 0!==d.min?a.min=d.min:void 0!==d.suggestedMin&&(a.min=Math.min(a.min,d.suggestedMin)),void 0!==d.max?a.max=d.max:void 0!==d.suggestedMax&&(a.max=Math.max(a.max,d.suggestedMax)),a.min===a.max&&(a.max++,d.beginAtZero||a.min--)},getTickLimit:c,handleDirectionalChanges:c,buildTicks:function(){var a=this,c=a.options,d=a.ticks=[],e=c.ticks,f=b.getValueOrDefault,g=a.getTickLimit();g=Math.max(2,g);var h,i=e.fixedStepSize&&e.fixedStepSize>0||e.stepSize&&e.stepSize>0;if(i)h=f(e.fixedStepSize,e.stepSize);else{var j=b.niceNum(a.max-a.min,!1);h=b.niceNum(j/(g-1),!0)}var k=Math.floor(a.min/h)*h,l=Math.ceil(a.max/h)*h,m=(l-k)/h;m=b.almostEquals(m,Math.round(m),h/1e3)?Math.round(m):Math.ceil(m),d.push(void 0!==e.min?e.min:k);for(var n=1;nc.max&&(c.max=d),0!==d&&(null===c.minNotZero||da.max&&(a.max=d))})}}),a.handleTickRangeOptions()},getTickLimit:function(){var a=this.options.ticks,d=b.getValueOrDefault(a.fontSize,c.defaultFontSize);return Math.min(a.maxTicksLimit?a.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*d)))},convertTicksToLabels:function(){var b=this;a.LinearScaleBase.prototype.convertTicksToLabels.call(b),b.pointLabels=b.chart.data.labels.map(b.options.pointLabels.callback,b)},getLabelForIndex:function(a,b){return+this.getRightValue(this.chart.data.datasets[b].data[a])},fit:function(){var a,d,e,f,g,h,i,j,k,l,m,n,o=this.options.pointLabels,p=b.getValueOrDefault(o.fontSize,c.defaultFontSize),q=b.getValueOrDefault(o.fontStyle,c.defaultFontStyle),r=b.getValueOrDefault(o.fontFamily,c.defaultFontFamily),s=b.fontString(p,q,r),t=b.min([this.height/2-p-5,this.width/2]),u=this.width,v=0;for(this.ctx.font=s,d=0;du&&(u=a.x+f,g=d),a.x-fu&&(u=a.x+e,g=d):a.x-e0&&c>0?b:0)},draw:function(){var a=this,d=a.options,e=d.gridLines,f=d.ticks,g=d.angleLines,h=d.pointLabels,i=b.getValueOrDefault;if(d.display){var j=a.ctx,k=i(f.fontSize,c.defaultFontSize),l=i(f.fontStyle,c.defaultFontStyle),m=i(f.fontFamily,c.defaultFontFamily),n=b.fontString(k,l,m);if(b.each(a.ticks,function(g,h){if(h>0||d.reverse){var l=a.getDistanceFromCenterForValue(a.ticksAsNumbers[h]),m=a.yCenter-l;if(e.display&&0!==h)if(j.strokeStyle=b.getValueAtIndexOrDefault(e.color,h-1),j.lineWidth=b.getValueAtIndexOrDefault(e.lineWidth,h-1),d.lineArc)j.beginPath(),j.arc(a.xCenter,a.yCenter,l,0,2*Math.PI),j.closePath(),j.stroke();else{j.beginPath();for(var o=0;o=0;t--){if(g.display){var u=a.getPointPosition(t,o);j.beginPath(),j.moveTo(a.xCenter,a.yCenter),j.lineTo(u.x,u.y),j.stroke(),j.closePath()}var v=a.getPointPosition(t,o+5),w=i(h.fontColor,c.defaultFontColor);j.font=s,j.fillStyle=w;var x=a.pointLabels,y=this.getIndexAngle(t)+Math.PI/2,z=360*y/(2*Math.PI)%360;0===z||180===z?j.textAlign="center":z<180?j.textAlign="left":j.textAlign="right",90===z||270===z?j.textBaseline="middle":z>270||z<90?j.textBaseline="bottom":j.textBaseline="top",j.fillText(x[t]?x[t]:"",v.x,v.y)}}}}});a.scaleService.registerScaleType("radialLinear",e,d)}},{}],44:[function(a,b,c){"use strict";var d=a(1);d="function"==typeof d?d:window.moment,b.exports=function(a){var b=a.helpers,c={units:[{name:"millisecond",steps:[1,2,5,10,20,50,100,250,500]},{name:"second",steps:[1,2,5,10,30]},{name:"minute",steps:[1,2,5,10,30]},{name:"hour",steps:[1,2,3,6,12]},{name:"day",steps:[1,2,5]},{name:"week",maxStep:4},{name:"month",maxStep:3},{name:"quarter",maxStep:4},{name:"year",maxStep:!1}]},e={position:"bottom",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,displayFormats:{millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm:ss a",hour:"MMM D, hA",day:"ll",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"}},ticks:{autoSkip:!1}},f=a.Scale.extend({initialize:function(){if(!d)throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");a.Scale.prototype.initialize.call(this)},getLabelMoment:function(a,b){return"undefined"!=typeof this.labelMoments[a]?this.labelMoments[a][b]:null},getMomentStartOf:function(a){var b=this;return"week"===b.options.time.unit&&b.options.time.isoWeekday!==!1?a.clone().startOf("isoWeek").isoWeekday(b.options.time.isoWeekday):a.clone().startOf(b.tickUnit)},determineDataLimits:function(){var a=this;a.labelMoments=[];var c=[];a.chart.data.labels&&a.chart.data.labels.length>0?(b.each(a.chart.data.labels,function(b){var d=a.parseTime(b);d.isValid()&&(a.options.time.round&&d.startOf(a.options.time.round),c.push(d))},a),a.firstTick=d.min.call(a,c),a.lastTick=d.max.call(a,c)):(a.firstTick=null,a.lastTick=null),b.each(a.chart.data.datasets,function(e,f){var g=[],h=a.chart.isDatasetVisible(f);"object"==typeof e.data[0]&&null!==e.data[0]?b.each(e.data,function(b){var c=a.parseTime(a.getRightValue(b));c.isValid()&&(a.options.time.round&&c.startOf(a.options.time.round),g.push(c),h&&(a.firstTick=null!==a.firstTick?d.min(a.firstTick,c):c,a.lastTick=null!==a.lastTick?d.max(a.lastTick,c):c))},a):g=c,a.labelMoments.push(g)},a),a.options.time.min&&(a.firstTick=a.parseTime(a.options.time.min)),a.options.time.max&&(a.lastTick=a.parseTime(a.options.time.max)),a.firstTick=(a.firstTick||d()).clone(),a.lastTick=(a.lastTick||d()).clone()},buildTicks:function(){var d=this;d.ctx.save();var e=b.getValueOrDefault(d.options.ticks.fontSize,a.defaults.global.defaultFontSize),f=b.getValueOrDefault(d.options.ticks.fontStyle,a.defaults.global.defaultFontStyle),g=b.getValueOrDefault(d.options.ticks.fontFamily,a.defaults.global.defaultFontFamily),h=b.fontString(e,f,g);if(d.ctx.font=h,d.ticks=[],d.unitScale=1,d.scaleSizeInUnits=0,d.options.time.unit)d.tickUnit=d.options.time.unit||"day",d.displayFormat=d.options.time.displayFormats[d.tickUnit],d.scaleSizeInUnits=d.lastTick.diff(d.firstTick,d.tickUnit,!0),d.unitScale=b.getValueOrDefault(d.options.time.unitStepSize,1);else{var i=d.isHorizontal()?d.width-(d.paddingLeft+d.paddingRight):d.height-(d.paddingTop+d.paddingBottom),j=d.tickFormatFunction(d.firstTick,0,[]),k=d.ctx.measureText(j).width,l=Math.cos(b.toRadians(d.options.ticks.maxRotation)),m=Math.sin(b.toRadians(d.options.ticks.maxRotation));k=k*l+e*m;var n=i/k;d.tickUnit="millisecond",d.scaleSizeInUnits=d.lastTick.diff(d.firstTick,d.tickUnit,!0),d.displayFormat=d.options.time.displayFormats[d.tickUnit];for(var o=0,p=c.units[o];o=Math.ceil(d.scaleSizeInUnits/n)){d.unitScale=b.getValueOrDefault(d.options.time.unitStepSize,p.steps[q]);break}break}if(p.maxStep===!1||Math.ceil(d.scaleSizeInUnits/n)=0&&(d.lastTick=u),d.scaleSizeInUnits=d.lastTick.diff(d.firstTick,d.tickUnit,!0)}d.options.time.displayFormat&&(d.displayFormat=d.options.time.displayFormat),d.ticks.push(d.firstTick.clone());for(var w=1;w<=d.scaleSizeInUnits;++w){var x=t.clone().add(w,d.tickUnit);if(d.options.time.max&&x.diff(d.lastTick,d.tickUnit,!0)>=0)break;w%d.unitScale===0&&d.ticks.push(x)}var y=d.ticks[d.ticks.length-1].diff(d.lastTick,d.tickUnit);0===y&&0!==d.scaleSizeInUnits||(d.options.time.max?(d.ticks.push(d.lastTick.clone()),d.scaleSizeInUnits=d.lastTick.diff(d.ticks[0],d.tickUnit,!0)):(d.ticks.push(d.lastTick.clone()),d.scaleSizeInUnits=d.lastTick.diff(d.firstTick,d.tickUnit,!0))),d.ctx.restore()},getLabelForIndex:function(a,b){var c=this,d=c.chart.data.labels&&ac?(b+.05)/(c+.05):(c+.05)/(b+.05)},level:function(a){var b=this.contrast(a);return b>=7.1?"AAA":b>=4.5?"AA":""},dark:function(){var a=this.values.rgb,b=(299*a[0]+587*a[1]+114*a[2])/1e3;return b<128},light:function(){return!this.dark()},negate:function(){for(var a=[],b=0;b<3;b++)a[b]=255-this.values.rgb[b];return this.setValues("rgb",a),this},lighten:function(a){var b=this.values.hsl;return b[2]+=b[2]*a,this.setValues("hsl",b),this},darken:function(a){var b=this.values.hsl;return b[2]-=b[2]*a,this.setValues("hsl",b),this},saturate:function(a){var b=this.values.hsl;return b[1]+=b[1]*a,this.setValues("hsl",b),this},desaturate:function(a){var b=this.values.hsl;return b[1]-=b[1]*a,this.setValues("hsl",b),this},whiten:function(a){var b=this.values.hwb;return b[1]+=b[1]*a,this.setValues("hwb",b),this},blacken:function(a){var b=this.values.hwb;return b[2]+=b[2]*a,this.setValues("hwb",b),this},greyscale:function(){var a=this.values.rgb,b=.3*a[0]+.59*a[1]+.11*a[2];return this.setValues("rgb",[b,b,b]),this},clearer:function(a){var b=this.values.alpha;return this.setValues("alpha",b-b*a),this},opaquer:function(a){var b=this.values.alpha;return this.setValues("alpha",b+b*a),this},rotate:function(a){var b=this.values.hsl,c=(b[0]+a)%360;return b[0]=c<0?360+c:c,this.setValues("hsl",b),this},mix:function(a,b){var c=this,d=a,e=void 0===b?.5:b,f=2*e-1,g=c.alpha()-d.alpha(),h=((f*g===-1?f:(f+g)/(1+f*g))+1)/2,i=1-h;return this.rgb(h*c.red()+i*d.red(),h*c.green()+i*d.green(),h*c.blue()+i*d.blue()).alpha(c.alpha()*e+d.alpha()*(1-e))},toJSON:function(){return this.rgb()},clone:function(){var a,b,c=new f,d=this.values,e=c.values;for(var g in d)d.hasOwnProperty(g)&&(a=d[g],b={}.toString.call(a),"[object Array]"===b?e[g]=a.slice(0):"[object Number]"===b?e[g]=a:console.error("unexpected color value:",a));return c}},f.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},f.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},f.prototype.getValues=function(a){for(var b=this.values,c={},d=0;d.04045?Math.pow((b+.055)/1.055,2.4):b/12.92,c=c>.04045?Math.pow((c+.055)/1.055,2.4):c/12.92,d=d>.04045?Math.pow((d+.055)/1.055,2.4):d/12.92;var e=.4124*b+.3576*c+.1805*d,f=.2126*b+.7152*c+.0722*d,g=.0193*b+.1192*c+.9505*d;return[100*e,100*f,100*g]}function l(a){var b,c,d,e=k(a),f=e[0],g=e[1],h=e[2];return f/=95.047,g/=100,h/=108.883,f=f>.008856?Math.pow(f,1/3):7.787*f+16/116,g=g>.008856?Math.pow(g,1/3):7.787*g+16/116,h=h>.008856?Math.pow(h,1/3):7.787*h+16/116,b=116*g-16,c=500*(f-g),d=200*(g-h),[b,c,d]}function m(a){return M(l(a))}function n(a){var b,c,d,e,f,g=a[0]/360,h=a[1]/100,i=a[2]/100;if(0==h)return f=255*i,[f,f,f];c=i<.5?i*(1+h):i+h-i*h,b=2*i-c,e=[0,0,0];for(var j=0;j<3;j++)d=g+1/3*-(j-1),d<0&&d++,d>1&&d--,f=6*d<1?b+6*(c-b)*d:2*d<1?c:3*d<2?b+(c-b)*(2/3-d)*6:b,e[j]=255*f;return e}function o(a){var b,c,d=a[0],e=a[1]/100,f=a[2]/100;return 0===f?[0,0,0]:(f*=2,e*=f<=1?f:2-f,c=(f+e)/2,b=2*e/(f+e),[d,100*b,100*c])}function p(a){return h(n(a))}function q(a){return i(n(a))}function s(a){return j(n(a))}function t(a){var b=a[0]/60,c=a[1]/100,d=a[2]/100,e=Math.floor(b)%6,f=b-Math.floor(b),g=255*d*(1-c),h=255*d*(1-c*f),i=255*d*(1-c*(1-f)),d=255*d;switch(e){case 0:return[d,i,g];case 1:return[h,d,g];case 2:return[g,d,i];case 3:return[g,h,d];case 4:return[i,g,d];case 5:return[d,g,h]}}function u(a){var b,c,d=a[0],e=a[1]/100,f=a[2]/100;return c=(2-e)*f,b=e*f,b/=c<=1?c:2-c,b=b||0,c/=2,[d,100*b,100*c]}function v(a){return h(t(a))}function w(a){return i(t(a))}function x(a){return j(t(a))}function y(a){var c,d,e,f,h=a[0]/360,i=a[1]/100,j=a[2]/100,k=i+j;switch(k>1&&(i/=k,j/=k),c=Math.floor(6*h),d=1-j,e=6*h-c,0!=(1&c)&&(e=1-e),f=i+e*(d-i),c){default:case 6:case 0:r=d,g=f,b=i;break;case 1:r=f,g=d,b=i;break;case 2:r=i,g=d,b=f;break;case 3:r=i,g=f,b=d;break;case 4:r=f,g=i,b=d;break;case 5:r=d,g=i,b=f}return[255*r,255*g,255*b]}function z(a){return e(y(a))}function A(a){return f(y(a))}function B(a){return i(y(a))}function C(a){return j(y(a))}function D(a){var b,c,d,e=a[0]/100,f=a[1]/100,g=a[2]/100,h=a[3]/100;return b=1-Math.min(1,e*(1-h)+h),c=1-Math.min(1,f*(1-h)+h),d=1-Math.min(1,g*(1-h)+h),[255*b,255*c,255*d]}function E(a){return e(D(a))}function F(a){return f(D(a))}function G(a){return h(D(a))}function H(a){return j(D(a))}function I(a){var b,c,d,e=a[0]/100,f=a[1]/100,g=a[2]/100;return b=3.2406*e+f*-1.5372+g*-.4986,c=e*-.9689+1.8758*f+.0415*g,d=.0557*e+f*-.204+1.057*g,b=b>.0031308?1.055*Math.pow(b,1/2.4)-.055:b=12.92*b,c=c>.0031308?1.055*Math.pow(c,1/2.4)-.055:c=12.92*c,d=d>.0031308?1.055*Math.pow(d,1/2.4)-.055:d=12.92*d,b=Math.min(Math.max(0,b),1),c=Math.min(Math.max(0,c),1),d=Math.min(Math.max(0,d),1),[255*b,255*c,255*d]}function J(a){var b,c,d,e=a[0],f=a[1],g=a[2];return e/=95.047,f/=100,g/=108.883,e=e>.008856?Math.pow(e,1/3):7.787*e+16/116,f=f>.008856?Math.pow(f,1/3):7.787*f+16/116,g=g>.008856?Math.pow(g,1/3):7.787*g+16/116,b=116*f-16,c=500*(e-f),d=200*(f-g),[b,c,d]}function K(a){return M(J(a))}function L(a){var b,c,d,e,f=a[0],g=a[1],h=a[2];return f<=8?(c=100*f/903.3,e=7.787*(c/100)+16/116):(c=100*Math.pow((f+16)/116,3),e=Math.pow(c/100,1/3)),b=b/95.047<=.008856?b=95.047*(g/500+e-16/116)/7.787:95.047*Math.pow(g/500+e,3),d=d/108.883<=.008859?d=108.883*(e-h/200-16/116)/7.787:108.883*Math.pow(e-h/200,3),[b,c,d]}function M(a){var b,c,d,e=a[0],f=a[1],g=a[2];return b=Math.atan2(g,f),c=360*b/2/Math.PI,c<0&&(c+=360),d=Math.sqrt(f*f+g*g),[e,d,c]}function N(a){return I(L(a))}function O(a){var b,c,d,e=a[0],f=a[1],g=a[2];return d=g/360*2*Math.PI,b=f*Math.cos(d),c=f*Math.sin(d),[e,b,c]}function P(a){return L(O(a))}function Q(a){return N(O(a))}function R(a){return Y[a]}function S(a){return e(R(a))}function T(a){return f(R(a))}function U(a){return h(R(a))}function V(a){return i(R(a))}function W(a){return l(R(a))}function X(a){return k(R(a))}c.exports={rgb2hsl:e,rgb2hsv:f,rgb2hwb:h,rgb2cmyk:i,rgb2keyword:j,rgb2xyz:k,rgb2lab:l,rgb2lch:m,hsl2rgb:n,hsl2hsv:o,hsl2hwb:p,hsl2cmyk:q,hsl2keyword:s,hsv2rgb:t,hsv2hsl:u,hsv2hwb:v,hsv2cmyk:w,hsv2keyword:x,hwb2rgb:y,hwb2hsl:z,hwb2hsv:A,hwb2cmyk:B,hwb2keyword:C,cmyk2rgb:D,cmyk2hsl:E,cmyk2hsv:F,cmyk2hwb:G,cmyk2keyword:H,keyword2rgb:R,keyword2hsl:S,keyword2hsv:T,keyword2hwb:U,keyword2cmyk:V,keyword2lab:W,keyword2xyz:X,xyz2rgb:I,xyz2lab:J,xyz2lch:K,lab2xyz:L,lab2rgb:N,lab2lch:M,lch2lab:O,lch2xyz:P,lch2rgb:Q};var Y={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Z={};for(var $ in Y)Z[JSON.stringify(Y[$])]=$},{}],4:[function(a,b,c){var d=a(3),e=function(){return new j};for(var f in d){e[f+"Raw"]=function(a){return function(b){return"number"==typeof b&&(b=Array.prototype.slice.call(arguments)),d[a](b)}}(f);var g=/(\w+)2(\w+)/.exec(f),h=g[1],i=g[2];e[h]=e[h]||{},e[h][i]=e[f]=function(a){return function(b){"number"==typeof b&&(b=Array.prototype.slice.call(arguments));var c=d[a](b);if("string"==typeof c||void 0===c)return c;for(var e=0;e0)for(c=0;c0?"future":"past"];return B(c)?c(b):c.replace(/%s/i,b)}function L(a,b){var c=a.toLowerCase();Jd[c]=Jd[c+"s"]=Jd[b]=a}function M(a){return"string"==typeof a?Jd[a]||Jd[a.toLowerCase()]:void 0}function N(a){var b,c,d={};for(c in a)l(a,c)&&(b=M(c),b&&(d[b]=a[c]));return d}function O(a,b){Kd[a]=b}function P(a){var b=[];for(var c in a)b.push({unit:c,priority:Kd[c]});return b.sort(function(a,b){return a.priority-b.priority}),b}function Q(b,c){return function(d){return null!=d?(S(this,b,d),a.updateOffset(this,c),this):R(this,b)}}function R(a,b){return a.isValid()?a._d["get"+(a._isUTC?"UTC":"")+b]():NaN}function S(a,b,c){a.isValid()&&a._d["set"+(a._isUTC?"UTC":"")+b](c)}function T(a){return a=M(a),B(this[a])?this[a]():this}function U(a,b){if("object"==typeof a){a=N(a);for(var c=P(a),d=0;d=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function W(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Od[a]=e),b&&(Od[b[0]]=function(){return V(e.apply(this,arguments),b[1],b[2])}),c&&(Od[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function X(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function Y(a){var b,c,d=a.match(Ld);for(b=0,c=d.length;b=0&&Md.test(a);)a=a.replace(Md,c),Md.lastIndex=0,d-=1;return a}function _(a,b,c){ee[a]=B(b)?b:function(a,d){return a&&c?c:b}}function aa(a,b){return l(ee,a)?ee[a](b._strict,b._locale):new RegExp(ba(a))}function ba(a){return ca(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function ca(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function da(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),i(b)&&(d=function(a,c){c[b]=w(a)}),c=0;c=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function va(a){var b=new Date(Date.UTC.apply(null,arguments));return a<100&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function wa(a,b,c){var d=7+b-c,e=(7+va(a,0,d).getUTCDay()-b)%7;return-e+d-1}function xa(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=wa(a,d,e),j=1+7*(b-1)+h+i;return j<=0?(f=a-1,g=ra(f)+j):j>ra(a)?(f=a+1,g=j-ra(a)):(f=a,g=j),{year:f,dayOfYear:g}}function ya(a,b,c){var d,e,f=wa(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return g<1?(e=a.year()-1,d=g+za(e,b,c)):g>za(a.year(),b,c)?(d=g-za(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function za(a,b,c){var d=wa(a,b,c),e=wa(a+1,b,c);return(ra(a)-d+e)/7}function Aa(a){return ya(a,this._week.dow,this._week.doy).week}function Ba(){return this._week.dow}function Ca(){return this._week.doy}function Da(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function Ea(a){var b=ya(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function Fa(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function Ga(a,b){return"string"==typeof a?b.weekdaysParse(a)%7||7:isNaN(a)?null:a}function Ha(a,b){return a?e(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]:e(this._weekdays)?this._weekdays:this._weekdays.standalone}function Ia(a){return a?this._weekdaysShort[a.day()]:this._weekdaysShort}function Ja(a){return a?this._weekdaysMin[a.day()]:this._weekdaysMin}function Ka(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;d<7;++d)f=n([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,"").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,"").toLocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,"").toLocaleLowerCase();return c?"dddd"===b?(e=pe.call(this._weekdaysParse,g),e!==-1?e:null):"ddd"===b?(e=pe.call(this._shortWeekdaysParse,g),e!==-1?e:null):(e=pe.call(this._minWeekdaysParse,g),e!==-1?e:null):"dddd"===b?(e=pe.call(this._weekdaysParse,g),e!==-1?e:(e=pe.call(this._shortWeekdaysParse,g),e!==-1?e:(e=pe.call(this._minWeekdaysParse,g),e!==-1?e:null))):"ddd"===b?(e=pe.call(this._shortWeekdaysParse,g),e!==-1?e:(e=pe.call(this._weekdaysParse,g),e!==-1?e:(e=pe.call(this._minWeekdaysParse,g),e!==-1?e:null))):(e=pe.call(this._minWeekdaysParse,g),e!==-1?e:(e=pe.call(this._weekdaysParse,g),e!==-1?e:(e=pe.call(this._shortWeekdaysParse,g),e!==-1?e:null)))}function La(a,b,c){var d,e,f;if(this._weekdaysParseExact)return Ka.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;d<7;d++){if(e=n([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i")),c&&"dddd"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&"ddd"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&"dd"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function Ma(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Fa(a,this.localeData()),this.add(a-b,"d")):b}function Na(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Oa(a){if(!this.isValid())return null!=a?this:NaN;if(null!=a){var b=Ga(a,this.localeData());return this.day(this.day()%7?b:b-7)}return this.day()||7}function Pa(a){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Sa.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):(l(this,"_weekdaysRegex")||(this._weekdaysRegex=Ae),this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex)}function Qa(a){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Sa.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(l(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Be),this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Ra(a){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Sa.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(l(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ce),this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Sa(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],h=[],i=[],j=[];for(b=0;b<7;b++)c=n([2e3,1]).day(b),d=this.weekdaysMin(c,""),e=this.weekdaysShort(c,""),f=this.weekdays(c,""),g.push(d),h.push(e),i.push(f),j.push(d),j.push(e),j.push(f);for(g.sort(a),h.sort(a),i.sort(a),j.sort(a),b=0;b<7;b++)h[b]=ca(h[b]),i[b]=ca(i[b]),j[b]=ca(j[b]);this._weekdaysRegex=new RegExp("^("+j.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+g.join("|")+")","i")}function Ta(){return this.hours()%12||12}function Ua(){return this.hours()||24}function Va(a,b){W(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Wa(a,b){return b._meridiemParse}function Xa(a){return"p"===(a+"").toLowerCase().charAt(0)}function Ya(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Za(a){return a?a.toLowerCase().replace("_","-"):a}function $a(a){for(var b,c,d,e,f=0;f0;){if(d=_a(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&x(e,c,!0)>=b-1)break;b--}f++}return null}function _a(a){var d=null;if(!He[a]&&"undefined"!=typeof c&&c&&c.exports)try{d=De._abbr,b("./locale/"+a),ab(d)}catch(e){}return He[a]}function ab(a,b){var c;return a&&(c=h(b)?db(a):bb(a,b),c&&(De=c)),De._abbr}function bb(a,b){if(null!==b){var c=Ge;if(b.abbr=a,null!=He[a])A("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),c=He[a]._config;else if(null!=b.parentLocale){if(null==He[b.parentLocale])return Ie[b.parentLocale]||(Ie[b.parentLocale]=[]),Ie[b.parentLocale].push({name:a,config:b}),null;c=He[b.parentLocale]._config}return He[a]=new E(D(c,b)),Ie[a]&&Ie[a].forEach(function(a){bb(a.name,a.config)}),ab(a),He[a]}return delete He[a],null}function cb(a,b){if(null!=b){var c,d=Ge;null!=He[a]&&(d=He[a]._config),b=D(d,b),c=new E(b),c.parentLocale=He[a],He[a]=c,ab(a)}else null!=He[a]&&(null!=He[a].parentLocale?He[a]=He[a].parentLocale:null!=He[a]&&delete He[a]);return He[a]}function db(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return De;if(!e(a)){if(b=_a(a))return b;a=[a]}return $a(a)}function eb(){return Cd(He)}function fb(a){var b,c=a._a;return c&&p(a).overflow===-2&&(b=c[he]<0||c[he]>11?he:c[ie]<1||c[ie]>ga(c[ge],c[he])?ie:c[je]<0||c[je]>24||24===c[je]&&(0!==c[ke]||0!==c[le]||0!==c[me])?je:c[ke]<0||c[ke]>59?ke:c[le]<0||c[le]>59?le:c[me]<0||c[me]>999?me:-1,p(a)._overflowDayOfYear&&(bie)&&(b=ie),p(a)._overflowWeeks&&b===-1&&(b=ne),p(a)._overflowWeekday&&b===-1&&(b=oe),p(a).overflow=b),a}function gb(a){var b,c,d,e,f,g,h=a._i,i=Je.exec(h)||Ke.exec(h);if(i){for(p(a).iso=!0,b=0,c=Me.length;b10?"YYYY ":"YY "),f="HH:mm"+(c[4]?":ss":""),c[1]){var l=new Date(c[2]),m=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][l.getDay()];if(c[1].substr(0,3)!==m)return p(a).weekdayMismatch=!0,void(a._isValid=!1)}switch(c[5].length){case 2:0===i?h=" +0000":(i=k.indexOf(c[5][1].toUpperCase())-12,h=(i<0?" -":" +")+(""+i).replace(/^-?/,"0").match(/..$/)[0]+"00");break;case 4:h=j[c[5]];break;default:h=j[" GMT"]}c[5]=h,a._i=c.splice(1).join(""),g=" ZZ",a._f=d+e+f+g,nb(a),p(a).rfc2822=!0}else a._isValid=!1}function ib(b){var c=Oe.exec(b._i);return null!==c?void(b._d=new Date((+c[1]))):(gb(b),void(b._isValid===!1&&(delete b._isValid,hb(b),b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b)))))}function jb(a,b,c){return null!=a?a:null!=b?b:c}function kb(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}function lb(a){var b,c,d,e,f=[];if(!a._d){for(d=kb(a),a._w&&null==a._a[ie]&&null==a._a[he]&&mb(a),null!=a._dayOfYear&&(e=jb(a._a[ge],d[ge]),(a._dayOfYear>ra(e)||0===a._dayOfYear)&&(p(a)._overflowDayOfYear=!0),c=va(e,0,a._dayOfYear),a._a[he]=c.getUTCMonth(),a._a[ie]=c.getUTCDate()),b=0;b<3&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;b<7;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[je]&&0===a._a[ke]&&0===a._a[le]&&0===a._a[me]&&(a._nextDay=!0,a._a[je]=0),a._d=(a._useUTC?va:ua).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[je]=24)}}function mb(a){var b,c,d,e,f,g,h,i;if(b=a._w,null!=b.GG||null!=b.W||null!=b.E)f=1,g=4,c=jb(b.GG,a._a[ge],ya(vb(),1,4).year),d=jb(b.W,1),e=jb(b.E,1),(e<1||e>7)&&(i=!0);else{f=a._locale._week.dow,g=a._locale._week.doy;var j=ya(vb(),f,g);c=jb(b.gg,a._a[ge],j.year),d=jb(b.w,j.week),null!=b.d?(e=b.d,(e<0||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f}d<1||d>za(c,f,g)?p(a)._overflowWeeks=!0:null!=i?p(a)._overflowWeekday=!0:(h=xa(c,d,e,f,g),a._a[ge]=h.year,a._dayOfYear=h.dayOfYear)}function nb(b){if(b._f===a.ISO_8601)return void gb(b);if(b._f===a.RFC_2822)return void hb(b);b._a=[],p(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=$(b._f,b._locale).match(Ld)||[],c=0;c0&&p(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),Od[f]?(d?p(b).empty=!1:p(b).unusedTokens.push(f),fa(f,d,b)):b._strict&&!d&&p(b).unusedTokens.push(f);p(b).charsLeftOver=i-j,h.length>0&&p(b).unusedInput.push(h),b._a[je]<=12&&p(b).bigHour===!0&&b._a[je]>0&&(p(b).bigHour=void 0),p(b).parsedDateParts=b._a.slice(0),p(b).meridiem=b._meridiem,b._a[je]=ob(b._locale,b._a[je],b._meridiem),lb(b),fb(b)}function ob(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&b<12&&(b+=12),d||12!==b||(b=0),b):b}function pb(a){var b,c,d,e,f;if(0===a._f.length)return p(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;ethis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Qb(){if(!h(this._isDSTShifted))return this._isDSTShifted;var a={};if(s(a,this),a=sb(a),a._a){var b=a._isUTC?n(a._a):vb(a._a);this._isDSTShifted=this.isValid()&&x(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Rb(){return!!this.isValid()&&!this._isUTC}function Sb(){return!!this.isValid()&&this._isUTC}function Tb(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Ub(a,b){var c,d,e,f=a,g=null;return Db(a)?f={ms:a._milliseconds,d:a._days,M:a._months}:i(a)?(f={},b?f[b]=a:f.milliseconds=a):(g=Ve.exec(a))?(c="-"===g[1]?-1:1,f={y:0,d:w(g[ie])*c,h:w(g[je])*c,m:w(g[ke])*c,s:w(g[le])*c,ms:w(Eb(1e3*g[me]))*c}):(g=We.exec(a))?(c="-"===g[1]?-1:1,f={y:Vb(g[2],c),M:Vb(g[3],c),w:Vb(g[4],c),d:Vb(g[5],c),h:Vb(g[6],c),m:Vb(g[7],c),s:Vb(g[8],c)}):null==f?f={}:"object"==typeof f&&("from"in f||"to"in f)&&(e=Xb(vb(f.from),vb(f.to)),f={},f.ms=e.milliseconds,f.M=e.months),d=new Cb(f),Db(a)&&l(a,"_locale")&&(d._locale=a._locale),d}function Vb(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function Wb(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function Xb(a,b){var c;return a.isValid()&&b.isValid()?(b=Hb(b,a),a.isBefore(b)?c=Wb(a,b):(c=Wb(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function Yb(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(A(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Ub(c,d),Zb(this,e,a),this}}function Zb(b,c,d,e){var f=c._milliseconds,g=Eb(c._days),h=Eb(c._months);b.isValid()&&(e=null==e||e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&S(b,"Date",R(b,"Date")+g*d),h&&la(b,R(b,"Month")+h*d),e&&a.updateOffset(b,g||h))}function $b(a,b){var c=a.diff(b,"days",!0);return c<-6?"sameElse":c<-1?"lastWeek":c<0?"lastDay":c<1?"sameDay":c<2?"nextDay":c<7?"nextWeek":"sameElse"}function _b(b,c){var d=b||vb(),e=Hb(d,this).startOf("day"),f=a.calendarFormat(this,e)||"sameElse",g=c&&(B(c[f])?c[f].call(this,d):c[f]);return this.format(g||this.localeData().calendar(f,this,vb(d)))}function ac(){return new t(this)}function bc(a,b){var c=u(a)?a:vb(a);return!(!this.isValid()||!c.isValid())&&(b=M(h(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()9999?Z(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):B(Date.prototype.toISOString)?this.toDate().toISOString():Z(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function lc(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var a="moment",b="";this.isLocal()||(a=0===this.utcOffset()?"moment.utc":"moment.parseZone",b="Z");var c="["+a+'("]',d=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",e="-MM-DD[T]HH:mm:ss.SSS",f=b+'[")]';return this.format(c+d+e+f)}function mc(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=Z(this,b);return this.localeData().postformat(c)}function nc(a,b){return this.isValid()&&(u(a)&&a.isValid()||vb(a).isValid())?Ub({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function oc(a){return this.from(vb(),a)}function pc(a,b){return this.isValid()&&(u(a)&&a.isValid()||vb(a).isValid())?Ub({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function qc(a){return this.to(vb(),a)}function rc(a){var b;return void 0===a?this._locale._abbr:(b=db(a),null!=b&&(this._locale=b),this)}function sc(){return this._locale}function tc(a){switch(a=M(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function uc(a){return a=M(a),void 0===a||"millisecond"===a?this:("date"===a&&(a="day"),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms"))}function vc(){return this._d.valueOf()-6e4*(this._offset||0)}function wc(){return Math.floor(this.valueOf()/1e3)}function xc(){return new Date(this.valueOf())}function yc(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function zc(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a.milliseconds()}}function Ac(){return this.isValid()?this.toISOString():null}function Bc(){return q(this)}function Cc(){return m({},p(this))}function Dc(){return p(this).overflow}function Ec(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Fc(a,b){W(0,[a,a.length],0,b)}function Gc(a){return Kc.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Hc(a){return Kc.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Ic(){return za(this.year(),1,4)}function Jc(){var a=this.localeData()._week;return za(this.year(),a.dow,a.doy)}function Kc(a,b,c,d,e){var f;return null==a?ya(this,d,e).year:(f=za(a,d,e),b>f&&(b=f),Lc.call(this,a,b,c,d,e))}function Lc(a,b,c,d,e){var f=xa(a,b,c,d,e),g=va(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Mc(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Nc(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function Oc(a,b){b[me]=w(1e3*("0."+a))}function Pc(){return this._isUTC?"UTC":""}function Qc(){return this._isUTC?"Coordinated Universal Time":""}function Rc(a){return vb(1e3*a)}function Sc(){return vb.apply(null,arguments).parseZone()}function Tc(a){return a}function Uc(a,b,c,d){var e=db(),f=n().set(d,b);return e[c](f,a)}function Vc(a,b,c){if(i(a)&&(b=a,a=void 0),a=a||"",null!=b)return Uc(a,b,c,"month");var d,e=[];for(d=0;d<12;d++)e[d]=Uc(a,d,c,"month");return e}function Wc(a,b,c,d){"boolean"==typeof a?(i(b)&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,i(b)&&(c=b,b=void 0),b=b||"");var e=db(),f=a?e._week.dow:0;if(null!=c)return Uc(b,(c+f)%7,d,"day");var g,h=[];for(g=0;g<7;g++)h[g]=Uc(b,(g+f)%7,d,"day");return h}function Xc(a,b){return Vc(a,b,"months")}function Yc(a,b){return Vc(a,b,"monthsShort")}function Zc(a,b,c){return Wc(a,b,c,"weekdays")}function $c(a,b,c){return Wc(a,b,c,"weekdaysShort")}function _c(a,b,c){return Wc(a,b,c,"weekdaysMin")}function ad(){var a=this._data;return this._milliseconds=ff(this._milliseconds),this._days=ff(this._days),this._months=ff(this._months),a.milliseconds=ff(a.milliseconds),a.seconds=ff(a.seconds),a.minutes=ff(a.minutes),a.hours=ff(a.hours),a.months=ff(a.months),a.years=ff(a.years),this}function bd(a,b,c,d){var e=Ub(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function cd(a,b){return bd(this,a,b,1)}function dd(a,b){return bd(this,a,b,-1)}function ed(a){return a<0?Math.floor(a):Math.ceil(a)}function fd(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||f<=0&&g<=0&&h<=0||(f+=864e5*ed(hd(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=v(f/1e3),i.seconds=a%60,b=v(a/60),i.minutes=b%60,c=v(b/60),i.hours=c%24,g+=v(c/24),e=v(gd(g)),h+=e,g-=ed(hd(e)),d=v(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function gd(a){return 4800*a/146097}function hd(a){return 146097*a/4800}function id(a){if(!this.isValid())return NaN;var b,c,d=this._milliseconds;if(a=M(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+gd(b),"month"===a?c:c/12;switch(b=this._days+Math.round(hd(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function jd(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12):NaN}function kd(a){return function(){return this.as(a)}}function ld(a){return a=M(a),this.isValid()?this[a+"s"]():NaN}function md(a){return function(){return this.isValid()?this._data[a]:NaN}}function nd(){return v(this.days()/7)}function od(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function pd(a,b,c){var d=Ub(a).abs(),e=wf(d.as("s")),f=wf(d.as("m")),g=wf(d.as("h")),h=wf(d.as("d")),i=wf(d.as("M")),j=wf(d.as("y")),k=e<=xf.ss&&["s",e]||e0,k[4]=c,od.apply(null,k)}function qd(a){return void 0===a?wf:"function"==typeof a&&(wf=a,!0)}function rd(a,b){return void 0!==xf[a]&&(void 0===b?xf[a]:(xf[a]=b,"s"===a&&(xf.ss=b-1),!0))}function sd(a){if(!this.isValid())return this.localeData().invalidDate();var b=this.localeData(),c=pd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function td(){if(!this.isValid())return this.localeData().invalidDate();var a,b,c,d=yf(this._milliseconds)/1e3,e=yf(this._days),f=yf(this._months);a=v(d/60),b=v(a/60),d%=60,a%=60,c=v(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(m<0?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"}var ud,vd;vd=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;d68?1900:2e3)};var ve=Q("FullYear",!0);W("w",["ww",2],"wo","week"),W("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),O("week",5),O("isoWeek",5),_("w",Ud),_("ww",Ud,Qd),_("W",Ud),_("WW",Ud,Qd),ea(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=w(a)});var we={dow:0,doy:6};W("d",0,"do","day"),W("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),W("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),W("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),W("e",0,0,"weekday"),W("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),O("day",11),O("weekday",11),O("isoWeekday",11),_("d",Ud),_("e",Ud),_("E",Ud),_("dd",function(a,b){return b.weekdaysMinRegex(a)}),_("ddd",function(a,b){return b.weekdaysShortRegex(a)}),_("dddd",function(a,b){return b.weekdaysRegex(a)}),ea(["dd","ddd","dddd"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:p(c).invalidWeekday=a; +}),ea(["d","e","E"],function(a,b,c,d){b[d]=w(a)});var xe="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),ye="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),ze="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ae=de,Be=de,Ce=de;W("H",["HH",2],0,"hour"),W("h",["hh",2],0,Ta),W("k",["kk",2],0,Ua),W("hmm",0,0,function(){return""+Ta.apply(this)+V(this.minutes(),2)}),W("hmmss",0,0,function(){return""+Ta.apply(this)+V(this.minutes(),2)+V(this.seconds(),2)}),W("Hmm",0,0,function(){return""+this.hours()+V(this.minutes(),2)}),W("Hmmss",0,0,function(){return""+this.hours()+V(this.minutes(),2)+V(this.seconds(),2)}),Va("a",!0),Va("A",!1),L("hour","h"),O("hour",13),_("a",Wa),_("A",Wa),_("H",Ud),_("h",Ud),_("k",Ud),_("HH",Ud,Qd),_("hh",Ud,Qd),_("kk",Ud,Qd),_("hmm",Vd),_("hmmss",Wd),_("Hmm",Vd),_("Hmmss",Wd),da(["H","HH"],je),da(["k","kk"],function(a,b,c){var d=w(a);b[je]=24===d?0:d}),da(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),da(["h","hh"],function(a,b,c){b[je]=w(a),p(c).bigHour=!0}),da("hmm",function(a,b,c){var d=a.length-2;b[je]=w(a.substr(0,d)),b[ke]=w(a.substr(d)),p(c).bigHour=!0}),da("hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[je]=w(a.substr(0,d)),b[ke]=w(a.substr(d,2)),b[le]=w(a.substr(e)),p(c).bigHour=!0}),da("Hmm",function(a,b,c){var d=a.length-2;b[je]=w(a.substr(0,d)),b[ke]=w(a.substr(d))}),da("Hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[je]=w(a.substr(0,d)),b[ke]=w(a.substr(d,2)),b[le]=w(a.substr(e))});var De,Ee=/[ap]\.?m?\.?/i,Fe=Q("Hours",!0),Ge={calendar:Dd,longDateFormat:Ed,invalidDate:Fd,ordinal:Gd,dayOfMonthOrdinalParse:Hd,relativeTime:Id,months:re,monthsShort:se,week:we,weekdays:xe,weekdaysMin:ze,weekdaysShort:ye,meridiemParse:Ee},He={},Ie={},Je=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ke=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Le=/Z|[+-]\d\d(?::?\d\d)?/,Me=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Ne=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Oe=/^\/?Date\((\-?\d+)/i,Pe=/^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/;a.createFromInputFallback=z("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),a.ISO_8601=function(){},a.RFC_2822=function(){};var Qe=z("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=vb.apply(null,arguments);return this.isValid()&&a.isValid()?athis?this:a:r()}),Se=function(){return Date.now?Date.now():+new Date},Te=["year","quarter","month","week","day","hour","minute","second","millisecond"];Fb("Z",":"),Fb("ZZ",""),_("Z",be),_("ZZ",be),da(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Gb(be,a)});var Ue=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var Ve=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,We=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Ub.fn=Cb.prototype,Ub.invalid=Bb;var Xe=Yb(1,"add"),Ye=Yb(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Ze=z("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});W(0,["gg",2],0,function(){return this.weekYear()%100}),W(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Fc("gggg","weekYear"),Fc("ggggg","weekYear"),Fc("GGGG","isoWeekYear"),Fc("GGGGG","isoWeekYear"),L("weekYear","gg"),L("isoWeekYear","GG"),O("weekYear",1),O("isoWeekYear",1),_("G",_d),_("g",_d),_("GG",Ud,Qd),_("gg",Ud,Qd),_("GGGG",Yd,Sd),_("gggg",Yd,Sd),_("GGGGG",Zd,Td),_("ggggg",Zd,Td),ea(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=w(a)}),ea(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),W("Q",0,"Qo","quarter"),L("quarter","Q"),O("quarter",7),_("Q",Pd),da("Q",function(a,b){b[he]=3*(w(a)-1)}),W("D",["DD",2],"Do","date"),L("date","D"),O("date",9),_("D",Ud),_("DD",Ud,Qd),_("Do",function(a,b){return a?b._dayOfMonthOrdinalParse||b._ordinalParse:b._dayOfMonthOrdinalParseLenient}),da(["D","DD"],ie),da("Do",function(a,b){b[ie]=w(a.match(Ud)[0],10)});var $e=Q("Date",!0);W("DDD",["DDDD",3],"DDDo","dayOfYear"),L("dayOfYear","DDD"),O("dayOfYear",4),_("DDD",Xd),_("DDDD",Rd),da(["DDD","DDDD"],function(a,b,c){c._dayOfYear=w(a)}),W("m",["mm",2],0,"minute"),L("minute","m"),O("minute",14),_("m",Ud),_("mm",Ud,Qd),da(["m","mm"],ke);var _e=Q("Minutes",!1);W("s",["ss",2],0,"second"),L("second","s"),O("second",15),_("s",Ud),_("ss",Ud,Qd),da(["s","ss"],le);var af=Q("Seconds",!1);W("S",0,0,function(){return~~(this.millisecond()/100)}),W(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),W(0,["SSS",3],0,"millisecond"),W(0,["SSSS",4],0,function(){return 10*this.millisecond()}),W(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),W(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),W(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),W(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),W(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),L("millisecond","ms"),O("millisecond",16),_("S",Xd,Pd),_("SS",Xd,Qd),_("SSS",Xd,Rd);var bf;for(bf="SSSS";bf.length<=9;bf+="S")_(bf,$d);for(bf="S";bf.length<=9;bf+="S")da(bf,Oc);var cf=Q("Milliseconds",!1);W("z",0,0,"zoneAbbr"),W("zz",0,0,"zoneName");var df=t.prototype;df.add=Xe,df.calendar=_b,df.clone=ac,df.diff=hc,df.endOf=uc,df.format=mc,df.from=nc,df.fromNow=oc,df.to=pc,df.toNow=qc,df.get=T,df.invalidAt=Dc,df.isAfter=bc,df.isBefore=cc,df.isBetween=dc,df.isSame=ec,df.isSameOrAfter=fc,df.isSameOrBefore=gc,df.isValid=Bc,df.lang=Ze,df.locale=rc,df.localeData=sc,df.max=Re,df.min=Qe,df.parsingFlags=Cc,df.set=U,df.startOf=tc,df.subtract=Ye,df.toArray=yc,df.toObject=zc,df.toDate=xc,df.toISOString=kc,df.inspect=lc,df.toJSON=Ac,df.toString=jc,df.unix=wc,df.valueOf=vc,df.creationData=Ec,df.year=ve,df.isLeapYear=ta,df.weekYear=Gc,df.isoWeekYear=Hc,df.quarter=df.quarters=Mc,df.month=ma,df.daysInMonth=na,df.week=df.weeks=Da,df.isoWeek=df.isoWeeks=Ea,df.weeksInYear=Jc,df.isoWeeksInYear=Ic,df.date=$e,df.day=df.days=Ma,df.weekday=Na,df.isoWeekday=Oa,df.dayOfYear=Nc,df.hour=df.hours=Fe,df.minute=df.minutes=_e,df.second=df.seconds=af,df.millisecond=df.milliseconds=cf,df.utcOffset=Jb,df.utc=Lb,df.local=Mb,df.parseZone=Nb,df.hasAlignedHourOffset=Ob,df.isDST=Pb,df.isLocal=Rb,df.isUtcOffset=Sb,df.isUtc=Tb,df.isUTC=Tb,df.zoneAbbr=Pc,df.zoneName=Qc,df.dates=z("dates accessor is deprecated. Use date instead.",$e),df.months=z("months accessor is deprecated. Use month instead",ma),df.years=z("years accessor is deprecated. Use year instead",ve),df.zone=z("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Kb),df.isDSTShifted=z("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Qb);var ef=E.prototype;ef.calendar=F,ef.longDateFormat=G,ef.invalidDate=H,ef.ordinal=I,ef.preparse=Tc,ef.postformat=Tc,ef.relativeTime=J,ef.pastFuture=K,ef.set=C,ef.months=ha,ef.monthsShort=ia,ef.monthsParse=ka,ef.monthsRegex=pa,ef.monthsShortRegex=oa,ef.week=Aa,ef.firstDayOfYear=Ca,ef.firstDayOfWeek=Ba,ef.weekdays=Ha,ef.weekdaysMin=Ja,ef.weekdaysShort=Ia,ef.weekdaysParse=La,ef.weekdaysRegex=Pa,ef.weekdaysShortRegex=Qa,ef.weekdaysMinRegex=Ra,ef.isPM=Xa,ef.meridiem=Ya,ab("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===w(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=z("moment.lang is deprecated. Use moment.locale instead.",ab),a.langData=z("moment.langData is deprecated. Use moment.localeData instead.",db);var ff=Math.abs,gf=kd("ms"),hf=kd("s"),jf=kd("m"),kf=kd("h"),lf=kd("d"),mf=kd("w"),nf=kd("M"),of=kd("y"),pf=md("milliseconds"),qf=md("seconds"),rf=md("minutes"),sf=md("hours"),tf=md("days"),uf=md("months"),vf=md("years"),wf=Math.round,xf={ss:44,s:45,m:45,h:22,d:26,M:11},yf=Math.abs,zf=Cb.prototype;return zf.isValid=Ab,zf.abs=ad,zf.add=cd,zf.subtract=dd,zf.as=id,zf.asMilliseconds=gf,zf.asSeconds=hf,zf.asMinutes=jf,zf.asHours=kf,zf.asDays=lf,zf.asWeeks=mf,zf.asMonths=nf,zf.asYears=of,zf.valueOf=jd,zf._bubble=fd,zf.get=ld,zf.milliseconds=pf,zf.seconds=qf,zf.minutes=rf,zf.hours=sf,zf.days=tf,zf.weeks=nd,zf.months=uf,zf.years=vf,zf.humanize=sd,zf.toISOString=td,zf.toString=td,zf.toJSON=td,zf.locale=rc,zf.localeData=sc,zf.toIsoString=z("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",td),zf.lang=Ze,W("X",0,0,"unix"),W("x",0,0,"valueOf"),_("x",_d),_("X",ce),da("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),da("x",function(a,b,c){c._d=new Date(w(a))}),a.version="2.18.1",d(vb),a.fn=df,a.min=xb,a.max=yb,a.now=Se,a.utc=n,a.unix=Rc,a.months=Xc,a.isDate=j,a.locale=ab,a.invalid=r,a.duration=Ub,a.isMoment=u,a.weekdays=Zc,a.parseZone=Sc,a.localeData=db,a.isDuration=Db,a.monthsShort=Yc,a.weekdaysMin=_c,a.defineLocale=bb,a.updateLocale=cb,a.locales=eb,a.weekdaysShort=$c,a.normalizeUnits=M,a.relativeTimeRounding=qd,a.relativeTimeThreshold=rd,a.calendarFormat=$b,a.prototype=df,a})},{}],7:[function(a,b,c){var d=a(29)();d.helpers=a(45),a(27)(d),d.defaults=a(25),d.Element=a(26),d.elements=a(40),d.Interaction=a(28),d.platform=a(48),a(31)(d),a(22)(d),a(23)(d),a(24)(d),a(30)(d),a(33)(d),a(32)(d),a(35)(d),a(54)(d),a(52)(d),a(53)(d),a(55)(d),a(56)(d),a(57)(d),a(15)(d),a(16)(d),a(17)(d),a(18)(d),a(19)(d),a(20)(d),a(21)(d),a(8)(d),a(9)(d),a(10)(d),a(11)(d),a(12)(d),a(13)(d),a(14)(d);var e=[];e.push(a(49)(d),a(50)(d),a(51)(d)),d.plugins.register(e),d.platform.initialize(),b.exports=d,"undefined"!=typeof window&&(window.Chart=d),d.canvasHelpers=d.helpers.canvas},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,35:35,40:40,45:45,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,8:8,9:9}],8:[function(a,b,c){"use strict";b.exports=function(a){a.Bar=function(b,c){return c.type="bar",new a(b,c)}}},{}],9:[function(a,b,c){"use strict";b.exports=function(a){a.Bubble=function(b,c){return c.type="bubble",new a(b,c)}}},{}],10:[function(a,b,c){"use strict";b.exports=function(a){a.Doughnut=function(b,c){return c.type="doughnut",new a(b,c)}}},{}],11:[function(a,b,c){"use strict";b.exports=function(a){a.Line=function(b,c){return c.type="line",new a(b,c)}}},{}],12:[function(a,b,c){"use strict";b.exports=function(a){a.PolarArea=function(b,c){return c.type="polarArea",new a(b,c)}}},{}],13:[function(a,b,c){"use strict";b.exports=function(a){a.Radar=function(b,c){return c.type="radar",new a(b,c)}}},{}],14:[function(a,b,c){"use strict";b.exports=function(a){a.Scatter=function(b,c){return c.type="scatter",new a(b,c)}}},{}],15:[function(a,b,c){"use strict";var d=a(25),e=a(40),f=a(45);d._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),d._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{position:"left",type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{callbacks:{title:function(a,b){var c="";return a.length>0&&(a[0].yLabel?c=a[0].yLabel:b.labels.length>0&&a[0].index=0&&e>0)&&(q+=e));return f=l.getPixelForValue(q),g=l.getPixelForValue(q+n),h=(g-f)/2,{size:h,base:f,head:g,center:g+h/2}},calculateBarIndexPixels:function(a,b,c){var d,e,g,h,i,j,k=this,l=c.scale.options,m=k.getStackIndex(a),n=c.pixels,o=n[b],p=n.length,q=c.start,r=c.end;return 1===p?(d=o>q?o-q:r-o,e=o0&&(d=(o-n[b-1])/2,b===p-1&&(e=d)),b');var c=a.data,d=c.datasets,e=c.labels;if(d.length)for(var f=0;f'),e[f]&&b.push(e[f]),b.push("");return b.push(""),b.join("")},legend:{labels:{generateLabels:function(a){var b=a.data;return b.labels.length&&b.datasets.length?b.labels.map(function(c,d){var e=a.getDatasetMeta(0),g=b.datasets[0],h=e.data[d],i=h&&h.custom||{},j=f.valueAtIndexOrDefault,k=a.options.elements.arc,l=i.backgroundColor?i.backgroundColor:j(g.backgroundColor,d,k.backgroundColor),m=i.borderColor?i.borderColor:j(g.borderColor,d,k.borderColor),n=i.borderWidth?i.borderWidth:j(g.borderWidth,d,k.borderWidth);return{text:c,fillStyle:l,strokeStyle:m,lineWidth:n,hidden:isNaN(g.data[d])||e.data[d].hidden,index:d}}):[]}},onClick:function(a,b){var c,d,e,f=b.index,g=this.chart;for(c=0,d=(g.data.datasets||[]).length;c=Math.PI?-1:o<-Math.PI?1:0);var p=o+n,q={x:Math.cos(o),y:Math.sin(o)},r={x:Math.cos(p),y:Math.sin(p)},s=o<=0&&p>=0||o<=2*Math.PI&&2*Math.PI<=p,t=o<=.5*Math.PI&&.5*Math.PI<=p||o<=2.5*Math.PI&&2.5*Math.PI<=p,u=o<=-Math.PI&&-Math.PI<=p||o<=Math.PI&&Math.PI<=p,v=o<=.5*-Math.PI&&.5*-Math.PI<=p||o<=1.5*Math.PI&&1.5*Math.PI<=p,w=m/100,x={x:u?-1:Math.min(q.x*(q.x<0?1:w),r.x*(r.x<0?1:w)),y:v?-1:Math.min(q.y*(q.y<0?1:w),r.y*(r.y<0?1:w))},y={x:s?1:Math.max(q.x*(q.x>0?1:w),r.x*(r.x>0?1:w)),y:t?1:Math.max(q.y*(q.y>0?1:w),r.y*(r.y>0?1:w))},z={width:.5*(y.x-x.x),height:.5*(y.y-x.y)};j=Math.min(h/z.width,i/z.height),k={x:(y.x+x.x)*-.5,y:(y.y+x.y)*-.5}}c.borderWidth=b.getMaxBorderWidth(l.data),c.outerRadius=Math.max((j-c.borderWidth)/2,0),c.innerRadius=Math.max(m?c.outerRadius/100*m:0,0),c.radiusLength=(c.outerRadius-c.innerRadius)/c.getVisibleDatasetCount(),c.offsetX=k.x*c.outerRadius,c.offsetY=k.y*c.outerRadius,l.total=b.calculateTotal(),b.outerRadius=c.outerRadius-c.radiusLength*b.getRingIndex(b.index),b.innerRadius=Math.max(b.outerRadius-c.radiusLength,0),f.each(l.data,function(c,d){b.updateElement(c,d,a)})},updateElement:function(a,b,c){var d=this,e=d.chart,g=e.chartArea,h=e.options,i=h.animation,j=(g.left+g.right)/2,k=(g.top+g.bottom)/2,l=h.rotation,m=h.rotation,n=d.getDataset(),o=c&&i.animateRotate?0:a.hidden?0:d.calculateCircumference(n.data[b])*(h.circumference/(2*Math.PI)),p=c&&i.animateScale?0:d.innerRadius,q=c&&i.animateScale?0:d.outerRadius,r=f.valueAtIndexOrDefault;f.extend(a,{_datasetIndex:d.index,_index:b,_model:{x:j+e.offsetX,y:k+e.offsetY,startAngle:l,endAngle:m,circumference:o,outerRadius:q,innerRadius:p,label:r(n.label,b,e.data.labels[b])}});var s=a._model;this.removeHoverStyle(a),c&&i.animateRotate||(0===b?s.startAngle=h.rotation:s.startAngle=d.getMeta().data[b-1]._model.endAngle,s.endAngle=s.startAngle+s.circumference),a.pivot()},removeHoverStyle:function(b){a.DatasetController.prototype.removeHoverStyle.call(this,b,this.chart.options.elements.arc)},calculateTotal:function(){var a,b=this.getDataset(),c=this.getMeta(),d=0;return f.each(c.data,function(c,e){a=b.data[e],isNaN(a)||c.hidden||(d+=Math.abs(a))}),d},calculateCircumference:function(a){var b=this.getMeta().total;return b>0&&!isNaN(a)?2*Math.PI*(a/b):0},getMaxBorderWidth:function(a){for(var b,c,d=0,e=this.index,f=a.length,g=0;gd?b:d,d=c>d?c:d;return d}})}},{25:25,40:40,45:45}],18:[function(a,b,c){"use strict";var d=a(25),e=a(40),f=a(45);d._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}}),b.exports=function(a){function b(a,b){return f.valueOrDefault(a.showLine,b.showLines)}a.controllers.line=a.DatasetController.extend({datasetElementType:e.Line,dataElementType:e.Point,update:function(a){var c,d,e,g=this,h=g.getMeta(),i=h.dataset,j=h.data||[],k=g.chart.options,l=k.elements.line,m=g.getScaleForId(h.yAxisID),n=g.getDataset(),o=b(n,k);for(o&&(e=i.custom||{},void 0!==n.tension&&void 0===n.lineTension&&(n.lineTension=n.tension),i._scale=m,i._datasetIndex=g.index,i._children=j,i._model={spanGaps:n.spanGaps?n.spanGaps:k.spanGaps,tension:e.tension?e.tension:f.valueOrDefault(n.lineTension,l.tension),backgroundColor:e.backgroundColor?e.backgroundColor:n.backgroundColor||l.backgroundColor,borderWidth:e.borderWidth?e.borderWidth:n.borderWidth||l.borderWidth,borderColor:e.borderColor?e.borderColor:n.borderColor||l.borderColor,borderCapStyle:e.borderCapStyle?e.borderCapStyle:n.borderCapStyle||l.borderCapStyle,borderDash:e.borderDash?e.borderDash:n.borderDash||l.borderDash,borderDashOffset:e.borderDashOffset?e.borderDashOffset:n.borderDashOffset||l.borderDashOffset,borderJoinStyle:e.borderJoinStyle?e.borderJoinStyle:n.borderJoinStyle||l.borderJoinStyle,fill:e.fill?e.fill:void 0!==n.fill?n.fill:l.fill,steppedLine:e.steppedLine?e.steppedLine:f.valueOrDefault(n.steppedLine,l.stepped),cubicInterpolationMode:e.cubicInterpolationMode?e.cubicInterpolationMode:f.valueOrDefault(n.cubicInterpolationMode,l.cubicInterpolationMode)},i.pivot()),c=0,d=j.length;c');var c=a.data,d=c.datasets,e=c.labels;if(d.length)for(var f=0;f'),e[f]&&b.push(e[f]),b.push("");return b.push(""),b.join("")},legend:{labels:{generateLabels:function(a){var b=a.data;return b.labels.length&&b.datasets.length?b.labels.map(function(c,d){var e=a.getDatasetMeta(0),g=b.datasets[0],h=e.data[d],i=h.custom||{},j=f.valueAtIndexOrDefault,k=a.options.elements.arc,l=i.backgroundColor?i.backgroundColor:j(g.backgroundColor,d,k.backgroundColor),m=i.borderColor?i.borderColor:j(g.borderColor,d,k.borderColor),n=i.borderWidth?i.borderWidth:j(g.borderWidth,d,k.borderWidth);return{text:c,fillStyle:l,strokeStyle:m,lineWidth:n,hidden:isNaN(g.data[d])||e.data[d].hidden,index:d}}):[]}},onClick:function(a,b){var c,d,e,f=b.index,g=this.chart;for(c=0,d=(g.data.datasets||[]).length;c0&&!isNaN(a)?2*Math.PI/b:0}})}},{25:25,40:40,45:45}],20:[function(a,b,c){"use strict";var d=a(25),e=a(40),f=a(45);d._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}}),b.exports=function(a){a.controllers.radar=a.DatasetController.extend({datasetElementType:e.Line,dataElementType:e.Point,linkScales:f.noop,update:function(a){var b=this,c=b.getMeta(),d=c.dataset,e=c.data,g=d.custom||{},h=b.getDataset(),i=b.chart.options.elements.line,j=b.chart.scale;void 0!==h.tension&&void 0===h.lineTension&&(h.lineTension=h.tension),f.extend(c.dataset,{_datasetIndex:b.index,_scale:j,_children:e,_loop:!0,_model:{tension:g.tension?g.tension:f.valueOrDefault(h.lineTension,i.tension),backgroundColor:g.backgroundColor?g.backgroundColor:h.backgroundColor||i.backgroundColor,borderWidth:g.borderWidth?g.borderWidth:h.borderWidth||i.borderWidth,borderColor:g.borderColor?g.borderColor:h.borderColor||i.borderColor,fill:g.fill?g.fill:void 0!==h.fill?h.fill:i.fill,borderCapStyle:g.borderCapStyle?g.borderCapStyle:h.borderCapStyle||i.borderCapStyle,borderDash:g.borderDash?g.borderDash:h.borderDash||i.borderDash,borderDashOffset:g.borderDashOffset?g.borderDashOffset:h.borderDashOffset||i.borderDashOffset,borderJoinStyle:g.borderJoinStyle?g.borderJoinStyle:h.borderJoinStyle||i.borderJoinStyle}}),c.dataset.pivot(),f.each(e,function(c,d){b.updateElement(c,d,a)},b),b.updateBezierControlPoints()},updateElement:function(a,b,c){var d=this,e=a.custom||{},g=d.getDataset(),h=d.chart.scale,i=d.chart.options.elements.point,j=h.getPointPositionForValue(b,g.data[b]);void 0!==g.radius&&void 0===g.pointRadius&&(g.pointRadius=g.radius),void 0!==g.hitRadius&&void 0===g.pointHitRadius&&(g.pointHitRadius=g.hitRadius),f.extend(a,{_datasetIndex:d.index,_index:b,_scale:h,_model:{x:c?h.xCenter:j.x,y:c?h.yCenter:j.y,tension:e.tension?e.tension:f.valueOrDefault(g.lineTension,d.chart.options.elements.line.tension),radius:e.radius?e.radius:f.valueAtIndexOrDefault(g.pointRadius,b,i.radius),backgroundColor:e.backgroundColor?e.backgroundColor:f.valueAtIndexOrDefault(g.pointBackgroundColor,b,i.backgroundColor),borderColor:e.borderColor?e.borderColor:f.valueAtIndexOrDefault(g.pointBorderColor,b,i.borderColor),borderWidth:e.borderWidth?e.borderWidth:f.valueAtIndexOrDefault(g.pointBorderWidth,b,i.borderWidth),pointStyle:e.pointStyle?e.pointStyle:f.valueAtIndexOrDefault(g.pointStyle,b,i.pointStyle),hitRadius:e.hitRadius?e.hitRadius:f.valueAtIndexOrDefault(g.pointHitRadius,b,i.hitRadius)}}),a._model.skip=e.skip?e.skip:isNaN(a._model.x)||isNaN(a._model.y)},updateBezierControlPoints:function(){var a=this.chart.chartArea,b=this.getMeta();f.each(b.data,function(c,d){var e=c._model,g=f.splineCurve(f.previousItem(b.data,d,!0)._model,e,f.nextItem(b.data,d,!0)._model,e.tension);e.controlPointPreviousX=Math.max(Math.min(g.previous.x,a.right),a.left),e.controlPointPreviousY=Math.max(Math.min(g.previous.y,a.bottom),a.top),e.controlPointNextX=Math.max(Math.min(g.next.x,a.right),a.left),e.controlPointNextY=Math.max(Math.min(g.next.y,a.bottom),a.top),c.pivot()})},setHoverStyle:function(a){var b=this.chart.data.datasets[a._datasetIndex],c=a.custom||{},d=a._index,e=a._model;e.radius=c.hoverRadius?c.hoverRadius:f.valueAtIndexOrDefault(b.pointHoverRadius,d,this.chart.options.elements.point.hoverRadius),e.backgroundColor=c.hoverBackgroundColor?c.hoverBackgroundColor:f.valueAtIndexOrDefault(b.pointHoverBackgroundColor,d,f.getHoverColor(e.backgroundColor)),e.borderColor=c.hoverBorderColor?c.hoverBorderColor:f.valueAtIndexOrDefault(b.pointHoverBorderColor,d,f.getHoverColor(e.borderColor)),e.borderWidth=c.hoverBorderWidth?c.hoverBorderWidth:f.valueAtIndexOrDefault(b.pointHoverBorderWidth,d,e.borderWidth)},removeHoverStyle:function(a){var b=this.chart.data.datasets[a._datasetIndex],c=a.custom||{},d=a._index,e=a._model,g=this.chart.options.elements.point;e.radius=c.radius?c.radius:f.valueAtIndexOrDefault(b.pointRadius,d,g.radius),e.backgroundColor=c.backgroundColor?c.backgroundColor:f.valueAtIndexOrDefault(b.pointBackgroundColor,d,g.backgroundColor),e.borderColor=c.borderColor?c.borderColor:f.valueAtIndexOrDefault(b.pointBorderColor,d,g.borderColor),e.borderWidth=c.borderWidth?c.borderWidth:f.valueAtIndexOrDefault(b.pointBorderWidth,d,g.borderWidth)}})}},{25:25,40:40,45:45}],21:[function(a,b,c){"use strict";var d=a(25);d._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(a){return"("+a.xLabel+", "+a.yLabel+")"}}}}),b.exports=function(a){a.controllers.scatter=a.controllers.line}},{25:25}],22:[function(a,b,c){"use strict";var d=a(25),e=a(26),f=a(45);d._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:f.noop,onComplete:f.noop}}),b.exports=function(a){a.Animation=e.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),a.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(a,b,c,d){var e,f,g=this.animations;for(b.chart=a,d||(a.animating=!0),e=0,f=g.length;e1&&(c=Math.floor(a.dropFrames),a.dropFrames=a.dropFrames%1),a.advance(1+c);var d=Date.now();a.dropFrames+=(d-b)/a.frameDuration,a.animations.length>0&&a.requestAnimationFrame()},advance:function(a){for(var b,c,d=this.animations,e=0;e=b.numSteps?(f.callback(b.onAnimationComplete,[b],c),c.animating=!1,d.splice(e,1)):++e}},Object.defineProperty(a.Animation.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(a.Animation.prototype,"chartInstance",{get:function(){return this.chart},set:function(a){this.chart=a}})}},{25:25,26:26,45:45}],23:[function(a,b,c){"use strict";var d=a(25),e=a(45),f=a(28),g=a(48);b.exports=function(a){function b(a){a=a||{};var b=a.data=a.data||{};return b.datasets=b.datasets||[],b.labels=b.labels||[],a.options=e.configMerge(d.global,d[a.type],a.options||{}),a}function c(a){var b=a.options;b.scale?a.scale.options=b.scale:b.scales&&b.scales.xAxes.concat(b.scales.yAxes).forEach(function(b){a.scales[b.id].options=b}),a.tooltip._options=b.tooltips}function h(a){return"top"===a||"bottom"===a}var i=a.plugins;a.types={},a.instances={},a.controllers={},e.extend(a.prototype,{construct:function(c,d){var f=this;d=b(d);var h=g.acquireContext(c,d),i=h&&h.canvas,j=i&&i.height,k=i&&i.width;return f.id=e.uid(),f.ctx=h,f.canvas=i,f.config=d,f.width=k,f.height=j,f.aspectRatio=j?k/j:null,f.options=d.options,f._bufferedRender=!1,f.chart=f,f.controller=f,a.instances[f.id]=f,Object.defineProperty(f,"data",{get:function(){return f.config.data},set:function(a){f.config.data=a}}),h&&i?(f.initialize(),void f.update()):void console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var a=this;return i.notify(a,"beforeInit"),e.retinaScale(a,a.options.devicePixelRatio),a.bindEvents(),a.options.responsive&&a.resize(!0),a.ensureScalesHaveIDs(),a.buildScales(),a.initToolTip(),i.notify(a,"afterInit"),a},clear:function(){return e.canvas.clear(this),this},stop:function(){return a.animationService.cancelAnimation(this),this},resize:function(a){var b=this,c=b.options,d=b.canvas,f=c.maintainAspectRatio&&b.aspectRatio||null,g=Math.max(0,Math.floor(e.getMaximumWidth(d))),h=Math.max(0,Math.floor(f?g/f:e.getMaximumHeight(d)));if((b.width!==g||b.height!==h)&&(d.width=b.width=g,d.height=b.height=h,d.style.width=g+"px",d.style.height=h+"px",e.retinaScale(b,c.devicePixelRatio),!a)){var j={width:g,height:h};i.notify(b,"resize",[j]),b.options.onResize&&b.options.onResize(b,j),b.stop(),b.update(b.options.responsiveAnimationDuration)}},ensureScalesHaveIDs:function(){var a=this.options,b=a.scales||{},c=a.scale;e.each(b.xAxes,function(a,b){a.id=a.id||"x-axis-"+b}),e.each(b.yAxes,function(a,b){a.id=a.id||"y-axis-"+b}),c&&(c.id=c.id||"scale")},buildScales:function(){var b=this,c=b.options,d=b.scales={},f=[];c.scales&&(f=f.concat((c.scales.xAxes||[]).map(function(a){return{options:a,dtype:"category",dposition:"bottom"}}),(c.scales.yAxes||[]).map(function(a){return{options:a,dtype:"linear",dposition:"left"}}))),c.scale&&f.push({options:c.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),e.each(f,function(c){var f=c.options,g=e.valueOrDefault(f.type,c.dtype),i=a.scaleService.getScaleConstructor(g);if(i){h(f.position)!==h(c.dposition)&&(f.position=c.dposition);var j=new i({id:f.id,options:f,ctx:b.ctx,chart:b});d[j.id]=j,j.mergeTicksOptions(),c.isDefault&&(b.scale=j)}}),a.scaleService.addScalesToLayout(this)},buildOrUpdateControllers:function(){var b=this,c=[],d=[];return e.each(b.data.datasets,function(e,f){var g=b.getDatasetMeta(f),h=e.type||b.config.type;if(g.type&&g.type!==h&&(b.destroyDatasetMeta(f),g=b.getDatasetMeta(f)),g.type=h,c.push(g.type),g.controller)g.controller.updateIndex(f);else{var i=a.controllers[g.type];if(void 0===i)throw new Error('"'+g.type+'" is not a chart type.');g.controller=new i(b,f),d.push(g.controller)}},b),d},resetElements:function(){var a=this;e.each(a.data.datasets,function(b,c){a.getDatasetMeta(c).controller.reset()},a)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(a){var b=this;if(a&&"object"==typeof a||(a={duration:a,lazy:arguments[1]}),c(b),i.notify(b,"beforeUpdate")!==!1){b.tooltip._data=b.data;var d=b.buildOrUpdateControllers();e.each(b.data.datasets,function(a,c){b.getDatasetMeta(c).controller.buildOrUpdateElements()},b),b.updateLayout(),e.each(d,function(a){a.reset()}),b.updateDatasets(),i.notify(b,"afterUpdate"),b._bufferedRender?b._bufferedRequest={duration:a.duration,easing:a.easing,lazy:a.lazy}:b.render(a)}},updateLayout:function(){var b=this;i.notify(b,"beforeLayout")!==!1&&(a.layoutService.update(this,this.width,this.height),i.notify(b,"afterScaleUpdate"),i.notify(b,"afterLayout"))},updateDatasets:function(){var a=this;if(i.notify(a,"beforeDatasetsUpdate")!==!1){for(var b=0,c=a.data.datasets.length;b=0;--c)b.isDatasetVisible(c)&&b.drawDataset(c,a);i.notify(b,"afterDatasetsDraw",[a])}},drawDataset:function(a,b){var c=this,d=c.getDatasetMeta(a),e={meta:d,index:a,easingValue:b};i.notify(c,"beforeDatasetDraw",[e])!==!1&&(d.controller.draw(b),i.notify(c,"afterDatasetDraw",[e]))},getElementAtEvent:function(a){return f.modes.single(this,a)},getElementsAtEvent:function(a){return f.modes.label(this,a,{intersect:!0})},getElementsAtXAxis:function(a){return f.modes["x-axis"](this,a,{intersect:!0})},getElementsAtEventForMode:function(a,b,c){var d=f.modes[b];return"function"==typeof d?d(this,a,c):[]},getDatasetAtEvent:function(a){return f.modes.dataset(this,a,{intersect:!0})},getDatasetMeta:function(a){var b=this,c=b.data.datasets[a];c._meta||(c._meta={});var d=c._meta[b.id];return d||(d=c._meta[b.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),d},getVisibleDatasetCount:function(){for(var a=0,b=0,c=this.data.datasets.length;b0||(e.forEach(function(b){delete a[b]}),delete a._chartjs)}}var e=["push","pop","shift","splice","unshift"];a.DatasetController=function(a,b){this.initialize(a,b)},d.extend(a.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(a,b){var c=this;c.chart=a,c.index=b,c.linkScales(),c.addElements()},updateIndex:function(a){this.index=a},linkScales:function(){var a=this,b=a.getMeta(),c=a.getDataset();null===b.xAxisID&&(b.xAxisID=c.xAxisID||a.chart.options.scales.xAxes[0].id),null===b.yAxisID&&(b.yAxisID=c.yAxisID||a.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(a){return this.chart.scales[a]},reset:function(){this.update(!0)},destroy:function(){this._data&&c(this._data,this)},createMetaDataset:function(){var a=this,b=a.datasetElementType;return b&&new b({_chart:a.chart,_datasetIndex:a.index})},createMetaData:function(a){var b=this,c=b.dataElementType;return c&&new c({_chart:b.chart,_datasetIndex:b.index,_index:a})},addElements:function(){var a,b,c=this,d=c.getMeta(),e=c.getDataset().data||[],f=d.data;for(a=0,b=e.length;ad&&a.insertElements(d,e-d)},insertElements:function(a,b){for(var c=0;c=c[b].length&&c[b].push({}),!c[b][g].type||i.type&&i.type!==c[b][g].type?f.merge(c[b][g],[a.scaleService.getScaleDefaults(h),i]):f.merge(c[b][g],i)}else f._merger(b,c,d,e)}})},f.where=function(a,b){if(f.isArray(a)&&Array.prototype.filter)return a.filter(b);var c=[];return f.each(a,function(a){b(a)&&c.push(a)}),c},f.findIndex=Array.prototype.findIndex?function(a,b,c){return a.findIndex(b,c)}:function(a,b,c){c=void 0===c?a:c;for(var d=0,e=a.length;d=0;d--){var e=a[d];if(b(e))return e}},f.inherits=function(a){var b=this,c=a&&a.hasOwnProperty("constructor")?a.constructor:function(){return b.apply(this,arguments)},d=function(){this.constructor=c};return d.prototype=b.prototype,c.prototype=new d,c.extend=f.inherits,a&&f.extend(c.prototype,a),c.__super__=b.prototype,c},f.isNumber=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},f.almostEquals=function(a,b,c){return Math.abs(a-b)a},f.max=function(a){return a.reduce(function(a,b){return isNaN(b)?a:Math.max(a,b)},Number.NEGATIVE_INFINITY)},f.min=function(a){return a.reduce(function(a,b){return isNaN(b)?a:Math.min(a,b)},Number.POSITIVE_INFINITY)},f.sign=Math.sign?function(a){return Math.sign(a)}:function(a){return a=+a,0===a||isNaN(a)?a:a>0?1:-1},f.log10=Math.log10?function(a){return Math.log10(a)}:function(a){return Math.log(a)/Math.LN10},f.toRadians=function(a){return a*(Math.PI/180)},f.toDegrees=function(a){return a*(180/Math.PI)},f.getAngleFromPoint=function(a,b){var c=b.x-a.x,d=b.y-a.y,e=Math.sqrt(c*c+d*d),f=Math.atan2(d,c);return f<-.5*Math.PI&&(f+=2*Math.PI),{angle:f,distance:e}},f.distanceBetweenPoints=function(a,b){return Math.sqrt(Math.pow(b.x-a.x,2)+Math.pow(b.y-a.y,2))},f.aliasPixel=function(a){return a%2===0?0:.5},f.splineCurve=function(a,b,c,d){var e=a.skip?b:a,f=b,g=c.skip?b:c,h=Math.sqrt(Math.pow(f.x-e.x,2)+Math.pow(f.y-e.y,2)),i=Math.sqrt(Math.pow(g.x-f.x,2)+Math.pow(g.y-f.y,2)),j=h/(h+i),k=i/(h+i);j=isNaN(j)?0:j,k=isNaN(k)?0:k;var l=d*j,m=d*k;return{previous:{x:f.x-l*(g.x-e.x),y:f.y-l*(g.y-e.y)},next:{x:f.x+m*(g.x-e.x),y:f.y+m*(g.y-e.y)}}},f.EPSILON=Number.EPSILON||1e-14,f.splineCurveMonotone=function(a){var b,c,d,e,g=(a||[]).map(function(a){return{model:a._model,deltaK:0,mK:0}}),h=g.length;for(b=0;b0?g[b-1]:null,e=b0?g[b-1]:null,e=b=a.length-1?a[0]:a[b+1]:b>=a.length-1?a[a.length-1]:a[b+1]},f.previousItem=function(a,b,c){return c?b<=0?a[a.length-1]:a[b-1]:b<=0?a[0]:a[b-1]},f.niceNum=function(a,b){var c,d=Math.floor(f.log10(a)),e=a/Math.pow(10,d);return c=b?e<1.5?1:e<3?2:e<7?5:10:e<=1?1:e<=2?2:e<=5?5:10,c*Math.pow(10,d)},f.requestAnimFrame=function(){return"undefined"==typeof window?function(a){a()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){return window.setTimeout(a,1e3/60)}}(),f.getRelativePosition=function(a,b){var c,d,e=a.originalEvent||a,g=a.currentTarget||a.srcElement,h=g.getBoundingClientRect(),i=e.touches;i&&i.length>0?(c=i[0].clientX,d=i[0].clientY):(c=e.clientX,d=e.clientY);var j=parseFloat(f.getStyle(g,"padding-left")),k=parseFloat(f.getStyle(g,"padding-top")),l=parseFloat(f.getStyle(g,"padding-right")),m=parseFloat(f.getStyle(g,"padding-bottom")),n=h.right-h.left-j-l,o=h.bottom-h.top-k-m;return c=Math.round((c-h.left-j)/n*g.width/b.currentDevicePixelRatio),d=Math.round((d-h.top-k)/o*g.height/b.currentDevicePixelRatio),{x:c,y:d}},f.getConstraintWidth=function(a){return g(a,"max-width","clientWidth")},f.getConstraintHeight=function(a){return g(a,"max-height","clientHeight")},f.getMaximumWidth=function(a){var b=a.parentNode;if(!b)return a.clientWidth;var c=parseInt(f.getStyle(b,"padding-left"),10),d=parseInt(f.getStyle(b,"padding-right"),10),e=b.clientWidth-c-d,g=f.getConstraintWidth(a);return isNaN(g)?e:Math.min(e,g)},f.getMaximumHeight=function(a){var b=a.parentNode;if(!b)return a.clientHeight;var c=parseInt(f.getStyle(b,"padding-top"),10),d=parseInt(f.getStyle(b,"padding-bottom"),10),e=b.clientHeight-c-d,g=f.getConstraintHeight(a);return isNaN(g)?e:Math.min(e,g)},f.getStyle=function(a,b){return a.currentStyle?a.currentStyle[b]:document.defaultView.getComputedStyle(a,null).getPropertyValue(b)},f.retinaScale=function(a,b){var c=a.currentDevicePixelRatio=b||window.devicePixelRatio||1;if(1!==c){var d=a.canvas,e=a.height,f=a.width;d.height=e*c,d.width=f*c,a.ctx.scale(c,c),d.style.height=e+"px",d.style.width=f+"px"}},f.fontString=function(a,b,c){return b+" "+a+"px "+c},f.longestText=function(a,b,c,d){d=d||{};var e=d.data=d.data||{},g=d.garbageCollect=d.garbageCollect||[];d.font!==b&&(e=d.data={},g=d.garbageCollect=[],d.font=b),a.font=b;var h=0;f.each(c,function(b){void 0!==b&&null!==b&&f.isArray(b)!==!0?h=f.measureText(a,e,g,h,b):f.isArray(b)&&f.each(b,function(b){void 0===b||null===b||f.isArray(b)||(h=f.measureText(a,e,g,h,b))})});var i=g.length/2;if(i>c.length){for(var j=0;jd&&(d=f),d},f.numberOfLabelLines=function(a){var b=1;return f.each(a,function(a){f.isArray(a)&&a.length>b&&(b=a.length)}),b},f.color=d?function(a){return a instanceof CanvasGradient&&(a=e.global.defaultColor),d(a)}:function(a){return console.error("Color.js not found!"),a},f.getHoverColor=function(a){return a instanceof CanvasPattern?a:f.color(a).saturate(.5).darken(.1).rgbString()}}},{2:2,25:25,45:45}],28:[function(a,b,c){"use strict";function d(a,b){return a["native"]?{x:a.x,y:a.y}:j.getRelativePosition(a,b)}function e(a,b){var c,d,e,f,g,h=a.data.datasets;for(d=0,f=h.length;d0&&(j=a.getDatasetMeta(j[0]._datasetIndex).data),j},"x-axis":function(a,b){return i(a,b,{intersect:!0})},point:function(a,b){var c=d(b,a);return f(a,c)},nearest:function(a,b,c){var e=d(b,a);c.axis=c.axis||"xy";var f=h(c.axis),i=g(a,e,c.intersect,f);return i.length>1&&i.sort(function(a,b){var c=a.getArea(),d=b.getArea(),e=c-d;return 0===e&&(e=a._datasetIndex-b._datasetIndex),e}),i.slice(0,1)},x:function(a,b,c){var f=d(b,a),g=[],h=!1;return e(a,function(a){a.inXRange(f.x)&&g.push(a),a.inRange(f.x,f.y)&&(h=!0)}),c.intersect&&!h&&(g=[]), +g},y:function(a,b,c){var f=d(b,a),g=[],h=!1;return e(a,function(a){a.inYRange(f.y)&&g.push(a),a.inRange(f.x,f.y)&&(h=!0)}),c.intersect&&!h&&(g=[]),g}}}},{45:45}],29:[function(a,b,c){"use strict";var d=a(25);d._set("global",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),b.exports=function(){var a=function(a,b){return this.construct(a,b),this};return a.Chart=a,a}},{25:25}],30:[function(a,b,c){"use strict";var d=a(45);b.exports=function(a){function b(a,b){return d.where(a,function(a){return a.position===b})}function c(a,b){a.forEach(function(a,b){return a._tmpIndex_=b,a}),a.sort(function(a,c){var d=b?c:a,e=b?a:c;return d.weight===e.weight?d._tmpIndex_-e._tmpIndex_:d.weight-e.weight}),a.forEach(function(a){delete a._tmpIndex_})}a.layoutService={defaults:{},addBox:function(a,b){a.boxes||(a.boxes=[]),b.fullWidth=b.fullWidth||!1,b.position=b.position||"top",b.weight=b.weight||0,a.boxes.push(b)},removeBox:function(a,b){var c=a.boxes?a.boxes.indexOf(b):-1;c!==-1&&a.boxes.splice(c,1)},configure:function(a,b,c){for(var d,e=["fullWidth","position","weight"],f=e.length,g=0;gn&&ia.maxHeight){i--;break}i++,m=j*l}a.labelRotation=i},afterCalculateTickRotation:function(){h.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){h.callback(this.options.beforeFit,[this])},fit:function(){var a=this,e=a.minSize={width:0,height:0},f=d(a._ticks),g=a.options,j=g.ticks,k=g.scaleLabel,l=g.gridLines,m=g.display,n=a.isHorizontal(),o=c(j),p=g.gridLines.tickMarkLength;if(n?e.width=a.isFullWidth()?a.maxWidth-a.margins.left-a.margins.right:a.maxWidth:e.width=m&&l.drawTicks?p:0,n?e.height=m&&l.drawTicks?p:0:e.height=a.maxHeight,k.display&&m){var q=i(k),r=h.options.toPadding(k.padding),s=q+r.height;n?e.height+=s:e.width+=s}if(j.display&&m){var t=h.longestText(a.ctx,o.font,f,a.longestTextCache),u=h.numberOfLabelLines(f),v=.5*o.size,w=a.options.ticks.padding;if(n){a.longestLabelWidth=t;var x=h.toRadians(a.labelRotation),y=Math.cos(x),z=Math.sin(x),A=z*t+o.size*u+v*(u-1)+v;e.height=Math.min(a.maxHeight,e.height+A+w),a.ctx.font=o.font;var B=b(a.ctx,f[0],o.font),C=b(a.ctx,f[f.length-1],o.font);0!==a.labelRotation?(a.paddingLeft="bottom"===g.position?y*B+3:y*v+3,a.paddingRight="bottom"===g.position?y*v+3:y*C+3):(a.paddingLeft=B/2+3,a.paddingRight=C/2+3)}else j.mirror?t=0:t+=w+v,e.width=Math.min(a.maxWidth,e.width+t),a.paddingTop=o.size/2,a.paddingBottom=o.size/2}a.handleMargins(),a.width=e.width,a.height=e.height},handleMargins:function(){var a=this;a.margins&&(a.paddingLeft=Math.max(a.paddingLeft-a.margins.left,0),a.paddingTop=Math.max(a.paddingTop-a.margins.top,0),a.paddingRight=Math.max(a.paddingRight-a.margins.right,0),a.paddingBottom=Math.max(a.paddingBottom-a.margins.bottom,0))},afterFit:function(){h.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(a){if(h.isNullOrUndef(a))return NaN;if("number"==typeof a&&!isFinite(a))return NaN;if(a)if(this.isHorizontal()){if(void 0!==a.x)return this.getRightValue(a.x)}else if(void 0!==a.y)return this.getRightValue(a.y);return a},getLabelForIndex:h.noop,getPixelForValue:h.noop,getValueForPixel:h.noop,getPixelForTick:function(a){var b=this,c=b.options.offset;if(b.isHorizontal()){var d=b.width-(b.paddingLeft+b.paddingRight),e=d/Math.max(b._ticks.length-(c?0:1),1),f=e*a+b.paddingLeft;c&&(f+=e/2);var g=b.left+Math.round(f);return g+=b.isFullWidth()?b.margins.left:0}var h=b.height-(b.paddingTop+b.paddingBottom);return b.top+a*(h/(b._ticks.length-1))},getPixelForDecimal:function(a){var b=this;if(b.isHorizontal()){var c=b.width-(b.paddingLeft+b.paddingRight),d=c*a+b.paddingLeft,e=b.left+Math.round(d);return e+=b.isFullWidth()?b.margins.left:0}return b.top+a*b.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var a=this,b=a.min,c=a.max;return a.beginAtZero?0:b<0&&c<0?c:b>0&&c>0?b:0},_autoSkip:function(a){var b,c,d,e,f,g=this,i=g.isHorizontal(),j=g.options.ticks.minor,k=a.length,l=h.toRadians(g.labelRotation),m=Math.cos(l),n=g.longestLabelWidth*m,o=[];for(j.maxTicksLimit&&(f=j.maxTicksLimit),i&&(b=!1,(n+j.autoSkipPadding)*k>g.width-(g.paddingLeft+g.paddingRight)&&(b=1+Math.floor((n+j.autoSkipPadding)*k/(g.width-(g.paddingLeft+g.paddingRight)))),f&&k>f&&(b=Math.max(b,Math.floor(k/f)))),c=0;c1&&c%b>0||c%b===0&&c+b>=k,(e&&c!==k-1||h.isNullOrUndef(d.label))&&delete d.label,o.push(d);return o},draw:function(a){var b=this,d=b.options;if(d.display){var g=b.ctx,j=f.global,k=d.ticks.minor,l=d.ticks.major||k,m=d.gridLines,n=d.scaleLabel,o=0!==b.labelRotation,p=b.isHorizontal(),q=k.autoSkip?b._autoSkip(b.getTicks()):b.getTicks(),r=h.valueOrDefault(k.fontColor,j.defaultFontColor),s=c(k),t=h.valueOrDefault(l.fontColor,j.defaultFontColor),u=c(l),v=m.drawTicks?m.tickMarkLength:0,w=h.valueOrDefault(n.fontColor,j.defaultFontColor),x=c(n),y=h.options.toPadding(n.padding),z=h.toRadians(b.labelRotation),A=[],B="right"===d.position?b.left:b.right-v,C="right"===d.position?b.left+v:b.right,D="bottom"===d.position?b.top:b.bottom-v,E="bottom"===d.position?b.top+v:b.bottom;if(h.each(q,function(c,f){if(void 0!==c.label){var g,i,l,n,r=c.label;f===b.zeroLineIndex&&d.offset===m.offsetGridLines?(g=m.zeroLineWidth,i=m.zeroLineColor,l=m.zeroLineBorderDash,n=m.zeroLineBorderDashOffset):(g=h.valueAtIndexOrDefault(m.lineWidth,f),i=h.valueAtIndexOrDefault(m.color,f),l=h.valueOrDefault(m.borderDash,j.borderDash),n=h.valueOrDefault(m.borderDashOffset,j.borderDashOffset));var s,t,u,w,x,y,F,G,H,I,J="middle",K="middle",L=k.padding;if(p){var M=v+L;"bottom"===d.position?(K=o?"middle":"top",J=o?"right":"center",I=b.top+M):(K=o?"middle":"bottom",J=o?"left":"center",I=b.bottom-M);var N=e(b,f,m.offsetGridLines&&q.length>1);N1);Q0)c=a.stepSize;else{var f=d.niceNum(b.max-b.min,!1);c=d.niceNum(f/(a.maxTicks-1),!0)}var g=Math.floor(b.min/c)*c,h=Math.ceil(b.max/c)*c;a.min&&a.max&&a.stepSize&&d.almostWhole((a.max-a.min)/a.stepSize,c/1e3)&&(g=a.min,h=a.max);var i=(h-g)/c;i=d.almostEquals(i,Math.round(i),c/1e3)?Math.round(i):Math.ceil(i),e.push(void 0!==a.min?a.min:g);for(var j=1;j3?c[2]-c[1]:c[1]-c[0];Math.abs(e)>1&&a!==Math.floor(a)&&(e=a-Math.floor(a));var f=d.log10(Math.abs(e)),g="";if(0!==a){var h=-1*Math.floor(f);h=Math.max(Math.min(h,20),0),g=a.toFixed(h)}else g="0";return g},logarithmic:function(a,b,c){var e=a/Math.pow(10,Math.floor(d.log10(a)));return 0===a?"0":1===e||2===e||5===e||0===b||b===c.length-1?a.toExponential():""}}}},{45:45}],35:[function(a,b,c){"use strict";var d=a(25),e=a(26),f=a(45);d._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:f.noop,title:function(a,b){var c="",d=b.labels,e=d?d.length:0;if(a.length>0){var f=a[0];f.xLabel?c=f.xLabel:e>0&&f.indexd.height-b.height&&(g="bottom");var h,i,j,k,l,m=(e.left+e.right)/2,n=(e.top+e.bottom)/2;"center"===g?(h=function(a){return a<=m},i=function(a){return a>m}):(h=function(a){return a<=b.width/2},i=function(a){return a>=d.width-b.width/2}),j=function(a){return a+b.width>d.width},k=function(a){return a-b.width<0},l=function(a){return a<=n?"top":"bottom"},h(c.x)?(f="left",j(c.x)&&(f="center",g=l(c.y))):i(c.x)&&(f="right",k(c.x)&&(f="center",g=l(c.y)));var o=a._options;return{xAlign:o.xAlign?o.xAlign:f,yAlign:o.yAlign?o.yAlign:g}}function k(a,b,c){var d=a.x,e=a.y,f=a.caretSize,g=a.caretPadding,h=a.cornerRadius,i=c.xAlign,j=c.yAlign,k=f+g,l=h+g;return"right"===i?d-=b.width:"center"===i&&(d-=b.width/2),"top"===j?e+=k:e-="bottom"===j?b.height+k:b.height/2,"center"===j?"left"===i?d+=k:"right"===i&&(d-=k):"left"===i?d-=l:"right"===i&&(d+=l),{x:d,y:e}}a.Tooltip=e.extend({initialize:function(){this._model=h(this._options)},getTitle:function(){var a=this,b=a._options,d=b.callbacks,e=d.beforeTitle.apply(a,arguments),f=d.title.apply(a,arguments),g=d.afterTitle.apply(a,arguments),h=[];return h=c(h,e),h=c(h,f),h=c(h,g)},getBeforeBody:function(){var a=this._options.callbacks.beforeBody.apply(this,arguments);return f.isArray(a)?a:void 0!==a?[a]:[]},getBody:function(a,b){var d=this,e=d._options.callbacks,g=[];return f.each(a,function(a){var f={before:[],lines:[],after:[]};c(f.before,e.beforeLabel.call(d,a,b)),c(f.lines,e.label.call(d,a,b)),c(f.after,e.afterLabel.call(d,a,b)),g.push(f)}),g},getAfterBody:function(){var a=this._options.callbacks.afterBody.apply(this,arguments);return f.isArray(a)?a:void 0!==a?[a]:[]},getFooter:function(){var a=this,b=a._options.callbacks,d=b.beforeFooter.apply(a,arguments),e=b.footer.apply(a,arguments),f=b.afterFooter.apply(a,arguments),g=[];return g=c(g,d),g=c(g,e),g=c(g,f)},update:function(b){var c,d,e=this,l=e._options,m=e._model,n=e._model=h(l),o=e._active,p=e._data,q={xAlign:m.xAlign,yAlign:m.yAlign},r={x:m.x,y:m.y},s={width:m.width,height:m.height},t={x:m.caretX,y:m.caretY};if(o.length){n.opacity=1;var u=[],v=[];t=a.Tooltip.positioners[l.position](o,e._eventPosition);var w=[];for(c=0,d=o.length;c0&&d.stroke()},draw:function(){var a=this._chart.ctx,b=this._view;if(0!==b.opacity){var c={width:b.width,height:b.height},d={x:b.x,y:b.y},e=Math.abs(b.opacity<.001)?0:b.opacity,f=b.title.length||b.beforeBody.length||b.body.length||b.afterBody.length||b.footer.length;this._options.enabled&&f&&(this.drawBackground(d,b,a,c,e),d.x+=b.xPadding,d.y+=b.yPadding,this.drawTitle(d,b,a,e),this.drawBody(d,b,a,e),this.drawFooter(d,b,a,e))}},handleEvent:function(a){var b=this,c=b._options,d=!1;if(b._lastActive=b._lastActive||[],"mouseout"===a.type?b._active=[]:b._active=b._chart.getElementsAtEventForMode(a,c.mode,c),d=!f.arrayEquals(b._active,b._lastActive),!d)return!1;if(b._lastActive=b._active,c.enabled||c.custom){b._eventPosition={x:a.x,y:a.y};var e=b._model;b.update(!0),b.pivot(),d|=e.x!==b._model.x||e.y!==b._model.y}return d}}),a.Tooltip.positioners={average:function(a){if(!a.length)return!1;var b,c,d=0,e=0,f=0;for(b=0,c=a.length;bi;)e-=2*Math.PI;for(;e=h&&e<=i,k=g>=c.innerRadius&&g<=c.outerRadius;return j&&k}return!1},getCenterPoint:function(){var a=this._view,b=(a.startAngle+a.endAngle)/2,c=(a.innerRadius+a.outerRadius)/2;return{x:a.x+Math.cos(b)*c,y:a.y+Math.sin(b)*c}},getArea:function(){var a=this._view;return Math.PI*((a.endAngle-a.startAngle)/(2*Math.PI))*(Math.pow(a.outerRadius,2)-Math.pow(a.innerRadius,2))},tooltipPosition:function(){var a=this._view,b=a.startAngle+(a.endAngle-a.startAngle)/2,c=(a.outerRadius-a.innerRadius)/2+a.innerRadius;return{x:a.x+Math.cos(b)*c,y:a.y+Math.sin(b)*c}},draw:function(){var a=this._chart.ctx,b=this._view,c=b.startAngle,d=b.endAngle;a.beginPath(),a.arc(b.x,b.y,b.outerRadius,c,d),a.arc(b.x,b.y,b.innerRadius,d,c,!0),a.closePath(),a.strokeStyle=b.borderColor,a.lineWidth=b.borderWidth,a.fillStyle=b.backgroundColor,a.fill(),a.lineJoin="bevel",b.borderWidth&&a.stroke()}})},{25:25,26:26,45:45}],37:[function(a,b,c){"use strict";var d=a(25),e=a(26),f=a(45),g=d.global;d._set("global",{elements:{line:{tension:.4,backgroundColor:g.defaultColor,borderWidth:3,borderColor:g.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),b.exports=e.extend({draw:function(){var a,b,c,d,e=this,h=e._view,i=e._chart.ctx,j=h.spanGaps,k=e._children.slice(),l=g.elements.line,m=-1;for(e._loop&&k.length&&k.push(k[0]),i.save(),i.lineCap=h.borderCapStyle||l.borderCapStyle,i.setLineDash&&i.setLineDash(h.borderDash||l.borderDash),i.lineDashOffset=h.borderDashOffset||l.borderDashOffset,i.lineJoin=h.borderJoinStyle||l.borderJoinStyle,i.lineWidth=h.borderWidth||l.borderWidth,i.strokeStyle=h.borderColor||g.defaultColor,i.beginPath(),m=-1,a=0;ab?1:-1,g=1,h=j.borderSkipped||"left"):(b=j.x-j.width/2,c=j.x+j.width/2,d=j.y,e=j.base,f=1,g=e>d?1:-1,h=j.borderSkipped||"bottom"),k){var l=Math.min(Math.abs(b-c),Math.abs(d-e));k=k>l?l:k;var m=k/2,n=b+("left"!==h?m*f:0),o=c+("right"!==h?-m*f:0),p=d+("top"!==h?m*g:0),q=e+("bottom"!==h?-m*g:0);n!==o&&(d=p,e=q),p!==q&&(b=n,c=o)}i.beginPath(),i.fillStyle=j.backgroundColor,i.strokeStyle=j.borderColor,i.lineWidth=k;var r=[[b,e],[b,d],[c,d],[c,e]],s=["bottom","left","top","right"],t=s.indexOf(h,0);t===-1&&(t=0);var u=a(0);i.moveTo(u[0],u[1]);for(var v=1;v<4;v++)u=a(v),i.lineTo(u[0],u[1]);i.fill(),k&&i.stroke()},height:function(){var a=this._view;return a.base-a.y},inRange:function(a,b){var c=!1;if(this._view){var d=e(this);c=a>=d.left&&a<=d.right&&b>=d.top&&b<=d.bottom}return c},inLabelRange:function(a,b){var c=this;if(!c._view)return!1;var f=!1,g=e(c);return f=d(c)?a>=g.left&&a<=g.right:b>=g.top&&b<=g.bottom},inXRange:function(a){var b=e(this);return a>=b.left&&a<=b.right},inYRange:function(a){var b=e(this);return a>=b.top&&a<=b.bottom},getCenterPoint:function(){var a,b,c=this._view;return d(this)?(a=c.x,b=(c.y+c.base)/2):(a=(c.x+c.base)/2,b=c.y),{x:a,y:b}},getArea:function(){var a=this._view;return a.width*Math.abs(a.y-a.base)},tooltipPosition:function(){var a=this._view;return{x:a.x,y:a.y}}})},{25:25,26:26}],40:[function(a,b,c){"use strict";b.exports={},b.exports.Arc=a(36),b.exports.Line=a(37),b.exports.Point=a(38),b.exports.Rectangle=a(39)},{36:36,37:37,38:38,39:39}],41:[function(a,b,c){"use strict";var d=a(42),c=b.exports={clear:function(a){a.ctx.clearRect(0,0,a.width,a.height)},roundedRect:function(a,b,c,d,e,f){if(f){var g=Math.min(f,d/2),h=Math.min(f,e/2);a.moveTo(b+g,c),a.lineTo(b+d-g,c),a.quadraticCurveTo(b+d,c,b+d,c+h),a.lineTo(b+d,c+e-h),a.quadraticCurveTo(b+d,c+e,b+d-g,c+e),a.lineTo(b+g,c+e),a.quadraticCurveTo(b,c+e,b,c+e-h),a.lineTo(b,c+h),a.quadraticCurveTo(b,c,b+g,c)}else a.rect(b,c,d,e)},drawPoint:function(a,b,c,d,e){var f,g,h,i,j,k;if("object"==typeof b&&(f=b.toString(),"[object HTMLImageElement]"===f||"[object HTMLCanvasElement]"===f))return void a.drawImage(b,d-b.width/2,e-b.height/2,b.width,b.height);if(!(isNaN(c)||c<=0)){switch(b){default:a.beginPath(),a.arc(d,e,c,0,2*Math.PI),a.closePath(),a.fill();break;case"triangle":a.beginPath(),g=3*c/Math.sqrt(3),j=g*Math.sqrt(3)/2,a.moveTo(d-g/2,e+j/3),a.lineTo(d+g/2,e+j/3),a.lineTo(d,e-2*j/3),a.closePath(),a.fill();break;case"rect":k=1/Math.SQRT2*c,a.beginPath(),a.fillRect(d-k,e-k,2*k,2*k),a.strokeRect(d-k,e-k,2*k,2*k);break;case"rectRounded":var l=c/Math.SQRT2,m=d-l,n=e-l,o=Math.SQRT2*c;a.beginPath(),this.roundedRect(a,m,n,o,o,c/2),a.closePath(),a.fill();break;case"rectRot":k=1/Math.SQRT2*c,a.beginPath(),a.moveTo(d-k,e),a.lineTo(d,e+k),a.lineTo(d+k,e),a.lineTo(d,e-k),a.closePath(),a.fill();break;case"cross":a.beginPath(),a.moveTo(d,e+c),a.lineTo(d,e-c),a.moveTo(d-c,e),a.lineTo(d+c,e),a.closePath();break;case"crossRot":a.beginPath(),h=Math.cos(Math.PI/4)*c,i=Math.sin(Math.PI/4)*c,a.moveTo(d-h,e-i),a.lineTo(d+h,e+i),a.moveTo(d-h,e+i),a.lineTo(d+h,e-i),a.closePath();break;case"star":a.beginPath(),a.moveTo(d,e+c),a.lineTo(d,e-c),a.moveTo(d-c,e),a.lineTo(d+c,e),h=Math.cos(Math.PI/4)*c,i=Math.sin(Math.PI/4)*c,a.moveTo(d-h,e-i),a.lineTo(d+h,e+i),a.moveTo(d-h,e+i),a.lineTo(d+h,e-i),a.closePath();break;case"line":a.beginPath(),a.moveTo(d-c,e),a.lineTo(d+c,e),a.closePath();break;case"dash":a.beginPath(),a.moveTo(d,e),a.lineTo(d+c,e),a.closePath()}a.stroke()}},clipArea:function(a,b){a.save(),a.beginPath(),a.rect(b.left,b.top,b.right-b.left,b.bottom-b.top),a.clip()},unclipArea:function(a){a.restore()},lineTo:function(a,b,c,d){return c.steppedLine?("after"===c.steppedLine&&!d||"after"!==c.steppedLine&&d?a.lineTo(b.x,c.y):a.lineTo(c.x,b.y),void a.lineTo(c.x,c.y)):c.tension?void a.bezierCurveTo(d?b.controlPointPreviousX:b.controlPointNextX,d?b.controlPointPreviousY:b.controlPointNextY,d?c.controlPointNextX:c.controlPointPreviousX,d?c.controlPointNextY:c.controlPointPreviousY,c.x,c.y):void a.lineTo(c.x,c.y)}};d.clear=c.clear,d.drawRoundedRectangle=function(a){a.beginPath(),c.roundedRect.apply(c,arguments),a.closePath()}},{42:42}],42:[function(a,b,c){"use strict";var d={noop:function(){},uid:function(){var a=0;return function(){return a++}}(),isNullOrUndef:function(a){return null===a||"undefined"==typeof a},isArray:Array.isArray?Array.isArray:function(a){return"[object Array]"===Object.prototype.toString.call(a)},isObject:function(a){return null!==a&&"[object Object]"===Object.prototype.toString.call(a)},valueOrDefault:function(a,b){return"undefined"==typeof a?b:a},valueAtIndexOrDefault:function(a,b,c){return d.valueOrDefault(d.isArray(a)?a[b]:a,c)},callback:function(a,b,c){if(a&&"function"==typeof a.call)return a.apply(c,b)},each:function(a,b,c,e){var f,g,h;if(d.isArray(a))if(g=a.length,e)for(f=g-1;f>=0;f--)b.call(c,a[f],f);else for(f=0;f=1?a:-(Math.sqrt(1-a*a)-1)},easeOutCirc:function(a){return Math.sqrt(1-(a-=1)*a)},easeInOutCirc:function(a){return(a/=.5)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)},easeInElastic:function(a){var b=1.70158,c=0,d=1;return 0===a?0:1===a?1:(c||(c=.3),d<1?(d=1,b=c/4):b=c/(2*Math.PI)*Math.asin(1/d),-(d*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/c)))},easeOutElastic:function(a){var b=1.70158,c=0,d=1;return 0===a?0:1===a?1:(c||(c=.3),d<1?(d=1,b=c/4):b=c/(2*Math.PI)*Math.asin(1/d),d*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/c)+1)},easeInOutElastic:function(a){var b=1.70158,c=0,d=1;return 0===a?0:2===(a/=.5)?1:(c||(c=.45),d<1?(d=1,b=c/4):b=c/(2*Math.PI)*Math.asin(1/d),a<1?-.5*(d*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/c)):d*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/c)*.5+1)},easeInBack:function(a){var b=1.70158;return a*a*((b+1)*a-b)},easeOutBack:function(a){var b=1.70158;return(a-=1)*a*((b+1)*a+b)+1},easeInOutBack:function(a){var b=1.70158;return(a/=.5)<1?.5*(a*a*(((b*=1.525)+1)*a-b)):.5*((a-=2)*a*(((b*=1.525)+1)*a+b)+2)},easeInBounce:function(a){return 1-e.easeOutBounce(1-a)},easeOutBounce:function(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},easeInOutBounce:function(a){return a<.5?.5*e.easeInBounce(2*a):.5*e.easeOutBounce(2*a-1)+.5}};b.exports={effects:e},d.easingEffects=e},{42:42}],44:[function(a,b,c){"use strict";var d=a(42);b.exports={toLineHeight:function(a,b){var c=(""+a).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!c||"normal"===c[1])return 1.2*b;switch(a=+c[2],c[3]){case"px":return a;case"%":a/=100}return b*a},toPadding:function(a){var b,c,e,f;return d.isObject(a)?(b=+a.top||0,c=+a.right||0,e=+a.bottom||0,f=+a.left||0):b=c=e=f=+a||0,{top:b,right:c,bottom:e,left:f,height:b+e,width:f+c}},resolve:function(a,b,c){var e,f,g;for(e=0,f=a.length;e
';var g=b.childNodes[0],h=b.childNodes[1];b._reset=function(){g.scrollLeft=d,g.scrollTop=d,h.scrollLeft=d,h.scrollTop=d};var i=function(){b._reset(),a()};return f(g,"scroll",i.bind(g,"expand")),f(h,"scroll",i.bind(h,"shrink")),b}function l(a,b){var c=a[r]||(a[r]={}),d=c.renderProxy=function(a){a.animationName===u&&b()};q.each(v,function(b){f(a,b,d)}),a.classList.add(t)}function m(a){var b=a[r]||{},c=b.renderProxy;c&&(q.each(v,function(b){g(a,b,c)}),delete b.renderProxy),a.classList.remove(t)}function n(a,b,c){var d=a[r]||(a[r]={}),e=d.resizer=k(j(function(){if(d.resizer)return b(h("resize",c))}));l(a,function(){if(d.resizer){var b=a.parentNode;b&&b!==e.parentNode&&b.insertBefore(e,b.firstChild),e._reset()}})}function o(a){var b=a[r]||{},c=b.resizer;delete b.resizer,m(a),c&&c.parentNode&&c.parentNode.removeChild(c)}function p(a,b){var c=a._style||document.createElement("style");a._style||(a._style=c,b="/* Chart.js */\n"+b,c.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(c)),c.appendChild(document.createTextNode(b))}var q=a(45),r="$chartjs",s="chartjs-",t=s+"render-monitor",u=s+"render-animation",v=["animationstart","webkitAnimationStart"],w={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},x=function(){var a=!1;try{var b=Object.defineProperty({},"passive",{get:function(){a=!0}});window.addEventListener("e",null,b)}catch(c){}return a}(),y=!!x&&{passive:!0};b.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var a="from{opacity:0.99}to{opacity:1}";p(this,"@-webkit-keyframes "+u+"{"+a+"}@keyframes "+u+"{"+a+"}."+t+"{-webkit-animation:"+u+" 0.001s;animation:"+u+" 0.001s;}")},acquireContext:function(a,b){"string"==typeof a?a=document.getElementById(a):a.length&&(a=a[0]),a&&a.canvas&&(a=a.canvas);var c=a&&a.getContext&&a.getContext("2d");return c&&c.canvas===a?(e(a,b),c):null},releaseContext:function(a){var b=a.canvas;if(b[r]){var c=b[r].initial;["height","width"].forEach(function(a){var d=c[a];q.isNullOrUndef(d)?b.removeAttribute(a):b.setAttribute(a,d)}),q.each(c.style||{},function(a,c){b.style[c]=a}),b.width=b.width,delete b[r]}},addEventListener:function(a,b,c){var d=a.canvas;if("resize"===b)return void n(d,c,a);var e=c[r]||(c[r]={}),g=e.proxies||(e.proxies={}),h=g[a.id+"_"+b]=function(b){c(i(b,a))};f(d,b,h)},removeEventListener:function(a,b,c){var d=a.canvas;if("resize"===b)return void o(d,c);var e=c[r]||{},f=e.proxies||{},h=f[a.id+"_"+b];h&&g(d,b,h)}},q.addEvent=f,q.removeEvent=g},{45:45}],48:[function(a,b,c){"use strict";var d=a(45),e=a(46),f=a(47),g=f._enabled?f:e;b.exports=d.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},g)},{45:45,46:46,47:47}],49:[function(a,b,c){"use strict";var d=a(25),e=a(40),f=a(45);d._set("global",{plugins:{filler:{propagate:!0}}}),b.exports=function(){function a(a,b,c){var d,e=a._model||{},f=e.fill;if(void 0===f&&(f=!!e.backgroundColor),f===!1||null===f)return!1;if(f===!0)return"origin";if(d=parseFloat(f,10),isFinite(d)&&Math.floor(d)===d)return"-"!==f[0]&&"+"!==f[0]||(d=b+d),!(d===b||d<0||d>=c)&&d;switch(f){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return f;default:return!1}}function b(a){var b,c=a.el._model||{},d=a.el._scale||{},e=a.fill,f=null;if(isFinite(e))return null;if("start"===e?f=void 0===c.scaleBottom?d.bottom:c.scaleBottom:"end"===e?f=void 0===c.scaleTop?d.top:c.scaleTop:void 0!==c.scaleZero?f=c.scaleZero:d.getBasePosition?f=d.getBasePosition():d.getBasePixel&&(f=d.getBasePixel()),void 0!==f&&null!==f){if(void 0!==f.x&&void 0!==f.y)return f;if("number"==typeof f&&isFinite(f))return b=d.isHorizontal(),{x:b?f:null,y:b?null:f}}return null}function c(a,b,c){var d,e=a[b],f=e.fill,g=[b];if(!c)return f;for(;f!==!1&&g.indexOf(f)===-1;){if(!isFinite(f))return f;if(d=a[f],!d)return!1;if(d.visible)return f;g.push(f),f=d.fill}return!1}function g(a){var b=a.fill,c="dataset";return b===!1?null:(isFinite(b)||(c="boundary"),k[c](a))}function h(a){return a&&!a.skip}function i(a,b,c,d,e){var g;if(d&&e){for(a.moveTo(b[0].x,b[0].y),g=1;g0;--g)f.canvas.lineTo(a,c[g],c[g-1],!0)}}function j(a,b,c,d,e,f){var g,j,k,l,m,n,o,p=b.length,q=d.spanGaps,r=[],s=[],t=0,u=0;for(a.beginPath(),g=0,j=p+!!f;g');for(var c=0;c'),a.data.datasets[c].label&&b.push(a.data.datasets[c].label),b.push("");return b.push(""),b.join("")}}),b.exports=function(a){function b(a,b){return a.usePointStyle?b*Math.SQRT2:a.boxWidth}function c(b,c){var d=new a.Legend({ctx:b.ctx,options:c,chart:b});g.configure(b,d,c),g.addBox(b,d),b.legend=d}var g=a.layoutService,h=f.noop;return a.Legend=e.extend({initialize:function(a){f.extend(this,a),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:h,update:function(a,b,c){var d=this;return d.beforeUpdate(),d.maxWidth=a,d.maxHeight=b,d.margins=c,d.beforeSetDimensions(),d.setDimensions(),d.afterSetDimensions(),d.beforeBuildLabels(),d.buildLabels(),d.afterBuildLabels(),d.beforeFit(),d.fit(),d.afterFit(),d.afterUpdate(),d.minSize},afterUpdate:h,beforeSetDimensions:h,setDimensions:function(){var a=this;a.isHorizontal()?(a.width=a.maxWidth,a.left=0,a.right=a.width):(a.height=a.maxHeight,a.top=0,a.bottom=a.height),a.paddingLeft=0,a.paddingTop=0,a.paddingRight=0,a.paddingBottom=0,a.minSize={width:0,height:0}},afterSetDimensions:h,beforeBuildLabels:h,buildLabels:function(){var a=this,b=a.options.labels||{},c=f.callback(b.generateLabels,[a.chart],a)||[];b.filter&&(c=c.filter(function(c){return b.filter(c,a.chart.data)})),a.options.reverse&&c.reverse(),a.legendItems=c},afterBuildLabels:h,beforeFit:h,fit:function(){var a=this,c=a.options,e=c.labels,g=c.display,h=a.ctx,i=d.global,j=f.valueOrDefault,k=j(e.fontSize,i.defaultFontSize),l=j(e.fontStyle,i.defaultFontStyle),m=j(e.fontFamily,i.defaultFontFamily),n=f.fontString(k,l,m),o=a.legendHitBoxes=[],p=a.minSize,q=a.isHorizontal();if(q?(p.width=a.maxWidth,p.height=g?10:0):(p.width=g?10:0,p.height=a.maxHeight),g)if(h.font=n,q){var r=a.lineWidths=[0],s=a.legendItems.length?k+e.padding:0;h.textAlign="left",h.textBaseline="top",f.each(a.legendItems,function(c,d){var f=b(e,k),g=f+k/2+h.measureText(c.text).width;r[r.length-1]+g+e.padding>=a.width&&(s+=k+e.padding,r[r.length]=a.left),o[d]={left:0,top:0,width:g,height:k},r[r.length-1]+=g+e.padding}),p.height+=s}else{var t=e.padding,u=a.columnWidths=[],v=e.padding,w=0,x=0,y=k+t;f.each(a.legendItems,function(a,c){var d=b(e,k),f=d+k/2+h.measureText(a.text).width;x+y>p.height&&(v+=w+e.padding,u.push(w),w=0,x=0),w=Math.max(w,f),x+=y,o[c]={left:0,top:0,width:f,height:k}}),v+=w,u.push(w),p.width+=v}a.width=p.width,a.height=p.height},afterFit:h,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var a=this,c=a.options,e=c.labels,g=d.global,h=g.elements.line,i=a.width,j=a.lineWidths;if(c.display){var k,l=a.ctx,m=f.valueOrDefault,n=m(e.fontColor,g.defaultFontColor),o=m(e.fontSize,g.defaultFontSize),p=m(e.fontStyle,g.defaultFontStyle),q=m(e.fontFamily,g.defaultFontFamily),r=f.fontString(o,p,q);l.textAlign="left",l.textBaseline="middle",l.lineWidth=.5,l.strokeStyle=n,l.fillStyle=n,l.font=r;var s=b(e,o),t=a.legendHitBoxes,u=function(a,b,d){if(!(isNaN(s)||s<=0)){l.save(),l.fillStyle=m(d.fillStyle,g.defaultColor),l.lineCap=m(d.lineCap,h.borderCapStyle),l.lineDashOffset=m(d.lineDashOffset,h.borderDashOffset),l.lineJoin=m(d.lineJoin,h.borderJoinStyle),l.lineWidth=m(d.lineWidth,h.borderWidth),l.strokeStyle=m(d.strokeStyle,g.defaultColor);var e=0===m(d.lineWidth,h.borderWidth);if(l.setLineDash&&l.setLineDash(m(d.lineDash,h.borderDash)),c.labels&&c.labels.usePointStyle){var i=o*Math.SQRT2/2,j=i/Math.SQRT2,k=a+j,n=b+j;f.canvas.drawPoint(l,d.pointStyle,i,k,n)}else e||l.strokeRect(a,b,s,o),l.fillRect(a,b,s,o);l.restore()}},v=function(a,b,c,d){var e=o/2,f=s+e+a,g=b+e;l.fillText(c.text,f,g),c.hidden&&(l.beginPath(),l.lineWidth=2,l.moveTo(f,g),l.lineTo(f+d,g),l.stroke())},w=a.isHorizontal();k=w?{x:a.left+(i-j[0])/2,y:a.top+e.padding,line:0}:{x:a.left+e.padding,y:a.top+e.padding,line:0};var x=o+e.padding;f.each(a.legendItems,function(b,c){var d=l.measureText(b.text).width,f=s+o/2+d,g=k.x,h=k.y;w?g+f>=i&&(h=k.y+=x,k.line++,g=k.x=a.left+(i-j[k.line])/2):h+x>a.bottom&&(g=k.x=g+a.columnWidths[k.line]+e.padding,h=k.y=a.top+e.padding,k.line++),u(g,h,b),t[c].left=g,t[c].top=h,v(g,h,b,d),w?k.x+=f+e.padding:k.y+=x})}},handleEvent:function(a){var b=this,c=b.options,d="mouseup"===a.type?"click":a.type,e=!1;if("mousemove"===d){if(!c.onHover)return}else{if("click"!==d)return;if(!c.onClick)return}var f=a.x,g=a.y;if(f>=b.left&&f<=b.right&&g>=b.top&&g<=b.bottom)for(var h=b.legendHitBoxes,i=0;i=j.left&&f<=j.left+j.width&&g>=j.top&&g<=j.top+j.height){if("click"===d){c.onClick.call(b,a["native"],b.legendItems[i]),e=!0;break}if("mousemove"===d){c.onHover.call(b,a["native"],b.legendItems[i]),e=!0;break}}}return e}}),{id:"legend",beforeInit:function(a){var b=a.options.legend;b&&c(a,b)},beforeUpdate:function(a){var b=a.options.legend,e=a.legend;b?(f.mergeIf(b,d.global.legend),e?(g.configure(a,e,b),e.options=b):c(a,b)):e&&(g.removeBox(a,e),delete a.legend)},afterEvent:function(a,b){var c=a.legend;c&&c.handleEvent(b)}}}},{25:25,26:26,45:45}],51:[function(a,b,c){"use strict";var d=a(25),e=a(26),f=a(45);d._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}}),b.exports=function(a){function b(b,d){var e=new a.Title({ctx:b.ctx,options:d,chart:b});c.configure(b,e,d),c.addBox(b,e),b.titleBlock=e}var c=a.layoutService,g=f.noop;return a.Title=e.extend({initialize:function(a){var b=this;f.extend(b,a),b.legendHitBoxes=[]},beforeUpdate:g,update:function(a,b,c){var d=this;return d.beforeUpdate(),d.maxWidth=a,d.maxHeight=b,d.margins=c,d.beforeSetDimensions(),d.setDimensions(),d.afterSetDimensions(),d.beforeBuildLabels(),d.buildLabels(),d.afterBuildLabels(),d.beforeFit(),d.fit(),d.afterFit(),d.afterUpdate(),d.minSize},afterUpdate:g,beforeSetDimensions:g,setDimensions:function(){var a=this;a.isHorizontal()?(a.width=a.maxWidth,a.left=0,a.right=a.width):(a.height=a.maxHeight,a.top=0,a.bottom=a.height),a.paddingLeft=0,a.paddingTop=0,a.paddingRight=0,a.paddingBottom=0,a.minSize={width:0,height:0}},afterSetDimensions:g,beforeBuildLabels:g,buildLabels:g,afterBuildLabels:g,beforeFit:g,fit:function(){var a=this,b=f.valueOrDefault,c=a.options,e=c.display,g=b(c.fontSize,d.global.defaultFontSize),h=a.minSize,i=f.isArray(c.text)?c.text.length:1,j=f.options.toLineHeight(c.lineHeight,g),k=e?i*j+2*c.padding:0;a.isHorizontal()?(h.width=a.maxWidth,h.height=k):(h.width=k,h.height=a.maxHeight),a.width=h.width,a.height=h.height},afterFit:g,isHorizontal:function(){var a=this.options.position;return"top"===a||"bottom"===a},draw:function(){var a=this,b=a.ctx,c=f.valueOrDefault,e=a.options,g=d.global;if(e.display){var h,i,j,k=c(e.fontSize,g.defaultFontSize),l=c(e.fontStyle,g.defaultFontStyle),m=c(e.fontFamily,g.defaultFontFamily),n=f.fontString(k,l,m),o=f.options.toLineHeight(e.lineHeight,k),p=o/2+e.padding,q=0,r=a.top,s=a.left,t=a.bottom,u=a.right;b.fillStyle=c(e.fontColor,g.defaultFontColor),b.font=n,a.isHorizontal()?(i=s+(u-s)/2,j=r+p,h=u-s):(i="left"===e.position?s+p:u-p,j=r+(t-r)/2,h=t-r,q=Math.PI*("left"===e.position?-.5:.5)),b.save(),b.translate(i,j),b.rotate(q),b.textAlign="center",b.textBaseline="middle";var v=e.text;if(f.isArray(v))for(var w=0,x=0;xb.max&&(b.max=d))})});b.min=isFinite(b.min)&&!isNaN(b.min)?b.min:i,b.max=isFinite(b.max)&&!isNaN(b.max)?b.max:j,this.handleTickRangeOptions()},getTickLimit:function(){var a,b=this,c=b.options.ticks;if(b.isHorizontal())a=Math.min(c.maxTicksLimit?c.maxTicksLimit:11,Math.ceil(b.width/50));else{var f=e.valueOrDefault(c.fontSize,d.global.defaultFontSize);a=Math.min(c.maxTicksLimit?c.maxTicksLimit:11,Math.ceil(b.height/(2*f)))}return a},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(a,b){return+this.getRightValue(this.chart.data.datasets[b].data[a])},getPixelForValue:function(a){var b,c=this,d=c.start,e=+c.getRightValue(a),f=c.end-d;return c.isHorizontal()?(b=c.left+c.width/f*(e-d),Math.round(b)):(b=c.bottom-c.height/f*(e-d),Math.round(b))},getValueForPixel:function(a){var b=this,c=b.isHorizontal(),d=c?b.width:b.height,e=(c?a-b.left:b.bottom-a)/d;return b.start+(b.end-b.start)*e},getPixelForTick:function(a){return this.getPixelForValue(this.ticksAsNumbers[a])}});a.scaleService.registerScaleType("linear",c,b)}},{25:25,34:34,45:45}],54:[function(a,b,c){"use strict";var d=a(45),e=a(34);b.exports=function(a){var b=d.noop;a.LinearScaleBase=a.Scale.extend({getRightValue:function(b){return"string"==typeof b?+b:a.Scale.prototype.getRightValue.call(this,b)},handleTickRangeOptions:function(){var a=this,b=a.options,c=b.ticks;if(c.beginAtZero){var e=d.sign(a.min),f=d.sign(a.max);e<0&&f<0?a.max=0:e>0&&f>0&&(a.min=0)}var g=void 0!==c.min||void 0!==c.suggestedMin,h=void 0!==c.max||void 0!==c.suggestedMax;void 0!==c.min?a.min=c.min:void 0!==c.suggestedMin&&(null===a.min?a.min=c.suggestedMin:a.min=Math.min(a.min,c.suggestedMin)),void 0!==c.max?a.max=c.max:void 0!==c.suggestedMax&&(null===a.max?a.max=c.suggestedMax:a.max=Math.max(a.max,c.suggestedMax)),g!==h&&a.min>=a.max&&(g?a.max=a.min+1:a.min=a.max-1),a.min===a.max&&(a.max++,c.beginAtZero||a.min--)},getTickLimit:b,handleDirectionalChanges:b,buildTicks:function(){var a=this,b=a.options,c=b.ticks,f=a.getTickLimit();f=Math.max(2,f);var g={maxTicks:f,min:c.min,max:c.max,stepSize:d.valueOrDefault(c.fixedStepSize,c.stepSize)},h=a.ticks=e.generators.linear(g,a); +a.handleDirectionalChanges(),a.max=d.max(h),a.min=d.min(h),c.reverse?(h.reverse(),a.start=a.max,a.end=a.min):(a.start=a.min,a.end=a.max)},convertTicksToLabels:function(){var b=this;b.ticksAsNumbers=b.ticks.slice(),b.zeroLineIndex=b.ticks.indexOf(0),a.Scale.prototype.convertTicksToLabels.call(b)}})}},{34:34,45:45}],55:[function(a,b,c){"use strict";var d=a(45),e=a(34);b.exports=function(a){var b={position:"left",ticks:{callback:e.formatters.logarithmic}},c=a.Scale.extend({determineDataLimits:function(){function a(a){return j?a.xAxisID===b.id:a.yAxisID===b.id}var b=this,c=b.options,e=c.ticks,f=b.chart,g=f.data,h=g.datasets,i=d.valueOrDefault,j=b.isHorizontal();b.min=null,b.max=null,b.minNotZero=null;var k=c.stacked;if(void 0===k&&d.each(h,function(b,c){if(!k){var d=f.getDatasetMeta(c);f.isDatasetVisible(c)&&a(d)&&void 0!==d.stack&&(k=!0)}}),c.stacked||k){var l={};d.each(h,function(e,g){var h=f.getDatasetMeta(g),i=[h.type,void 0===c.stacked&&void 0===h.stack?g:"",h.stack].join(".");f.isDatasetVisible(g)&&a(h)&&(void 0===l[i]&&(l[i]=[]),d.each(e.data,function(a,d){var e=l[i],f=+b.getRightValue(a);isNaN(f)||h.data[d].hidden||(e[d]=e[d]||0,c.relativePoints?e[d]=100:e[d]+=f)}))}),d.each(l,function(a){var c=d.min(a),e=d.max(a);b.min=null===b.min?c:Math.min(b.min,c),b.max=null===b.max?e:Math.max(b.max,e)})}else d.each(h,function(c,e){var g=f.getDatasetMeta(e);f.isDatasetVisible(e)&&a(g)&&d.each(c.data,function(a,c){var d=+b.getRightValue(a);isNaN(d)||g.data[c].hidden||(null===b.min?b.min=d:db.max&&(b.max=d),0!==d&&(null===b.minNotZero||de?{start:b-c-5,end:b}:{start:b,end:b+c+5}}function i(a){var d,f,i,j=c(a),k=Math.min(a.height/2,a.width/2),l={r:a.width,l:0,t:a.height,b:0},m={};a.ctx.font=j.font,a._pointLabelSizes=[];var n=b(a);for(d=0;dl.r&&(l.r=q.end,m.r=o),r.startl.b&&(l.b=r.end,m.b=o)}a.setReductions(k,l,m)}function j(a){var b=Math.min(a.height/2,a.width/2);a.drawingArea=Math.round(b),a.setCenterPoint(0,0,0,0)}function k(a){return 0===a||180===a?"center":a<180?"left":"right"}function l(a,b,c,d){if(e.isArray(b))for(var f=c.y,g=1.5*d,h=0;h270||a<90)&&(c.y-=b.h)}function n(a){var d=a.ctx,f=e.valueOrDefault,g=a.options,h=g.angleLines,i=g.pointLabels;d.lineWidth=h.lineWidth,d.strokeStyle=h.color;var j=a.getDistanceFromCenterForValue(g.ticks.reverse?a.min:a.max),n=c(a);d.textBaseline="top";for(var o=b(a)-1;o>=0;o--){if(h.display){var p=a.getPointPosition(o,j);d.beginPath(),d.moveTo(a.xCenter,a.yCenter),d.lineTo(p.x,p.y),d.stroke(),d.closePath()}if(i.display){var r=a.getPointPosition(o,j+5),s=f(i.fontColor,q.defaultFontColor);d.font=n.font,d.fillStyle=s;var t=a.getIndexAngle(o),u=e.toDegrees(t);d.textAlign=k(u),m(u,a._pointLabelSizes[o],r),l(d,a.pointLabels[o]||"",r,n.size)}}}function o(a,c,d,f){var g=a.ctx;if(g.strokeStyle=e.valueAtIndexOrDefault(c.color,f-1),g.lineWidth=e.valueAtIndexOrDefault(c.lineWidth,f-1),a.options.gridLines.circular)g.beginPath(),g.arc(a.xCenter,a.yCenter,d,0,2*Math.PI),g.closePath(),g.stroke();else{var h=b(a);if(0===h)return;g.beginPath();var i=a.getPointPosition(0,d);g.moveTo(i.x,i.y);for(var j=1;j0&&c>0?b:0)},draw:function(){var a=this,b=a.options,c=b.gridLines,d=b.ticks,f=e.valueOrDefault;if(b.display){var g=a.ctx,h=this.getIndexAngle(0),i=f(d.fontSize,q.defaultFontSize),j=f(d.fontStyle,q.defaultFontStyle),k=f(d.fontFamily,q.defaultFontFamily),l=e.fontString(i,j,k);e.each(a.ticks,function(b,e){if(e>0||d.reverse){var j=a.getDistanceFromCenterForValue(a.ticksAsNumbers[e]);if(c.display&&0!==e&&o(a,c,j,e),d.display){var k=f(d.fontColor,q.defaultFontColor);if(g.font=l,g.save(),g.translate(a.xCenter,a.yCenter),g.rotate(h),d.showLabelBackdrop){var m=g.measureText(b).width;g.fillStyle=d.backdropColor,g.fillRect(-m/2-d.backdropPaddingX,-j-i/2-d.backdropPaddingY,m+2*d.backdropPaddingX,i+2*d.backdropPaddingY)}g.textAlign="center",g.textBaseline="middle",g.fillStyle=k,g.fillText(b,0,-j),g.restore()}}}),(b.angleLines.display||b.pointLabels.display)&&n(a)}}});a.scaleService.registerScaleType("radialLinear",s,r)}},{25:25,34:34,45:45}],57:[function(a,b,c){"use strict";function d(a,b){return a-b}function e(a){var b,c,d,e={},f=[];for(b=0,c=a.length;bb&&h=0&&g<=h;){if(d=g+h>>1,e=a[d-1]||null,f=a[d],!e)return{lo:null,hi:f};if(f[b]c))return{lo:e,hi:f};h=d-1}}return{lo:f,hi:null}}function h(a,b,c,d){var e=g(a,b,c),f=e.lo?e.hi?e.lo:a[a.length-2]:a[0],h=e.lo?e.hi?e.hi:a[a.length-1]:a[1],i=h[b]-f[b],j=i?(c-f[b])/i:0,k=(h[d]-f[d])*j;return f[d]+k}function i(a,b){var c=b.parser,d=b.parser||b.format;return"function"==typeof c?c(a):"string"==typeof a&&"string"==typeof d?q(a,d):(a instanceof q||(a=q(a)),a.isValid()?a:"function"==typeof d?d(a):a)}function j(a,b){if(s.isNullOrUndef(a))return null;var c=b.options.time,d=i(b.getRightValue(a),c);return d.isValid()?(c.round&&d.startOf(c.round),d.valueOf()):null}function k(a,b,c,d){var e,f,g,h=b-a,i=v[c],j=i.size,k=i.steps;if(!k)return Math.ceil(h/((d||1)*j));for(e=0,f=k.length;e1?b[1]:d,g=b[0],i=(h(a,"time",f,"pos")-h(a,"time",g,"pos"))/2),e.time.max||(f=b[b.length-1],g=b.length>1?b[b.length-2]:c,j=(h(a,"time",f,"pos")-h(a,"time",g,"pos"))/2)),{left:i,right:j}}function p(a,b){var c,d,e,f,g=[];for(c=0,d=a.length;c=e&&c<=g&&u.push(c);return d.min=e,d.max=g,d._unit=r,d._majorUnit=s,d._minorFormat=k[r],d._majorFormat=k[s],d._table=f(d._timestamps.data,e,g,h.distribution),d._offsets=o(d._table,u,e,g,h),p(u,s)},getLabelForIndex:function(a,b){var c=this,d=c.chart.data,e=c.options.time,f=d.labels&&a=0&&a lum2) { - return (lum1 + 0.05) / (lum2 + 0.05); - } - return (lum2 + 0.05) / (lum1 + 0.05); - }, - - level: function (color2) { - var contrastRatio = this.contrast(color2); - if (contrastRatio >= 7.1) { - return 'AAA'; - } - - return (contrastRatio >= 4.5) ? 'AA' : ''; - }, - - dark: function () { - // YIQ equation from http://24ways.org/2010/calculating-color-contrast - var rgb = this.values.rgb; - var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000; - return yiq < 128; - }, - - light: function () { - return !this.dark(); - }, - - negate: function () { - var rgb = []; - for (var i = 0; i < 3; i++) { - rgb[i] = 255 - this.values.rgb[i]; - } - this.setValues('rgb', rgb); - return this; - }, - - lighten: function (ratio) { - var hsl = this.values.hsl; - hsl[2] += hsl[2] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - darken: function (ratio) { - var hsl = this.values.hsl; - hsl[2] -= hsl[2] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - saturate: function (ratio) { - var hsl = this.values.hsl; - hsl[1] += hsl[1] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - desaturate: function (ratio) { - var hsl = this.values.hsl; - hsl[1] -= hsl[1] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - whiten: function (ratio) { - var hwb = this.values.hwb; - hwb[1] += hwb[1] * ratio; - this.setValues('hwb', hwb); - return this; - }, - - blacken: function (ratio) { - var hwb = this.values.hwb; - hwb[2] += hwb[2] * ratio; - this.setValues('hwb', hwb); - return this; - }, - - greyscale: function () { - var rgb = this.values.rgb; - // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale - var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11; - this.setValues('rgb', [val, val, val]); - return this; - }, - - clearer: function (ratio) { - var alpha = this.values.alpha; - this.setValues('alpha', alpha - (alpha * ratio)); - return this; - }, - - opaquer: function (ratio) { - var alpha = this.values.alpha; - this.setValues('alpha', alpha + (alpha * ratio)); - return this; - }, - - rotate: function (degrees) { - var hsl = this.values.hsl; - var hue = (hsl[0] + degrees) % 360; - hsl[0] = hue < 0 ? 360 + hue : hue; - this.setValues('hsl', hsl); - return this; - }, - - /** - * Ported from sass implementation in C - * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209 - */ - mix: function (mixinColor, weight) { - var color1 = this; - var color2 = mixinColor; - var p = weight === undefined ? 0.5 : weight; - - var w = 2 * p - 1; - var a = color1.alpha() - color2.alpha(); - - var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; - var w2 = 1 - w1; - - return this - .rgb( - w1 * color1.red() + w2 * color2.red(), - w1 * color1.green() + w2 * color2.green(), - w1 * color1.blue() + w2 * color2.blue() - ) - .alpha(color1.alpha() * p + color2.alpha() * (1 - p)); - }, - - toJSON: function () { - return this.rgb(); - }, - - clone: function () { - // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify, - // making the final build way to big to embed in Chart.js. So let's do it manually, - // assuming that values to clone are 1 dimension arrays containing only numbers, - // except 'alpha' which is a number. - var result = new Color(); - var source = this.values; - var target = result.values; - var value, type; - - for (var prop in source) { - if (source.hasOwnProperty(prop)) { - value = source[prop]; - type = ({}).toString.call(value); - if (type === '[object Array]') { - target[prop] = value.slice(0); - } else if (type === '[object Number]') { - target[prop] = value; - } else { - console.error('unexpected color value:', value); - } - } - } - - return result; - } - }; - - Color.prototype.spaces = { - rgb: ['red', 'green', 'blue'], - hsl: ['hue', 'saturation', 'lightness'], - hsv: ['hue', 'saturation', 'value'], - hwb: ['hue', 'whiteness', 'blackness'], - cmyk: ['cyan', 'magenta', 'yellow', 'black'] - }; - - Color.prototype.maxes = { - rgb: [255, 255, 255], - hsl: [360, 100, 100], - hsv: [360, 100, 100], - hwb: [360, 100, 100], - cmyk: [100, 100, 100, 100] - }; - - Color.prototype.getValues = function (space) { - var values = this.values; - var vals = {}; - - for (var i = 0; i < space.length; i++) { - vals[space.charAt(i)] = values[space][i]; - } - - if (values.alpha !== 1) { - vals.a = values.alpha; - } - - // {r: 255, g: 255, b: 255, a: 0.4} - return vals; - }; - - Color.prototype.setValues = function (space, vals) { - var values = this.values; - var spaces = this.spaces; - var maxes = this.maxes; - var alpha = 1; - var i; - - if (space === 'alpha') { - alpha = vals; - } else if (vals.length) { - // [10, 10, 10] - values[space] = vals.slice(0, space.length); - alpha = vals[space.length]; - } else if (vals[space.charAt(0)] !== undefined) { - // {r: 10, g: 10, b: 10} - for (i = 0; i < space.length; i++) { - values[space][i] = vals[space.charAt(i)]; - } - - alpha = vals.a; - } else if (vals[spaces[space][0]] !== undefined) { - // {red: 10, green: 10, blue: 10} - var chans = spaces[space]; - - for (i = 0; i < space.length; i++) { - values[space][i] = vals[chans[i]]; - } - - alpha = vals.alpha; - } - - values.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha))); - - if (space === 'alpha') { - return false; - } - - var capped; - - // cap values of the space prior converting all values - for (i = 0; i < space.length; i++) { - capped = Math.max(0, Math.min(maxes[space][i], values[space][i])); - values[space][i] = Math.round(capped); - } - - // convert to all the other color spaces - for (var sname in spaces) { - if (sname !== space) { - values[sname] = convert[space][sname](values[space]); - } - } - - return true; - }; - - Color.prototype.setSpace = function (space, args) { - var vals = args[0]; - - if (vals === undefined) { - // color.rgb() - return this.getValues(space); - } - - // color.rgb(10, 10, 10) - if (typeof vals === 'number') { - vals = Array.prototype.slice.call(args); - } - - this.setValues(space, vals); - return this; - }; - - Color.prototype.setChannel = function (space, index, val) { - var svalues = this.values[space]; - if (val === undefined) { - // color.red() - return svalues[index]; - } else if (val === svalues[index]) { - // color.red(color.red()) - return this; - } - - // color.red(100) - svalues[index] = val; - this.setValues(space, svalues); - - return this; - }; - - if (typeof window !== 'undefined') { - window.Color = Color; - } - - module.exports = Color; - -},{"2":2,"5":5}],4:[function(require,module,exports){ - /* MIT license */ - - module.exports = { - rgb2hsl: rgb2hsl, - rgb2hsv: rgb2hsv, - rgb2hwb: rgb2hwb, - rgb2cmyk: rgb2cmyk, - rgb2keyword: rgb2keyword, - rgb2xyz: rgb2xyz, - rgb2lab: rgb2lab, - rgb2lch: rgb2lch, - - hsl2rgb: hsl2rgb, - hsl2hsv: hsl2hsv, - hsl2hwb: hsl2hwb, - hsl2cmyk: hsl2cmyk, - hsl2keyword: hsl2keyword, - - hsv2rgb: hsv2rgb, - hsv2hsl: hsv2hsl, - hsv2hwb: hsv2hwb, - hsv2cmyk: hsv2cmyk, - hsv2keyword: hsv2keyword, - - hwb2rgb: hwb2rgb, - hwb2hsl: hwb2hsl, - hwb2hsv: hwb2hsv, - hwb2cmyk: hwb2cmyk, - hwb2keyword: hwb2keyword, - - cmyk2rgb: cmyk2rgb, - cmyk2hsl: cmyk2hsl, - cmyk2hsv: cmyk2hsv, - cmyk2hwb: cmyk2hwb, - cmyk2keyword: cmyk2keyword, - - keyword2rgb: keyword2rgb, - keyword2hsl: keyword2hsl, - keyword2hsv: keyword2hsv, - keyword2hwb: keyword2hwb, - keyword2cmyk: keyword2cmyk, - keyword2lab: keyword2lab, - keyword2xyz: keyword2xyz, - - xyz2rgb: xyz2rgb, - xyz2lab: xyz2lab, - xyz2lch: xyz2lch, - - lab2xyz: lab2xyz, - lab2rgb: lab2rgb, - lab2lch: lab2lch, - - lch2lab: lch2lab, - lch2xyz: lch2xyz, - lch2rgb: lch2rgb - } - - - function rgb2hsl(rgb) { - var r = rgb[0]/255, - g = rgb[1]/255, - b = rgb[2]/255, - min = Math.min(r, g, b), - max = Math.max(r, g, b), - delta = max - min, - h, s, l; - - if (max == min) - h = 0; - else if (r == max) - h = (g - b) / delta; - else if (g == max) - h = 2 + (b - r) / delta; - else if (b == max) - h = 4 + (r - g)/ delta; - - h = Math.min(h * 60, 360); - - if (h < 0) - h += 360; - - l = (min + max) / 2; - - if (max == min) - s = 0; - else if (l <= 0.5) - s = delta / (max + min); - else - s = delta / (2 - max - min); - - return [h, s * 100, l * 100]; - } - - function rgb2hsv(rgb) { - var r = rgb[0], - g = rgb[1], - b = rgb[2], - min = Math.min(r, g, b), - max = Math.max(r, g, b), - delta = max - min, - h, s, v; - - if (max == 0) - s = 0; - else - s = (delta/max * 1000)/10; - - if (max == min) - h = 0; - else if (r == max) - h = (g - b) / delta; - else if (g == max) - h = 2 + (b - r) / delta; - else if (b == max) - h = 4 + (r - g) / delta; - - h = Math.min(h * 60, 360); - - if (h < 0) - h += 360; - - v = ((max / 255) * 1000) / 10; - - return [h, s, v]; - } - - function rgb2hwb(rgb) { - var r = rgb[0], - g = rgb[1], - b = rgb[2], - h = rgb2hsl(rgb)[0], - w = 1/255 * Math.min(r, Math.min(g, b)), - b = 1 - 1/255 * Math.max(r, Math.max(g, b)); - - return [h, w * 100, b * 100]; - } - - function rgb2cmyk(rgb) { - var r = rgb[0] / 255, - g = rgb[1] / 255, - b = rgb[2] / 255, - c, m, y, k; - - k = Math.min(1 - r, 1 - g, 1 - b); - c = (1 - r - k) / (1 - k) || 0; - m = (1 - g - k) / (1 - k) || 0; - y = (1 - b - k) / (1 - k) || 0; - return [c * 100, m * 100, y * 100, k * 100]; - } - - function rgb2keyword(rgb) { - return reverseKeywords[JSON.stringify(rgb)]; - } - - function rgb2xyz(rgb) { - var r = rgb[0] / 255, - g = rgb[1] / 255, - b = rgb[2] / 255; - - // assume sRGB - r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); - g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); - b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); - - var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); - var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); - var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); - - return [x * 100, y *100, z * 100]; - } - - function rgb2lab(rgb) { - var xyz = rgb2xyz(rgb), - x = xyz[0], - y = xyz[1], - z = xyz[2], - l, a, b; - - x /= 95.047; - y /= 100; - z /= 108.883; - - x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); - - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); - - return [l, a, b]; - } - - function rgb2lch(args) { - return lab2lch(rgb2lab(args)); - } - - function hsl2rgb(hsl) { - var h = hsl[0] / 360, - s = hsl[1] / 100, - l = hsl[2] / 100, - t1, t2, t3, rgb, val; - - if (s == 0) { - val = l * 255; - return [val, val, val]; - } - - if (l < 0.5) - t2 = l * (1 + s); - else - t2 = l + s - l * s; - t1 = 2 * l - t2; - - rgb = [0, 0, 0]; - for (var i = 0; i < 3; i++) { - t3 = h + 1 / 3 * - (i - 1); - t3 < 0 && t3++; - t3 > 1 && t3--; - - if (6 * t3 < 1) - val = t1 + (t2 - t1) * 6 * t3; - else if (2 * t3 < 1) - val = t2; - else if (3 * t3 < 2) - val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; - else - val = t1; - - rgb[i] = val * 255; - } - - return rgb; - } - - function hsl2hsv(hsl) { - var h = hsl[0], - s = hsl[1] / 100, - l = hsl[2] / 100, - sv, v; - - if(l === 0) { - // no need to do calc on black - // also avoids divide by 0 error - return [0, 0, 0]; - } - - l *= 2; - s *= (l <= 1) ? l : 2 - l; - v = (l + s) / 2; - sv = (2 * s) / (l + s); - return [h, sv * 100, v * 100]; - } - - function hsl2hwb(args) { - return rgb2hwb(hsl2rgb(args)); - } - - function hsl2cmyk(args) { - return rgb2cmyk(hsl2rgb(args)); - } - - function hsl2keyword(args) { - return rgb2keyword(hsl2rgb(args)); - } - - - function hsv2rgb(hsv) { - var h = hsv[0] / 60, - s = hsv[1] / 100, - v = hsv[2] / 100, - hi = Math.floor(h) % 6; - - var f = h - Math.floor(h), - p = 255 * v * (1 - s), - q = 255 * v * (1 - (s * f)), - t = 255 * v * (1 - (s * (1 - f))), - v = 255 * v; - - switch(hi) { - case 0: - return [v, t, p]; - case 1: - return [q, v, p]; - case 2: - return [p, v, t]; - case 3: - return [p, q, v]; - case 4: - return [t, p, v]; - case 5: - return [v, p, q]; - } - } - - function hsv2hsl(hsv) { - var h = hsv[0], - s = hsv[1] / 100, - v = hsv[2] / 100, - sl, l; - - l = (2 - s) * v; - sl = s * v; - sl /= (l <= 1) ? l : 2 - l; - sl = sl || 0; - l /= 2; - return [h, sl * 100, l * 100]; - } - - function hsv2hwb(args) { - return rgb2hwb(hsv2rgb(args)) - } - - function hsv2cmyk(args) { - return rgb2cmyk(hsv2rgb(args)); - } - - function hsv2keyword(args) { - return rgb2keyword(hsv2rgb(args)); - } - -// http://dev.w3.org/csswg/css-color/#hwb-to-rgb - function hwb2rgb(hwb) { - var h = hwb[0] / 360, - wh = hwb[1] / 100, - bl = hwb[2] / 100, - ratio = wh + bl, - i, v, f, n; - - // wh + bl cant be > 1 - if (ratio > 1) { - wh /= ratio; - bl /= ratio; - } - - i = Math.floor(6 * h); - v = 1 - bl; - f = 6 * h - i; - if ((i & 0x01) != 0) { - f = 1 - f; - } - n = wh + f * (v - wh); // linear interpolation - - switch (i) { - default: - case 6: - case 0: r = v; g = n; b = wh; break; - case 1: r = n; g = v; b = wh; break; - case 2: r = wh; g = v; b = n; break; - case 3: r = wh; g = n; b = v; break; - case 4: r = n; g = wh; b = v; break; - case 5: r = v; g = wh; b = n; break; - } - - return [r * 255, g * 255, b * 255]; - } - - function hwb2hsl(args) { - return rgb2hsl(hwb2rgb(args)); - } - - function hwb2hsv(args) { - return rgb2hsv(hwb2rgb(args)); - } - - function hwb2cmyk(args) { - return rgb2cmyk(hwb2rgb(args)); - } - - function hwb2keyword(args) { - return rgb2keyword(hwb2rgb(args)); - } - - function cmyk2rgb(cmyk) { - var c = cmyk[0] / 100, - m = cmyk[1] / 100, - y = cmyk[2] / 100, - k = cmyk[3] / 100, - r, g, b; - - r = 1 - Math.min(1, c * (1 - k) + k); - g = 1 - Math.min(1, m * (1 - k) + k); - b = 1 - Math.min(1, y * (1 - k) + k); - return [r * 255, g * 255, b * 255]; - } - - function cmyk2hsl(args) { - return rgb2hsl(cmyk2rgb(args)); - } - - function cmyk2hsv(args) { - return rgb2hsv(cmyk2rgb(args)); - } - - function cmyk2hwb(args) { - return rgb2hwb(cmyk2rgb(args)); - } - - function cmyk2keyword(args) { - return rgb2keyword(cmyk2rgb(args)); - } - - - function xyz2rgb(xyz) { - var x = xyz[0] / 100, - y = xyz[1] / 100, - z = xyz[2] / 100, - r, g, b; - - r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); - g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); - b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); - - // assume sRGB - r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) - : r = (r * 12.92); - - g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) - : g = (g * 12.92); - - b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) - : b = (b * 12.92); - - r = Math.min(Math.max(0, r), 1); - g = Math.min(Math.max(0, g), 1); - b = Math.min(Math.max(0, b), 1); - - return [r * 255, g * 255, b * 255]; - } - - function xyz2lab(xyz) { - var x = xyz[0], - y = xyz[1], - z = xyz[2], - l, a, b; - - x /= 95.047; - y /= 100; - z /= 108.883; - - x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); - - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); - - return [l, a, b]; - } - - function xyz2lch(args) { - return lab2lch(xyz2lab(args)); - } - - function lab2xyz(lab) { - var l = lab[0], - a = lab[1], - b = lab[2], - x, y, z, y2; - - if (l <= 8) { - y = (l * 100) / 903.3; - y2 = (7.787 * (y / 100)) + (16 / 116); - } else { - y = 100 * Math.pow((l + 16) / 116, 3); - y2 = Math.pow(y / 100, 1/3); - } - - x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3); - - z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3); - - return [x, y, z]; - } - - function lab2lch(lab) { - var l = lab[0], - a = lab[1], - b = lab[2], - hr, h, c; - - hr = Math.atan2(b, a); - h = hr * 360 / 2 / Math.PI; - if (h < 0) { - h += 360; - } - c = Math.sqrt(a * a + b * b); - return [l, c, h]; - } - - function lab2rgb(args) { - return xyz2rgb(lab2xyz(args)); - } - - function lch2lab(lch) { - var l = lch[0], - c = lch[1], - h = lch[2], - a, b, hr; - - hr = h / 360 * 2 * Math.PI; - a = c * Math.cos(hr); - b = c * Math.sin(hr); - return [l, a, b]; - } - - function lch2xyz(args) { - return lab2xyz(lch2lab(args)); - } - - function lch2rgb(args) { - return lab2rgb(lch2lab(args)); - } - - function keyword2rgb(keyword) { - return cssKeywords[keyword]; - } - - function keyword2hsl(args) { - return rgb2hsl(keyword2rgb(args)); - } - - function keyword2hsv(args) { - return rgb2hsv(keyword2rgb(args)); - } - - function keyword2hwb(args) { - return rgb2hwb(keyword2rgb(args)); - } - - function keyword2cmyk(args) { - return rgb2cmyk(keyword2rgb(args)); - } - - function keyword2lab(args) { - return rgb2lab(keyword2rgb(args)); - } - - function keyword2xyz(args) { - return rgb2xyz(keyword2rgb(args)); - } - - var cssKeywords = { - aliceblue: [240,248,255], - antiquewhite: [250,235,215], - aqua: [0,255,255], - aquamarine: [127,255,212], - azure: [240,255,255], - beige: [245,245,220], - bisque: [255,228,196], - black: [0,0,0], - blanchedalmond: [255,235,205], - blue: [0,0,255], - blueviolet: [138,43,226], - brown: [165,42,42], - burlywood: [222,184,135], - cadetblue: [95,158,160], - chartreuse: [127,255,0], - chocolate: [210,105,30], - coral: [255,127,80], - cornflowerblue: [100,149,237], - cornsilk: [255,248,220], - crimson: [220,20,60], - cyan: [0,255,255], - darkblue: [0,0,139], - darkcyan: [0,139,139], - darkgoldenrod: [184,134,11], - darkgray: [169,169,169], - darkgreen: [0,100,0], - darkgrey: [169,169,169], - darkkhaki: [189,183,107], - darkmagenta: [139,0,139], - darkolivegreen: [85,107,47], - darkorange: [255,140,0], - darkorchid: [153,50,204], - darkred: [139,0,0], - darksalmon: [233,150,122], - darkseagreen: [143,188,143], - darkslateblue: [72,61,139], - darkslategray: [47,79,79], - darkslategrey: [47,79,79], - darkturquoise: [0,206,209], - darkviolet: [148,0,211], - deeppink: [255,20,147], - deepskyblue: [0,191,255], - dimgray: [105,105,105], - dimgrey: [105,105,105], - dodgerblue: [30,144,255], - firebrick: [178,34,34], - floralwhite: [255,250,240], - forestgreen: [34,139,34], - fuchsia: [255,0,255], - gainsboro: [220,220,220], - ghostwhite: [248,248,255], - gold: [255,215,0], - goldenrod: [218,165,32], - gray: [128,128,128], - green: [0,128,0], - greenyellow: [173,255,47], - grey: [128,128,128], - honeydew: [240,255,240], - hotpink: [255,105,180], - indianred: [205,92,92], - indigo: [75,0,130], - ivory: [255,255,240], - khaki: [240,230,140], - lavender: [230,230,250], - lavenderblush: [255,240,245], - lawngreen: [124,252,0], - lemonchiffon: [255,250,205], - lightblue: [173,216,230], - lightcoral: [240,128,128], - lightcyan: [224,255,255], - lightgoldenrodyellow: [250,250,210], - lightgray: [211,211,211], - lightgreen: [144,238,144], - lightgrey: [211,211,211], - lightpink: [255,182,193], - lightsalmon: [255,160,122], - lightseagreen: [32,178,170], - lightskyblue: [135,206,250], - lightslategray: [119,136,153], - lightslategrey: [119,136,153], - lightsteelblue: [176,196,222], - lightyellow: [255,255,224], - lime: [0,255,0], - limegreen: [50,205,50], - linen: [250,240,230], - magenta: [255,0,255], - maroon: [128,0,0], - mediumaquamarine: [102,205,170], - mediumblue: [0,0,205], - mediumorchid: [186,85,211], - mediumpurple: [147,112,219], - mediumseagreen: [60,179,113], - mediumslateblue: [123,104,238], - mediumspringgreen: [0,250,154], - mediumturquoise: [72,209,204], - mediumvioletred: [199,21,133], - midnightblue: [25,25,112], - mintcream: [245,255,250], - mistyrose: [255,228,225], - moccasin: [255,228,181], - navajowhite: [255,222,173], - navy: [0,0,128], - oldlace: [253,245,230], - olive: [128,128,0], - olivedrab: [107,142,35], - orange: [255,165,0], - orangered: [255,69,0], - orchid: [218,112,214], - palegoldenrod: [238,232,170], - palegreen: [152,251,152], - paleturquoise: [175,238,238], - palevioletred: [219,112,147], - papayawhip: [255,239,213], - peachpuff: [255,218,185], - peru: [205,133,63], - pink: [255,192,203], - plum: [221,160,221], - powderblue: [176,224,230], - purple: [128,0,128], - rebeccapurple: [102, 51, 153], - red: [255,0,0], - rosybrown: [188,143,143], - royalblue: [65,105,225], - saddlebrown: [139,69,19], - salmon: [250,128,114], - sandybrown: [244,164,96], - seagreen: [46,139,87], - seashell: [255,245,238], - sienna: [160,82,45], - silver: [192,192,192], - skyblue: [135,206,235], - slateblue: [106,90,205], - slategray: [112,128,144], - slategrey: [112,128,144], - snow: [255,250,250], - springgreen: [0,255,127], - steelblue: [70,130,180], - tan: [210,180,140], - teal: [0,128,128], - thistle: [216,191,216], - tomato: [255,99,71], - turquoise: [64,224,208], - violet: [238,130,238], - wheat: [245,222,179], - white: [255,255,255], - whitesmoke: [245,245,245], - yellow: [255,255,0], - yellowgreen: [154,205,50] - }; - - var reverseKeywords = {}; - for (var key in cssKeywords) { - reverseKeywords[JSON.stringify(cssKeywords[key])] = key; - } - -},{}],5:[function(require,module,exports){ - var conversions = require(4); - - var convert = function() { - return new Converter(); - } - - for (var func in conversions) { - // export Raw versions - convert[func + "Raw"] = (function(func) { - // accept array or plain args - return function(arg) { - if (typeof arg == "number") - arg = Array.prototype.slice.call(arguments); - return conversions[func](arg); - } - })(func); - - var pair = /(\w+)2(\w+)/.exec(func), - from = pair[1], - to = pair[2]; - - // export rgb2hsl and ["rgb"]["hsl"] - convert[from] = convert[from] || {}; - - convert[from][to] = convert[func] = (function(func) { - return function(arg) { - if (typeof arg == "number") - arg = Array.prototype.slice.call(arguments); - - var val = conversions[func](arg); - if (typeof val == "string" || val === undefined) - return val; // keyword - - for (var i = 0; i < val.length; i++) - val[i] = Math.round(val[i]); - return val; - } - })(func); - } - - - /* Converter does lazy conversion and caching */ - var Converter = function() { - this.convs = {}; - }; - - /* Either get the values for a space or - set the values for a space, depending on args */ - Converter.prototype.routeSpace = function(space, args) { - var values = args[0]; - if (values === undefined) { - // color.rgb() - return this.getValues(space); - } - // color.rgb(10, 10, 10) - if (typeof values == "number") { - values = Array.prototype.slice.call(args); - } - - return this.setValues(space, values); - }; - - /* Set the values for a space, invalidating cache */ - Converter.prototype.setValues = function(space, values) { - this.space = space; - this.convs = {}; - this.convs[space] = values; - return this; - }; - - /* Get the values for a space. If there's already - a conversion for the space, fetch it, otherwise - compute it */ - Converter.prototype.getValues = function(space) { - var vals = this.convs[space]; - if (!vals) { - var fspace = this.space, - from = this.convs[fspace]; - vals = convert[fspace][space](from); - - this.convs[space] = vals; - } - return vals; - }; - - ["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function(space) { - Converter.prototype[space] = function(vals) { - return this.routeSpace(space, arguments); - } - }); - - module.exports = convert; -},{"4":4}],6:[function(require,module,exports){ - module.exports = { - "aliceblue": [240, 248, 255], - "antiquewhite": [250, 235, 215], - "aqua": [0, 255, 255], - "aquamarine": [127, 255, 212], - "azure": [240, 255, 255], - "beige": [245, 245, 220], - "bisque": [255, 228, 196], - "black": [0, 0, 0], - "blanchedalmond": [255, 235, 205], - "blue": [0, 0, 255], - "blueviolet": [138, 43, 226], - "brown": [165, 42, 42], - "burlywood": [222, 184, 135], - "cadetblue": [95, 158, 160], - "chartreuse": [127, 255, 0], - "chocolate": [210, 105, 30], - "coral": [255, 127, 80], - "cornflowerblue": [100, 149, 237], - "cornsilk": [255, 248, 220], - "crimson": [220, 20, 60], - "cyan": [0, 255, 255], - "darkblue": [0, 0, 139], - "darkcyan": [0, 139, 139], - "darkgoldenrod": [184, 134, 11], - "darkgray": [169, 169, 169], - "darkgreen": [0, 100, 0], - "darkgrey": [169, 169, 169], - "darkkhaki": [189, 183, 107], - "darkmagenta": [139, 0, 139], - "darkolivegreen": [85, 107, 47], - "darkorange": [255, 140, 0], - "darkorchid": [153, 50, 204], - "darkred": [139, 0, 0], - "darksalmon": [233, 150, 122], - "darkseagreen": [143, 188, 143], - "darkslateblue": [72, 61, 139], - "darkslategray": [47, 79, 79], - "darkslategrey": [47, 79, 79], - "darkturquoise": [0, 206, 209], - "darkviolet": [148, 0, 211], - "deeppink": [255, 20, 147], - "deepskyblue": [0, 191, 255], - "dimgray": [105, 105, 105], - "dimgrey": [105, 105, 105], - "dodgerblue": [30, 144, 255], - "firebrick": [178, 34, 34], - "floralwhite": [255, 250, 240], - "forestgreen": [34, 139, 34], - "fuchsia": [255, 0, 255], - "gainsboro": [220, 220, 220], - "ghostwhite": [248, 248, 255], - "gold": [255, 215, 0], - "goldenrod": [218, 165, 32], - "gray": [128, 128, 128], - "green": [0, 128, 0], - "greenyellow": [173, 255, 47], - "grey": [128, 128, 128], - "honeydew": [240, 255, 240], - "hotpink": [255, 105, 180], - "indianred": [205, 92, 92], - "indigo": [75, 0, 130], - "ivory": [255, 255, 240], - "khaki": [240, 230, 140], - "lavender": [230, 230, 250], - "lavenderblush": [255, 240, 245], - "lawngreen": [124, 252, 0], - "lemonchiffon": [255, 250, 205], - "lightblue": [173, 216, 230], - "lightcoral": [240, 128, 128], - "lightcyan": [224, 255, 255], - "lightgoldenrodyellow": [250, 250, 210], - "lightgray": [211, 211, 211], - "lightgreen": [144, 238, 144], - "lightgrey": [211, 211, 211], - "lightpink": [255, 182, 193], - "lightsalmon": [255, 160, 122], - "lightseagreen": [32, 178, 170], - "lightskyblue": [135, 206, 250], - "lightslategray": [119, 136, 153], - "lightslategrey": [119, 136, 153], - "lightsteelblue": [176, 196, 222], - "lightyellow": [255, 255, 224], - "lime": [0, 255, 0], - "limegreen": [50, 205, 50], - "linen": [250, 240, 230], - "magenta": [255, 0, 255], - "maroon": [128, 0, 0], - "mediumaquamarine": [102, 205, 170], - "mediumblue": [0, 0, 205], - "mediumorchid": [186, 85, 211], - "mediumpurple": [147, 112, 219], - "mediumseagreen": [60, 179, 113], - "mediumslateblue": [123, 104, 238], - "mediumspringgreen": [0, 250, 154], - "mediumturquoise": [72, 209, 204], - "mediumvioletred": [199, 21, 133], - "midnightblue": [25, 25, 112], - "mintcream": [245, 255, 250], - "mistyrose": [255, 228, 225], - "moccasin": [255, 228, 181], - "navajowhite": [255, 222, 173], - "navy": [0, 0, 128], - "oldlace": [253, 245, 230], - "olive": [128, 128, 0], - "olivedrab": [107, 142, 35], - "orange": [255, 165, 0], - "orangered": [255, 69, 0], - "orchid": [218, 112, 214], - "palegoldenrod": [238, 232, 170], - "palegreen": [152, 251, 152], - "paleturquoise": [175, 238, 238], - "palevioletred": [219, 112, 147], - "papayawhip": [255, 239, 213], - "peachpuff": [255, 218, 185], - "peru": [205, 133, 63], - "pink": [255, 192, 203], - "plum": [221, 160, 221], - "powderblue": [176, 224, 230], - "purple": [128, 0, 128], - "rebeccapurple": [102, 51, 153], - "red": [255, 0, 0], - "rosybrown": [188, 143, 143], - "royalblue": [65, 105, 225], - "saddlebrown": [139, 69, 19], - "salmon": [250, 128, 114], - "sandybrown": [244, 164, 96], - "seagreen": [46, 139, 87], - "seashell": [255, 245, 238], - "sienna": [160, 82, 45], - "silver": [192, 192, 192], - "skyblue": [135, 206, 235], - "slateblue": [106, 90, 205], - "slategray": [112, 128, 144], - "slategrey": [112, 128, 144], - "snow": [255, 250, 250], - "springgreen": [0, 255, 127], - "steelblue": [70, 130, 180], - "tan": [210, 180, 140], - "teal": [0, 128, 128], - "thistle": [216, 191, 216], - "tomato": [255, 99, 71], - "turquoise": [64, 224, 208], - "violet": [238, 130, 238], - "wheat": [245, 222, 179], - "white": [255, 255, 255], - "whitesmoke": [245, 245, 245], - "yellow": [255, 255, 0], - "yellowgreen": [154, 205, 50] - }; -},{}],7:[function(require,module,exports){ - /** - * @namespace Chart - */ - var Chart = require(27)(); - - require(26)(Chart); - require(22)(Chart); - require(25)(Chart); - require(21)(Chart); - require(23)(Chart); - require(24)(Chart); - require(28)(Chart); - require(32)(Chart); - require(30)(Chart); - require(31)(Chart); - require(33)(Chart); - require(29)(Chart); - require(34)(Chart); - - require(35)(Chart); - require(36)(Chart); - require(37)(Chart); - require(38)(Chart); - - require(41)(Chart); - require(39)(Chart); - require(40)(Chart); - require(42)(Chart); - require(43)(Chart); - require(44)(Chart); - -// Controllers must be loaded after elements -// See Chart.core.datasetController.dataElementType - require(15)(Chart); - require(16)(Chart); - require(17)(Chart); - require(18)(Chart); - require(19)(Chart); - require(20)(Chart); - - require(8)(Chart); - require(9)(Chart); - require(10)(Chart); - require(11)(Chart); - require(12)(Chart); - require(13)(Chart); - require(14)(Chart); - - window.Chart = module.exports = Chart; - -},{"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":26,"27":27,"28":28,"29":29,"30":30,"31":31,"32":32,"33":33,"34":34,"35":35,"36":36,"37":37,"38":38,"39":39,"40":40,"41":41,"42":42,"43":43,"44":44,"8":8,"9":9}],8:[function(require,module,exports){ - "use strict"; - - module.exports = function(Chart) { - - Chart.Bar = function(context, config) { - config.type = 'bar'; - - return new Chart(context, config); - }; - - }; -},{}],9:[function(require,module,exports){ - "use strict"; - - module.exports = function(Chart) { - - Chart.Bubble = function(context, config) { - config.type = 'bubble'; - return new Chart(context, config); - }; - - }; -},{}],10:[function(require,module,exports){ - "use strict"; - - module.exports = function(Chart) { - - Chart.Doughnut = function(context, config) { - config.type = 'doughnut'; - - return new Chart(context, config); - }; - - }; -},{}],11:[function(require,module,exports){ - "use strict"; - - module.exports = function(Chart) { - - Chart.Line = function(context, config) { - config.type = 'line'; - - return new Chart(context, config); - }; - - }; -},{}],12:[function(require,module,exports){ - "use strict"; - - module.exports = function(Chart) { - - Chart.PolarArea = function(context, config) { - config.type = 'polarArea'; - - return new Chart(context, config); - }; - - }; -},{}],13:[function(require,module,exports){ - "use strict"; - - module.exports = function(Chart) { - - Chart.Radar = function(context, config) { - config.options = Chart.helpers.configMerge({ aspectRatio: 1 }, config.options); - config.type = 'radar'; - - return new Chart(context, config); - }; - - }; - -},{}],14:[function(require,module,exports){ - "use strict"; - - module.exports = function(Chart) { - - var defaultConfig = { - hover: { - mode: 'single' - }, - - scales: { - xAxes: [{ - type: "linear", // scatter should not use a category axis - position: "bottom", - id: "x-axis-1" // need an ID so datasets can reference the scale - }], - yAxes: [{ - type: "linear", - position: "left", - id: "y-axis-1" - }] - }, - - tooltips: { - callbacks: { - title: function() { - // Title doesn't make sense for scatter since we format the data as a point - return ''; - }, - label: function(tooltipItem) { - return '(' + tooltipItem.xLabel + ', ' + tooltipItem.yLabel + ')'; - } - } - } - }; - - // Register the default config for this type - Chart.defaults.scatter = defaultConfig; - - // Scatter charts use line controllers - Chart.controllers.scatter = Chart.controllers.line; - - Chart.Scatter = function(context, config) { - config.type = 'scatter'; - return new Chart(context, config); - }; - - }; -},{}],15:[function(require,module,exports){ - "use strict"; - - module.exports = function(Chart) { - - var helpers = Chart.helpers; - - Chart.defaults.bar = { - hover: { - mode: "label" - }, - - scales: { - xAxes: [{ - type: "category", - - // Specific to Bar Controller - categoryPercentage: 0.8, - barPercentage: 0.9, - - // grid line settings - gridLines: { - offsetGridLines: true - } - }], - yAxes: [{ - type: "linear" - }] - } - }; - - Chart.controllers.bar = Chart.DatasetController.extend({ - - dataElementType: Chart.elements.Rectangle, - - initialize: function(chart, datasetIndex) { - Chart.DatasetController.prototype.initialize.call(this, chart, datasetIndex); - - // Use this to indicate that this is a bar dataset. - this.getMeta().bar = true; - }, - - // Get the number of datasets that display bars. We use this to correctly calculate the bar width - getBarCount: function() { - var me = this; - var barCount = 0; - helpers.each(me.chart.data.datasets, function(dataset, datasetIndex) { - var meta = me.chart.getDatasetMeta(datasetIndex); - if (meta.bar && me.chart.isDatasetVisible(datasetIndex)) { - ++barCount; - } - }, me); - return barCount; - }, - - update: function(reset) { - var me = this; - helpers.each(me.getMeta().data, function(rectangle, index) { - me.updateElement(rectangle, index, reset); - }, me); - }, - - updateElement: function(rectangle, index, reset) { - var me = this; - var meta = me.getMeta(); - var xScale = me.getScaleForId(meta.xAxisID); - var yScale = me.getScaleForId(meta.yAxisID); - var scaleBase = yScale.getBasePixel(); - var rectangleElementOptions = me.chart.options.elements.rectangle; - var custom = rectangle.custom || {}; - var dataset = me.getDataset(); - - helpers.extend(rectangle, { - // Utility - _xScale: xScale, - _yScale: yScale, - _datasetIndex: me.index, - _index: index, - - // Desired view properties - _model: { - x: me.calculateBarX(index, me.index), - y: reset ? scaleBase : me.calculateBarY(index, me.index), - - // Tooltip - label: me.chart.data.labels[index], - datasetLabel: dataset.label, - - // Appearance - base: reset ? scaleBase : me.calculateBarBase(me.index, index), - width: me.calculateBarWidth(index), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor), - borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleElementOptions.borderSkipped, - borderColor: custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor), - borderWidth: custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth) - } - }); - rectangle.pivot(); - }, - - calculateBarBase: function(datasetIndex, index) { - var me = this; - var meta = me.getMeta(); - var yScale = me.getScaleForId(meta.yAxisID); - var base = 0; - - if (yScale.options.stacked) { - var chart = me.chart; - var datasets = chart.data.datasets; - var value = Number(datasets[datasetIndex].data[index]); - - for (var i = 0; i < datasetIndex; i++) { - var currentDs = datasets[i]; - var currentDsMeta = chart.getDatasetMeta(i); - if (currentDsMeta.bar && currentDsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) { - var currentVal = Number(currentDs.data[index]); - base += value < 0 ? Math.min(currentVal, 0) : Math.max(currentVal, 0); - } - } - - return yScale.getPixelForValue(base); - } - - return yScale.getBasePixel(); - }, - - getRuler: function(index) { - var me = this; - var meta = me.getMeta(); - var xScale = me.getScaleForId(meta.xAxisID); - var datasetCount = me.getBarCount(); - - var tickWidth; - - if (xScale.options.type === 'category') { - tickWidth = xScale.getPixelForTick(index + 1) - xScale.getPixelForTick(index); - } else { - // Average width - tickWidth = xScale.width / xScale.ticks.length; - } - var categoryWidth = tickWidth * xScale.options.categoryPercentage; - var categorySpacing = (tickWidth - (tickWidth * xScale.options.categoryPercentage)) / 2; - var fullBarWidth = categoryWidth / datasetCount; - - if (xScale.ticks.length !== me.chart.data.labels.length) { - var perc = xScale.ticks.length / me.chart.data.labels.length; - fullBarWidth = fullBarWidth * perc; - } - - var barWidth = fullBarWidth * xScale.options.barPercentage; - var barSpacing = fullBarWidth - (fullBarWidth * xScale.options.barPercentage); - - return { - datasetCount: datasetCount, - tickWidth: tickWidth, - categoryWidth: categoryWidth, - categorySpacing: categorySpacing, - fullBarWidth: fullBarWidth, - barWidth: barWidth, - barSpacing: barSpacing - }; - }, - - calculateBarWidth: function(index) { - var xScale = this.getScaleForId(this.getMeta().xAxisID); - if (xScale.options.barThickness) { - return xScale.options.barThickness; - } - var ruler = this.getRuler(index); - return xScale.options.stacked ? ruler.categoryWidth : ruler.barWidth; - }, - - // Get bar index from the given dataset index accounting for the fact that not all bars are visible - getBarIndex: function(datasetIndex) { - var barIndex = 0; - var meta, j; - - for (j = 0; j < datasetIndex; ++j) { - meta = this.chart.getDatasetMeta(j); - if (meta.bar && this.chart.isDatasetVisible(j)) { - ++barIndex; - } - } - - return barIndex; - }, - - calculateBarX: function(index, datasetIndex) { - var me = this; - var meta = me.getMeta(); - var xScale = me.getScaleForId(meta.xAxisID); - var barIndex = me.getBarIndex(datasetIndex); - - var ruler = me.getRuler(index); - var leftTick = xScale.getPixelForValue(null, index, datasetIndex, me.chart.isCombo); - leftTick -= me.chart.isCombo ? (ruler.tickWidth / 2) : 0; - - if (xScale.options.stacked) { - return leftTick + (ruler.categoryWidth / 2) + ruler.categorySpacing; - } - - return leftTick + - (ruler.barWidth / 2) + - ruler.categorySpacing + - (ruler.barWidth * barIndex) + - (ruler.barSpacing / 2) + - (ruler.barSpacing * barIndex); - }, - - calculateBarY: function(index, datasetIndex) { - var me = this; - var meta = me.getMeta(); - var yScale = me.getScaleForId(meta.yAxisID); - var value = Number(me.getDataset().data[index]); - - if (yScale.options.stacked) { - - var sumPos = 0, - sumNeg = 0; - - for (var i = 0; i < datasetIndex; i++) { - var ds = me.chart.data.datasets[i]; - var dsMeta = me.chart.getDatasetMeta(i); - if (dsMeta.bar && dsMeta.yAxisID === yScale.id && me.chart.isDatasetVisible(i)) { - var stackedVal = Number(ds.data[index]); - if (stackedVal < 0) { - sumNeg += stackedVal || 0; - } else { - sumPos += stackedVal || 0; - } - } - } - - if (value < 0) { - return yScale.getPixelForValue(sumNeg + value); - } else { - return yScale.getPixelForValue(sumPos + value); - } - } - - return yScale.getPixelForValue(value); - }, - - draw: function(ease) { - var me = this; - var easingDecimal = ease || 1; - helpers.each(me.getMeta().data, function(rectangle, index) { - var d = me.getDataset().data[index]; - if (d !== null && d !== undefined && !isNaN(d)) { - rectangle.transition(easingDecimal).draw(); - } - }, me); - }, - - setHoverStyle: function(rectangle) { - var dataset = this.chart.data.datasets[rectangle._datasetIndex]; - var index = rectangle._index; - - var custom = rectangle.custom || {}; - var model = rectangle._model; - model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.getValueAtIndexOrDefault(dataset.hoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); - model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.getValueAtIndexOrDefault(dataset.hoverBorderColor, index, helpers.getHoverColor(model.borderColor)); - model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.getValueAtIndexOrDefault(dataset.hoverBorderWidth, index, model.borderWidth); - }, - - removeHoverStyle: function(rectangle) { - var dataset = this.chart.data.datasets[rectangle._datasetIndex]; - var index = rectangle._index; - var custom = rectangle.custom || {}; - var model = rectangle._model; - var rectangleElementOptions = this.chart.options.elements.rectangle; - - model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor); - model.borderColor = custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor); - model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth); - } - - }); - - - // including horizontalBar in the bar file, instead of a file of its own - // it extends bar (like pie extends doughnut) - Chart.defaults.horizontalBar = { - hover: { - mode: "label" - }, - - scales: { - xAxes: [{ - type: "linear", - position: "bottom" - }], - yAxes: [{ - position: "left", - type: "category", - - // Specific to Horizontal Bar Controller - categoryPercentage: 0.8, - barPercentage: 0.9, - - // grid line settings - gridLines: { - offsetGridLines: true - } - }] - }, - elements: { - rectangle: { - borderSkipped: 'left' - } - }, - tooltips: { - callbacks: { - title: function(tooltipItems, data) { - // Pick first xLabel for now - var title = ''; - - if (tooltipItems.length > 0) { - if (tooltipItems[0].yLabel) { - title = tooltipItems[0].yLabel; - } else if (data.labels.length > 0 && tooltipItems[0].index < data.labels.length) { - title = data.labels[tooltipItems[0].index]; - } - } - - return title; - }, - label: function(tooltipItem, data) { - var datasetLabel = data.datasets[tooltipItem.datasetIndex].label || ''; - return datasetLabel + ': ' + tooltipItem.xLabel; - } - } - } - }; - - Chart.controllers.horizontalBar = Chart.controllers.bar.extend({ - updateElement: function(rectangle, index, reset) { - var me = this; - var meta = me.getMeta(); - var xScale = me.getScaleForId(meta.xAxisID); - var yScale = me.getScaleForId(meta.yAxisID); - var scaleBase = xScale.getBasePixel(); - var custom = rectangle.custom || {}; - var dataset = me.getDataset(); - var rectangleElementOptions = me.chart.options.elements.rectangle; - - helpers.extend(rectangle, { - // Utility - _xScale: xScale, - _yScale: yScale, - _datasetIndex: me.index, - _index: index, - - // Desired view properties - _model: { - x: reset ? scaleBase : me.calculateBarX(index, me.index), - y: me.calculateBarY(index, me.index), - - // Tooltip - label: me.chart.data.labels[index], - datasetLabel: dataset.label, - - // Appearance - base: reset ? scaleBase : me.calculateBarBase(me.index, index), - height: me.calculateBarHeight(index), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor), - borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleElementOptions.borderSkipped, - borderColor: custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor), - borderWidth: custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth) - }, - - draw: function () { - var ctx = this._chart.ctx; - var vm = this._view; - - var halfHeight = vm.height / 2, - topY = vm.y - halfHeight, - bottomY = vm.y + halfHeight, - right = vm.base - (vm.base - vm.x), - halfStroke = vm.borderWidth / 2; - - // Canvas doesn't allow us to stroke inside the width so we can - // adjust the sizes to fit if we're setting a stroke on the line - if (vm.borderWidth) { - topY += halfStroke; - bottomY -= halfStroke; - right += halfStroke; - } - - ctx.beginPath(); - - ctx.fillStyle = vm.backgroundColor; - ctx.strokeStyle = vm.borderColor; - ctx.lineWidth = vm.borderWidth; - - // Corner points, from bottom-left to bottom-right clockwise - // | 1 2 | - // | 0 3 | - var corners = [ - [vm.base, bottomY], - [vm.base, topY], - [right, topY], - [right, bottomY] - ]; - - // Find first (starting) corner with fallback to 'bottom' - var borders = ['bottom', 'left', 'top', 'right']; - var startCorner = borders.indexOf(vm.borderSkipped, 0); - if (startCorner === -1) - startCorner = 0; - - function cornerAt(index) { - return corners[(startCorner + index) % 4]; - } - - // Draw rectangle from 'startCorner' - ctx.moveTo.apply(ctx, cornerAt(0)); - for (var i = 1; i < 4; i++) - ctx.lineTo.apply(ctx, cornerAt(i)); - - ctx.fill(); - if (vm.borderWidth) { - ctx.stroke(); - } - }, - - inRange: function (mouseX, mouseY) { - var vm = this._view; - var inRange = false; - - if (vm) { - if (vm.x < vm.base) { - inRange = (mouseY >= vm.y - vm.height / 2 && mouseY <= vm.y + vm.height / 2) && (mouseX >= vm.x && mouseX <= vm.base); - } else { - inRange = (mouseY >= vm.y - vm.height / 2 && mouseY <= vm.y + vm.height / 2) && (mouseX >= vm.base && mouseX <= vm.x); - } - } - - return inRange; - } - }); - - rectangle.pivot(); - }, - - calculateBarBase: function (datasetIndex, index) { - var me = this; - var meta = me.getMeta(); - var xScale = me.getScaleForId(meta.xAxisID); - var base = 0; - - if (xScale.options.stacked) { - var chart = me.chart; - var datasets = chart.data.datasets; - var value = Number(datasets[datasetIndex].data[index]); - - for (var i = 0; i < datasetIndex; i++) { - var currentDs = datasets[i]; - var currentDsMeta = chart.getDatasetMeta(i); - if (currentDsMeta.bar && currentDsMeta.xAxisID === xScale.id && chart.isDatasetVisible(i)) { - var currentVal = Number(currentDs.data[index]); - base += value < 0 ? Math.min(currentVal, 0) : Math.max(currentVal, 0); - } - } - - return xScale.getPixelForValue(base); - } - - return xScale.getBasePixel(); - }, - - getRuler: function (index) { - var me = this; - var meta = me.getMeta(); - var yScale = me.getScaleForId(meta.yAxisID); - var datasetCount = me.getBarCount(); - - var tickHeight; - if (yScale.options.type === 'category') { - tickHeight = yScale.getPixelForTick(index + 1) - yScale.getPixelForTick(index); - } else { - // Average width - tickHeight = yScale.width / yScale.ticks.length; - } - var categoryHeight = tickHeight * yScale.options.categoryPercentage; - var categorySpacing = (tickHeight - (tickHeight * yScale.options.categoryPercentage)) / 2; - var fullBarHeight = categoryHeight / datasetCount; - - if (yScale.ticks.length !== me.chart.data.labels.length) { - var perc = yScale.ticks.length / me.chart.data.labels.length; - fullBarHeight = fullBarHeight * perc; - } - - var barHeight = fullBarHeight * yScale.options.barPercentage; - var barSpacing = fullBarHeight - (fullBarHeight * yScale.options.barPercentage); - - return { - datasetCount: datasetCount, - tickHeight: tickHeight, - categoryHeight: categoryHeight, - categorySpacing: categorySpacing, - fullBarHeight: fullBarHeight, - barHeight: barHeight, - barSpacing: barSpacing - }; - }, - - calculateBarHeight: function (index) { - var me = this; - var yScale = me.getScaleForId(me.getMeta().yAxisID); - if (yScale.options.barThickness) { - return yScale.options.barThickness; - } - var ruler = me.getRuler(index); - return yScale.options.stacked ? ruler.categoryHeight : ruler.barHeight; - }, - - calculateBarX: function (index, datasetIndex) { - var me = this; - var meta = me.getMeta(); - var xScale = me.getScaleForId(meta.xAxisID); - var value = Number(me.getDataset().data[index]); - - if (xScale.options.stacked) { - - var sumPos = 0, - sumNeg = 0; - - for (var i = 0; i < datasetIndex; i++) { - var ds = me.chart.data.datasets[i]; - var dsMeta = me.chart.getDatasetMeta(i); - if (dsMeta.bar && dsMeta.xAxisID === xScale.id && me.chart.isDatasetVisible(i)) { - var stackedVal = Number(ds.data[index]); - if (stackedVal < 0) { - sumNeg += stackedVal || 0; - } else { - sumPos += stackedVal || 0; - } - } - } - - if (value < 0) { - return xScale.getPixelForValue(sumNeg + value); - } else { - return xScale.getPixelForValue(sumPos + value); - } - } - - return xScale.getPixelForValue(value); - }, - - calculateBarY: function (index, datasetIndex) { - var me = this; - var meta = me.getMeta(); - var yScale = me.getScaleForId(meta.yAxisID); - var barIndex = me.getBarIndex(datasetIndex); - - var ruler = me.getRuler(index); - var topTick = yScale.getPixelForValue(null, index, datasetIndex, me.chart.isCombo); - topTick -= me.chart.isCombo ? (ruler.tickHeight / 2) : 0; - - if (yScale.options.stacked) { - return topTick + (ruler.categoryHeight / 2) + ruler.categorySpacing; - } - - return topTick + - (ruler.barHeight / 2) + - ruler.categorySpacing + - (ruler.barHeight * barIndex) + - (ruler.barSpacing / 2) + - (ruler.barSpacing * barIndex); - } - }); - }; - -},{}],16:[function(require,module,exports){ - "use strict"; - - module.exports = function(Chart) { - - var helpers = Chart.helpers; - - Chart.defaults.bubble = { - hover: { - mode: "single" - }, - - scales: { - xAxes: [{ - type: "linear", // bubble should probably use a linear scale by default - position: "bottom", - id: "x-axis-0" // need an ID so datasets can reference the scale - }], - yAxes: [{ - type: "linear", - position: "left", - id: "y-axis-0" - }] - }, - - tooltips: { - callbacks: { - title: function() { - // Title doesn't make sense for scatter since we format the data as a point - return ''; - }, - label: function(tooltipItem, data) { - var datasetLabel = data.datasets[tooltipItem.datasetIndex].label || ''; - var dataPoint = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; - return datasetLabel + ': (' + dataPoint.x + ', ' + dataPoint.y + ', ' + dataPoint.r + ')'; - } - } - } - }; - - Chart.controllers.bubble = Chart.DatasetController.extend({ - - dataElementType: Chart.elements.Point, - - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var points = meta.data; - - // Update Points - helpers.each(points, function(point, index) { - me.updateElement(point, index, reset); - }); - }, - - updateElement: function(point, index, reset) { - var me = this; - var meta = me.getMeta(); - var xScale = me.getScaleForId(meta.xAxisID); - var yScale = me.getScaleForId(meta.yAxisID); - - var custom = point.custom || {}; - var dataset = me.getDataset(); - var data = dataset.data[index]; - var pointElementOptions = me.chart.options.elements.point; - var dsIndex = me.index; - - helpers.extend(point, { - // Utility - _xScale: xScale, - _yScale: yScale, - _datasetIndex: dsIndex, - _index: index, - - // Desired view properties - _model: { - x: reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex, me.chart.isCombo), - y: reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex), - // Appearance - radius: reset ? 0 : custom.radius ? custom.radius : me.getRadius(data), - - // Tooltip - hitRadius: custom.hitRadius ? custom.hitRadius : helpers.getValueAtIndexOrDefault(dataset.hitRadius, index, pointElementOptions.hitRadius) - } - }); - - // Trick to reset the styles of the point - Chart.DatasetController.prototype.removeHoverStyle.call(me, point, pointElementOptions); - - var model = point._model; - model.skip = custom.skip ? custom.skip : (isNaN(model.x) || isNaN(model.y)); - - point.pivot(); - }, - - getRadius: function(value) { - return value.r || this.chart.options.elements.point.radius; - }, - - setHoverStyle: function(point) { - var me = this; - Chart.DatasetController.prototype.setHoverStyle.call(me, point); - - // Radius - var dataset = me.chart.data.datasets[point._datasetIndex]; - var index = point._index; - var custom = point.custom || {}; - var model = point._model; - model.radius = custom.hoverRadius ? custom.hoverRadius : (helpers.getValueAtIndexOrDefault(dataset.hoverRadius, index, me.chart.options.elements.point.hoverRadius)) + me.getRadius(dataset.data[index]); - }, - - removeHoverStyle: function(point) { - var me = this; - Chart.DatasetController.prototype.removeHoverStyle.call(me, point, me.chart.options.elements.point); - - var dataVal = me.chart.data.datasets[point._datasetIndex].data[point._index]; - var custom = point.custom || {}; - var model = point._model; - - model.radius = custom.radius ? custom.radius : me.getRadius(dataVal); - } - }); - }; - -},{}],17:[function(require,module,exports){ - "use strict"; - - module.exports = function(Chart) { - - var helpers = Chart.helpers, - defaults = Chart.defaults; - - defaults.doughnut = { - animation: { - //Boolean - Whether we animate the rotation of the Doughnut - animateRotate: true, - //Boolean - Whether we animate scaling the Doughnut from the centre - animateScale: false - }, - aspectRatio: 1, - hover: { - mode: 'single' - }, - legendCallback: function(chart) { - var text = []; - text.push('
    '); - - var data = chart.data; - var datasets = data.datasets; - var labels = data.labels; - - if (datasets.length) { - for (var i = 0; i < datasets[0].data.length; ++i) { - text.push('
  • '); - if (labels[i]) { - text.push(labels[i]); - } - text.push('
  • '); - } - } - - text.push('
'); - return text.join(""); - }, - legend: { - labels: { - generateLabels: function(chart) { - var data = chart.data; - if (data.labels.length && data.datasets.length) { - return data.labels.map(function(label, i) { - var meta = chart.getDatasetMeta(0); - var ds = data.datasets[0]; - var arc = meta.data[i]; - var custom = arc && arc.custom || {}; - var getValueAtIndexOrDefault = helpers.getValueAtIndexOrDefault; - var arcOpts = chart.options.elements.arc; - var fill = custom.backgroundColor ? custom.backgroundColor : getValueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); - var stroke = custom.borderColor ? custom.borderColor : getValueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); - var bw = custom.borderWidth ? custom.borderWidth : getValueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); - - return { - text: label, - fillStyle: fill, - strokeStyle: stroke, - lineWidth: bw, - hidden: isNaN(ds.data[i]) || meta.data[i].hidden, - - // Extra data used for toggling the correct item - index: i - }; - }); - } else { - return []; - } - } - }, - - onClick: function(e, legendItem) { - var index = legendItem.index; - var chart = this.chart; - var i, ilen, meta; - - for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - meta.data[index].hidden = !meta.data[index].hidden; - } - - chart.update(); - } - }, - - //The percentage of the chart that we cut out of the middle. - cutoutPercentage: 50, - - //The rotation of the chart, where the first data arc begins. - rotation: Math.PI * -0.5, - - //The total circumference of the chart. - circumference: Math.PI * 2.0, - - // Need to override these to give a nice default - tooltips: { - callbacks: { - title: function() { - return ''; - }, - label: function(tooltipItem, data) { - return data.labels[tooltipItem.index] + ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; - } - } - } - }; - - defaults.pie = helpers.clone(defaults.doughnut); - helpers.extend(defaults.pie, { - cutoutPercentage: 0 - }); - - - Chart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({ - - dataElementType: Chart.elements.Arc, - - linkScales: helpers.noop, - - // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly - getRingIndex: function(datasetIndex) { - var ringIndex = 0; - - for (var j = 0; j < datasetIndex; ++j) { - if (this.chart.isDatasetVisible(j)) { - ++ringIndex; - } - } - - return ringIndex; - }, - - update: function(reset) { - var me = this; - var chart = me.chart, - chartArea = chart.chartArea, - opts = chart.options, - arcOpts = opts.elements.arc, - availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth, - availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth, - minSize = Math.min(availableWidth, availableHeight), - offset = { - x: 0, - y: 0 - }, - meta = me.getMeta(), - cutoutPercentage = opts.cutoutPercentage, - circumference = opts.circumference; - - // If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc - if (circumference < Math.PI * 2.0) { - var startAngle = opts.rotation % (Math.PI * 2.0); - startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0); - var endAngle = startAngle + circumference; - var start = {x: Math.cos(startAngle), y: Math.sin(startAngle)}; - var end = {x: Math.cos(endAngle), y: Math.sin(endAngle)}; - var contains0 = (startAngle <= 0 && 0 <= endAngle) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle); - var contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle); - var contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle); - var contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle); - var cutout = cutoutPercentage / 100.0; - var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))}; - var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))}; - var size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5}; - minSize = Math.min(availableWidth / size.width, availableHeight / size.height); - offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5}; - } - chart.borderWidth = me.getMaxBorderWidth(meta.data); - - chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0); - chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 1, 0); - chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); - chart.offsetX = offset.x * chart.outerRadius; - chart.offsetY = offset.y * chart.outerRadius; - - meta.total = me.calculateTotal(); - - me.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index)); - me.innerRadius = me.outerRadius - chart.radiusLength; - - helpers.each(meta.data, function(arc, index) { - me.updateElement(arc, index, reset); - }); - }, - - updateElement: function(arc, index, reset) { - var me = this; - var chart = me.chart, - chartArea = chart.chartArea, - opts = chart.options, - animationOpts = opts.animation, - centerX = (chartArea.left + chartArea.right) / 2, - centerY = (chartArea.top + chartArea.bottom) / 2, - startAngle = opts.rotation, // non reset case handled later - endAngle = opts.rotation, // non reset case handled later - dataset = me.getDataset(), - circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)), - innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius, - outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius, - valueAtIndexOrDefault = helpers.getValueAtIndexOrDefault; - - helpers.extend(arc, { - // Utility - _datasetIndex: me.index, - _index: index, - - // Desired view properties - _model: { - x: centerX + chart.offsetX, - y: centerY + chart.offsetY, - startAngle: startAngle, - endAngle: endAngle, - circumference: circumference, - outerRadius: outerRadius, - innerRadius: innerRadius, - label: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) - } - }); - - var model = arc._model; - // Resets the visual styles - this.removeHoverStyle(arc); - - // Set correct angles if not resetting - if (!reset || !animationOpts.animateRotate) { - if (index === 0) { - model.startAngle = opts.rotation; - } else { - model.startAngle = me.getMeta().data[index - 1]._model.endAngle; - } - - model.endAngle = model.startAngle + model.circumference; - } - - arc.pivot(); - }, - - removeHoverStyle: function(arc) { - Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc); - }, - - calculateTotal: function() { - var dataset = this.getDataset(); - var meta = this.getMeta(); - var total = 0; - var value; - - helpers.each(meta.data, function(element, index) { - value = dataset.data[index]; - if (!isNaN(value) && !element.hidden) { - total += Math.abs(value); - } - }); - - /*if (total === 0) { - total = NaN; - }*/ - - return total; - }, - - calculateCircumference: function(value) { - var total = this.getMeta().total; - if (total > 0 && !isNaN(value)) { - return (Math.PI * 2.0) * (value / total); - } else { - return 0; - } - }, - - //gets the max border or hover width to properly scale pie charts - getMaxBorderWidth: function (elements) { - var max = 0, - index = this.index, - length = elements.length, - borderWidth, - hoverWidth; - - for (var i = 0; i < length; i++) { - borderWidth = elements[i]._model ? elements[i]._model.borderWidth : 0; - hoverWidth = elements[i]._chart ? elements[i]._chart.config.data.datasets[index].hoverBorderWidth : 0; - - max = borderWidth > max ? borderWidth : max; - max = hoverWidth > max ? hoverWidth : max; - } - return max; - } - }); - }; - -},{}],18:[function(require,module,exports){ - "use strict"; - - module.exports = function(Chart) { - - var helpers = Chart.helpers; - - Chart.defaults.line = { - showLines: true, - spanGaps: false, - - hover: { - mode: "label" - }, - - scales: { - xAxes: [{ - type: "category", - id: 'x-axis-0' - }], - yAxes: [{ - type: "linear", - id: 'y-axis-0' - }] - } - }; - - function lineEnabled(dataset, options) { - return helpers.getValueOrDefault(dataset.showLine, options.showLines); - } - - Chart.controllers.line = Chart.DatasetController.extend({ - - datasetElementType: Chart.elements.Line, - - dataElementType: Chart.elements.Point, - - addElementAndReset: function(index) { - var me = this; - var options = me.chart.options; - var meta = me.getMeta(); - - Chart.DatasetController.prototype.addElementAndReset.call(me, index); - - // Make sure bezier control points are updated - if (lineEnabled(me.getDataset(), options) && meta.dataset._model.tension !== 0) { - me.updateBezierControlPoints(); - } - }, - - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var line = meta.dataset; - var points = meta.data || []; - var options = me.chart.options; - var lineElementOptions = options.elements.line; - var scale = me.getScaleForId(meta.yAxisID); - var i, ilen, custom; - var dataset = me.getDataset(); - var showLine = lineEnabled(dataset, options); - - // Update Line - if (showLine) { - custom = line.custom || {}; - - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { - dataset.lineTension = dataset.tension; - } - - // Utility - line._scale = scale; - line._datasetIndex = me.index; - // Data - line._children = points; - // Model - line._model = { - // Appearance - // The default behavior of lines is to break at null values, according - // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158 - // This option gives linse the ability to span gaps - spanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps, - tension: custom.tension ? custom.tension : helpers.getValueOrDefault(dataset.lineTension, lineElementOptions.tension), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), - borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), - borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), - borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), - borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), - borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), - borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), - fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), - steppedLine: custom.steppedLine ? custom.steppedLine : helpers.getValueOrDefault(dataset.steppedLine, lineElementOptions.stepped), - cubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.getValueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode), - // Scale - scaleTop: scale.top, - scaleBottom: scale.bottom, - scaleZero: scale.getBasePixel() - }; - - line.pivot(); - } - - // Update Points - for (i=0, ilen=points.length; i'); - - var data = chart.data; - var datasets = data.datasets; - var labels = data.labels; - - if (datasets.length) { - for (var i = 0; i < datasets[0].data.length; ++i) { - text.push('
  • '); - if (labels[i]) { - text.push(labels[i]); - } - text.push('
  • '); - } - } - - text.push(''); - return text.join(""); - }, - legend: { - labels: { - generateLabels: function(chart) { - var data = chart.data; - if (data.labels.length && data.datasets.length) { - return data.labels.map(function(label, i) { - var meta = chart.getDatasetMeta(0); - var ds = data.datasets[0]; - var arc = meta.data[i]; - var custom = arc.custom || {}; - var getValueAtIndexOrDefault = helpers.getValueAtIndexOrDefault; - var arcOpts = chart.options.elements.arc; - var fill = custom.backgroundColor ? custom.backgroundColor : getValueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); - var stroke = custom.borderColor ? custom.borderColor : getValueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); - var bw = custom.borderWidth ? custom.borderWidth : getValueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); - - return { - text: label, - fillStyle: fill, - strokeStyle: stroke, - lineWidth: bw, - hidden: isNaN(ds.data[i]) || meta.data[i].hidden, - - // Extra data used for toggling the correct item - index: i - }; - }); - } else { - return []; - } - } - }, - - onClick: function(e, legendItem) { - var index = legendItem.index; - var chart = this.chart; - var i, ilen, meta; - - for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - meta.data[index].hidden = !meta.data[index].hidden; - } - - chart.update(); - } - }, - - // Need to override these to give a nice default - tooltips: { - callbacks: { - title: function() { - return ''; - }, - label: function(tooltipItem, data) { - return data.labels[tooltipItem.index] + ': ' + tooltipItem.yLabel; - } - } - } - }; - - Chart.controllers.polarArea = Chart.DatasetController.extend({ - - dataElementType: Chart.elements.Arc, - - linkScales: helpers.noop, - - update: function(reset) { - var me = this; - var chart = me.chart; - var chartArea = chart.chartArea; - var meta = me.getMeta(); - var opts = chart.options; - var arcOpts = opts.elements.arc; - var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); - chart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0); - chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); - chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); - - me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index); - me.innerRadius = me.outerRadius - chart.radiusLength; - - meta.count = me.countVisibleElements(); - - helpers.each(meta.data, function(arc, index) { - me.updateElement(arc, index, reset); - }); - }, - - updateElement: function(arc, index, reset) { - var me = this; - var chart = me.chart; - var dataset = me.getDataset(); - var opts = chart.options; - var animationOpts = opts.animation; - var scale = chart.scale; - var getValueAtIndexOrDefault = helpers.getValueAtIndexOrDefault; - var labels = chart.data.labels; - - var circumference = me.calculateCircumference(dataset.data[index]); - var centerX = scale.xCenter; - var centerY = scale.yCenter; - - // If there is NaN data before us, we need to calculate the starting angle correctly. - // We could be way more efficient here, but its unlikely that the polar area chart will have a lot of data - var visibleCount = 0; - var meta = me.getMeta(); - for (var i = 0; i < index; ++i) { - if (!isNaN(dataset.data[i]) && !meta.data[i].hidden) { - ++visibleCount; - } - } - - //var negHalfPI = -0.5 * Math.PI; - var datasetStartAngle = opts.startAngle; - var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); - var startAngle = datasetStartAngle + (circumference * visibleCount); - var endAngle = startAngle + (arc.hidden ? 0 : circumference); - - var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); - - helpers.extend(arc, { - // Utility - _datasetIndex: me.index, - _index: index, - _scale: scale, - - // Desired view properties - _model: { - x: centerX, - y: centerY, - innerRadius: 0, - outerRadius: reset ? resetRadius : distance, - startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle, - endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle, - label: getValueAtIndexOrDefault(labels, index, labels[index]) - } - }); - - // Apply border and fill style - me.removeHoverStyle(arc); - - arc.pivot(); - }, - - removeHoverStyle: function(arc) { - Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc); - }, - - countVisibleElements: function() { - var dataset = this.getDataset(); - var meta = this.getMeta(); - var count = 0; - - helpers.each(meta.data, function(element, index) { - if (!isNaN(dataset.data[index]) && !element.hidden) { - count++; - } - }); - - return count; - }, - - calculateCircumference: function(value) { - var count = this.getMeta().count; - if (count > 0 && !isNaN(value)) { - return (2 * Math.PI) / count; - } else { - return 0; - } - } - }); - }; - -},{}],20:[function(require,module,exports){ - "use strict"; - - module.exports = function(Chart) { - - var helpers = Chart.helpers; - - Chart.defaults.radar = { - scale: { - type: "radialLinear" - }, - elements: { - line: { - tension: 0 // no bezier in radar - } - } - }; - - Chart.controllers.radar = Chart.DatasetController.extend({ - - datasetElementType: Chart.elements.Line, - - dataElementType: Chart.elements.Point, - - linkScales: helpers.noop, - - addElementAndReset: function(index) { - Chart.DatasetController.prototype.addElementAndReset.call(this, index); - - // Make sure bezier control points are updated - this.updateBezierControlPoints(); - }, - - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var line = meta.dataset; - var points = meta.data; - var custom = line.custom || {}; - var dataset = me.getDataset(); - var lineElementOptions = me.chart.options.elements.line; - var scale = me.chart.scale; - - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { - dataset.lineTension = dataset.tension; - } - - helpers.extend(meta.dataset, { - // Utility - _datasetIndex: me.index, - // Data - _children: points, - _loop: true, - // Model - _model: { - // Appearance - tension: custom.tension ? custom.tension : helpers.getValueOrDefault(dataset.lineTension, lineElementOptions.tension), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), - borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), - borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), - fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), - borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), - borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), - borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), - borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), - - // Scale - scaleTop: scale.top, - scaleBottom: scale.bottom, - scaleZero: scale.getBasePosition() - } - }); - - meta.dataset.pivot(); - - // Update Points - helpers.each(points, function(point, index) { - me.updateElement(point, index, reset); - }, me); - - - // Update bezier control points - me.updateBezierControlPoints(); - }, - updateElement: function(point, index, reset) { - var me = this; - var custom = point.custom || {}; - var dataset = me.getDataset(); - var scale = me.chart.scale; - var pointElementOptions = me.chart.options.elements.point; - var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); - - helpers.extend(point, { - // Utility - _datasetIndex: me.index, - _index: index, - _scale: scale, - - // Desired view properties - _model: { - x: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales - y: reset ? scale.yCenter : pointPosition.y, - - // Appearance - tension: custom.tension ? custom.tension : helpers.getValueOrDefault(dataset.tension, me.chart.options.elements.line.tension), - radius: custom.radius ? custom.radius : helpers.getValueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor), - borderColor: custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor), - borderWidth: custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth), - pointStyle: custom.pointStyle ? custom.pointStyle : helpers.getValueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle), - - // Tooltip - hitRadius: custom.hitRadius ? custom.hitRadius : helpers.getValueAtIndexOrDefault(dataset.hitRadius, index, pointElementOptions.hitRadius) - } - }); - - point._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y)); - }, - updateBezierControlPoints: function() { - var chartArea = this.chart.chartArea; - var meta = this.getMeta(); - - helpers.each(meta.data, function(point, index) { - var model = point._model; - var controlPoints = helpers.splineCurve( - helpers.previousItem(meta.data, index, true)._model, - model, - helpers.nextItem(meta.data, index, true)._model, - model.tension - ); - - // Prevent the bezier going outside of the bounds of the graph - model.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left); - model.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top); - - model.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left); - model.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top); - - // Now pivot the point for animation - point.pivot(); - }); - }, - - draw: function(ease) { - var meta = this.getMeta(); - var easingDecimal = ease || 1; - - // Transition Point Locations - helpers.each(meta.data, function(point) { - point.transition(easingDecimal); - }); - - // Transition and Draw the line - meta.dataset.transition(easingDecimal).draw(); - - // Draw the points - helpers.each(meta.data, function(point) { - point.draw(); - }); - }, - - setHoverStyle: function(point) { - // Point - var dataset = this.chart.data.datasets[point._datasetIndex]; - var custom = point.custom || {}; - var index = point._index; - var model = point._model; - - model.radius = custom.hoverRadius ? custom.hoverRadius : helpers.getValueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); - model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.getValueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); - model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.getValueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); - model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.getValueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); - }, - - removeHoverStyle: function(point) { - var dataset = this.chart.data.datasets[point._datasetIndex]; - var custom = point.custom || {}; - var index = point._index; - var model = point._model; - var pointElementOptions = this.chart.options.elements.point; - - model.radius = custom.radius ? custom.radius : helpers.getValueAtIndexOrDefault(dataset.radius, index, pointElementOptions.radius); - model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor); - model.borderColor = custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor); - model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth); - } - }); - }; - -},{}],21:[function(require,module,exports){ - /*global window: false */ - "use strict"; - - module.exports = function(Chart) { - - var helpers = Chart.helpers; - - Chart.defaults.global.animation = { - duration: 1000, - easing: "easeOutQuart", - onProgress: helpers.noop, - onComplete: helpers.noop - }; - - Chart.Animation = Chart.Element.extend({ - currentStep: null, // the current animation step - numSteps: 60, // default number of steps - easing: "", // the easing to use for this animation - render: null, // render function used by the animation service - - onAnimationProgress: null, // user specified callback to fire on each step of the animation - onAnimationComplete: null // user specified callback to fire when the animation finishes - }); - - Chart.animationService = { - frameDuration: 17, - animations: [], - dropFrames: 0, - request: null, - addAnimation: function(chartInstance, animationObject, duration, lazy) { - var me = this; - - if (!lazy) { - chartInstance.animating = true; - } - - for (var index = 0; index < me.animations.length; ++index) { - if (me.animations[index].chartInstance === chartInstance) { - // replacing an in progress animation - me.animations[index].animationObject = animationObject; - return; - } - } - - me.animations.push({ - chartInstance: chartInstance, - animationObject: animationObject - }); - - // If there are no animations queued, manually kickstart a digest, for lack of a better word - if (me.animations.length === 1) { - me.requestAnimationFrame(); - } - }, - // Cancel the animation for a given chart instance - cancelAnimation: function(chartInstance) { - var index = helpers.findIndex(this.animations, function(animationWrapper) { - return animationWrapper.chartInstance === chartInstance; - }); - - if (index !== -1) { - this.animations.splice(index, 1); - chartInstance.animating = false; - } - }, - requestAnimationFrame: function() { - var me = this; - if (me.request === null) { - // Skip animation frame requests until the active one is executed. - // This can happen when processing mouse events, e.g. 'mousemove' - // and 'mouseout' events will trigger multiple renders. - me.request = helpers.requestAnimFrame.call(window, function() { - me.request = null; - me.startDigest(); - }); - } - }, - startDigest: function() { - var me = this; - - var startTime = Date.now(); - var framesToDrop = 0; - - if (me.dropFrames > 1) { - framesToDrop = Math.floor(me.dropFrames); - me.dropFrames = me.dropFrames % 1; - } - - var i = 0; - while (i < me.animations.length) { - if (me.animations[i].animationObject.currentStep === null) { - me.animations[i].animationObject.currentStep = 0; - } - - me.animations[i].animationObject.currentStep += 1 + framesToDrop; - - if (me.animations[i].animationObject.currentStep > me.animations[i].animationObject.numSteps) { - me.animations[i].animationObject.currentStep = me.animations[i].animationObject.numSteps; - } - - me.animations[i].animationObject.render(me.animations[i].chartInstance, me.animations[i].animationObject); - if (me.animations[i].animationObject.onAnimationProgress && me.animations[i].animationObject.onAnimationProgress.call) { - me.animations[i].animationObject.onAnimationProgress.call(me.animations[i].chartInstance, me.animations[i]); - } - - if (me.animations[i].animationObject.currentStep === me.animations[i].animationObject.numSteps) { - if (me.animations[i].animationObject.onAnimationComplete && me.animations[i].animationObject.onAnimationComplete.call) { - me.animations[i].animationObject.onAnimationComplete.call(me.animations[i].chartInstance, me.animations[i]); - } - - // executed the last frame. Remove the animation. - me.animations[i].chartInstance.animating = false; - - me.animations.splice(i, 1); - } else { - ++i; - } - } - - var endTime = Date.now(); - var dropFrames = (endTime - startTime) / me.frameDuration; - - me.dropFrames += dropFrames; - - // Do we have more stuff to animate? - if (me.animations.length > 0) { - me.requestAnimationFrame(); - } - } - }; - }; -},{}],22:[function(require,module,exports){ - "use strict"; - - module.exports = function(Chart) { - // Global Chart canvas helpers object for drawing items to canvas - var helpers = Chart.canvasHelpers = {}; - - helpers.drawPoint = function(ctx, pointStyle, radius, x, y) { - var type, edgeLength, xOffset, yOffset, height, size; - - if (typeof pointStyle === 'object') { - type = pointStyle.toString(); - if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { - ctx.drawImage(pointStyle, x - pointStyle.width / 2, y - pointStyle.height / 2); - return; - } - } - - if (isNaN(radius) || radius <= 0) { - return; - } - - switch (pointStyle) { - // Default includes circle - default: - ctx.beginPath(); - ctx.arc(x, y, radius, 0, Math.PI * 2); - ctx.closePath(); - ctx.fill(); - break; - case 'triangle': - ctx.beginPath(); - edgeLength = 3 * radius / Math.sqrt(3); - height = edgeLength * Math.sqrt(3) / 2; - ctx.moveTo(x - edgeLength / 2, y + height / 3); - ctx.lineTo(x + edgeLength / 2, y + height / 3); - ctx.lineTo(x, y - 2 * height / 3); - ctx.closePath(); - ctx.fill(); - break; - case 'rect': - size = 1 / Math.SQRT2 * radius; - ctx.beginPath(); - ctx.fillRect(x - size, y - size, 2 * size, 2 * size); - ctx.strokeRect(x - size, y - size, 2 * size, 2 * size); - break; - case 'rectRot': - size = 1 / Math.SQRT2 * radius; - ctx.beginPath(); - ctx.moveTo(x - size, y); - ctx.lineTo(x, y + size); - ctx.lineTo(x + size, y); - ctx.lineTo(x, y - size); - ctx.closePath(); - ctx.fill(); - break; - case 'cross': - ctx.beginPath(); - ctx.moveTo(x, y + radius); - ctx.lineTo(x, y - radius); - ctx.moveTo(x - radius, y); - ctx.lineTo(x + radius, y); - ctx.closePath(); - break; - case 'crossRot': - ctx.beginPath(); - xOffset = Math.cos(Math.PI / 4) * radius; - yOffset = Math.sin(Math.PI / 4) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + xOffset, y + yOffset); - ctx.moveTo(x - xOffset, y + yOffset); - ctx.lineTo(x + xOffset, y - yOffset); - ctx.closePath(); - break; - case 'star': - ctx.beginPath(); - ctx.moveTo(x, y + radius); - ctx.lineTo(x, y - radius); - ctx.moveTo(x - radius, y); - ctx.lineTo(x + radius, y); - xOffset = Math.cos(Math.PI / 4) * radius; - yOffset = Math.sin(Math.PI / 4) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + xOffset, y + yOffset); - ctx.moveTo(x - xOffset, y + yOffset); - ctx.lineTo(x + xOffset, y - yOffset); - ctx.closePath(); - break; - case 'line': - ctx.beginPath(); - ctx.moveTo(x - radius, y); - ctx.lineTo(x + radius, y); - ctx.closePath(); - break; - case 'dash': - ctx.beginPath(); - ctx.moveTo(x, y); - ctx.lineTo(x + radius, y); - ctx.closePath(); - break; - } - - ctx.stroke(); - }; - }; -},{}],23:[function(require,module,exports){ - "use strict"; - - module.exports = function(Chart) { - - var helpers = Chart.helpers; - //Create a dictionary of chart types, to allow for extension of existing types - Chart.types = {}; - - //Store a reference to each instance - allowing us to globally resize chart instances on window resize. - //Destroy method on the chart will remove the instance of the chart from this reference. - Chart.instances = {}; - - // Controllers available for dataset visualization eg. bar, line, slice, etc. - Chart.controllers = {}; - - /** - * @class Chart.Controller - * The main controller of a chart. - */ - Chart.Controller = function(instance) { - - this.chart = instance; - this.config = instance.config; - this.options = this.config.options = helpers.configMerge(Chart.defaults.global, Chart.defaults[this.config.type], this.config.options || {}); - this.id = helpers.uid(); - - Object.defineProperty(this, 'data', { - get: function() { - return this.config.data; - } - }); - - //Add the chart instance to the global namespace - Chart.instances[this.id] = this; - - if (this.options.responsive) { - // Silent resize before chart draws - this.resize(true); - } - - this.initialize(); - - return this; - }; - - helpers.extend(Chart.Controller.prototype, /** @lends Chart.Controller */ { - - initialize: function() { - var me = this; - // Before init plugin notification - Chart.plugins.notify('beforeInit', [me]); - - me.bindEvents(); - - // Make sure controllers are built first so that each dataset is bound to an axis before the scales - // are built - me.ensureScalesHaveIDs(); - me.buildOrUpdateControllers(); - me.buildScales(); - me.updateLayout(); - me.resetElements(); - me.initToolTip(); - me.update(); - - // After init plugin notification - Chart.plugins.notify('afterInit', [me]); - - return me; - }, - - clear: function() { - helpers.clear(this.chart); - return this; - }, - - stop: function() { - // Stops any current animation loop occuring - Chart.animationService.cancelAnimation(this); - return this; - }, - - resize: function resize(silent) { - var me = this; - var chart = me.chart; - var canvas = chart.canvas; - var newWidth = helpers.getMaximumWidth(canvas); - var aspectRatio = chart.aspectRatio; - var newHeight = (me.options.maintainAspectRatio && isNaN(aspectRatio) === false && isFinite(aspectRatio) && aspectRatio !== 0) ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas); - - var sizeChanged = chart.width !== newWidth || chart.height !== newHeight; - - if (!sizeChanged) { - return me; - } - - canvas.width = chart.width = newWidth; - canvas.height = chart.height = newHeight; - - helpers.retinaScale(chart); - - // Notify any plugins about the resize - var newSize = { width: newWidth, height: newHeight }; - Chart.plugins.notify('resize', [me, newSize]); - - // Notify of resize - if (me.options.onResize) { - me.options.onResize(me, newSize); - } - - if (!silent) { - me.stop(); - me.update(me.options.responsiveAnimationDuration); - } - - return me; - }, - - ensureScalesHaveIDs: function() { - var options = this.options; - var scalesOptions = options.scales || {}; - var scaleOptions = options.scale; - - helpers.each(scalesOptions.xAxes, function(xAxisOptions, index) { - xAxisOptions.id = xAxisOptions.id || ('x-axis-' + index); - }); - - helpers.each(scalesOptions.yAxes, function(yAxisOptions, index) { - yAxisOptions.id = yAxisOptions.id || ('y-axis-' + index); - }); - - if (scaleOptions) { - scaleOptions.id = scaleOptions.id || 'scale'; - } - }, - - /** - * Builds a map of scale ID to scale object for future lookup. - */ - buildScales: function() { - var me = this; - var options = me.options; - var scales = me.scales = {}; - var items = []; - - if (options.scales) { - items = items.concat( - (options.scales.xAxes || []).map(function(xAxisOptions) { - return { options: xAxisOptions, dtype: 'category' }; }), - (options.scales.yAxes || []).map(function(yAxisOptions) { - return { options: yAxisOptions, dtype: 'linear' }; })); - } - - if (options.scale) { - items.push({ options: options.scale, dtype: 'radialLinear', isDefault: true }); - } - - helpers.each(items, function(item) { - var scaleOptions = item.options; - var scaleType = helpers.getValueOrDefault(scaleOptions.type, item.dtype); - var scaleClass = Chart.scaleService.getScaleConstructor(scaleType); - if (!scaleClass) { - return; - } - - var scale = new scaleClass({ - id: scaleOptions.id, - options: scaleOptions, - ctx: me.chart.ctx, - chart: me - }); - - scales[scale.id] = scale; - - // TODO(SB): I think we should be able to remove this custom case (options.scale) - // and consider it as a regular scale part of the "scales"" map only! This would - // make the logic easier and remove some useless? custom code. - if (item.isDefault) { - me.scale = scale; - } - }); - - Chart.scaleService.addScalesToLayout(this); - }, - - updateLayout: function() { - Chart.layoutService.update(this, this.chart.width, this.chart.height); - }, - - buildOrUpdateControllers: function() { - var me = this; - var types = []; - var newControllers = []; - - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - var meta = me.getDatasetMeta(datasetIndex); - if (!meta.type) { - meta.type = dataset.type || me.config.type; - } - - types.push(meta.type); - - if (meta.controller) { - meta.controller.updateIndex(datasetIndex); - } else { - meta.controller = new Chart.controllers[meta.type](me, datasetIndex); - newControllers.push(meta.controller); - } - }, me); - - if (types.length > 1) { - for (var i = 1; i < types.length; i++) { - if (types[i] !== types[i - 1]) { - me.isCombo = true; - break; - } - } - } - - return newControllers; - }, - - resetElements: function() { - var me = this; - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - me.getDatasetMeta(datasetIndex).controller.reset(); - }, me); - }, - - update: function update(animationDuration, lazy) { - var me = this; - Chart.plugins.notify('beforeUpdate', [me]); - - // In case the entire data object changed - me.tooltip._data = me.data; - - // Make sure dataset controllers are updated and new controllers are reset - var newControllers = me.buildOrUpdateControllers(); - - // Make sure all dataset controllers have correct meta data counts - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - me.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements(); - }, me); - - Chart.layoutService.update(me, me.chart.width, me.chart.height); - - // Apply changes to the dataets that require the scales to have been calculated i.e BorderColor chages - Chart.plugins.notify('afterScaleUpdate', [me]); - - // Can only reset the new controllers after the scales have been updated - helpers.each(newControllers, function(controller) { - controller.reset(); - }); - - me.updateDatasets(); - - // Do this before render so that any plugins that need final scale updates can use it - Chart.plugins.notify('afterUpdate', [me]); - - me.render(animationDuration, lazy); - }, - - /** - * @method beforeDatasetsUpdate - * @description Called before all datasets are updated. If a plugin returns false, - * the datasets update will be cancelled until another chart update is triggered. - * @param {Object} instance the chart instance being updated. - * @returns {Boolean} false to cancel the datasets update. - * @memberof Chart.PluginBase - * @since version 2.1.5 - * @instance - */ - - /** - * @method afterDatasetsUpdate - * @description Called after all datasets have been updated. Note that this - * extension will not be called if the datasets update has been cancelled. - * @param {Object} instance the chart instance being updated. - * @memberof Chart.PluginBase - * @since version 2.1.5 - * @instance - */ - - /** - * Updates all datasets unless a plugin returns false to the beforeDatasetsUpdate - * extension, in which case no datasets will be updated and the afterDatasetsUpdate - * notification will be skipped. - * @protected - * @instance - */ - updateDatasets: function() { - var me = this; - var i, ilen; - - if (Chart.plugins.notify('beforeDatasetsUpdate', [ me ])) { - for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { - me.getDatasetMeta(i).controller.update(); - } - - Chart.plugins.notify('afterDatasetsUpdate', [ me ]); - } - }, - - render: function render(duration, lazy) { - var me = this; - Chart.plugins.notify('beforeRender', [me]); - - var animationOptions = me.options.animation; - if (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) { - var animation = new Chart.Animation(); - animation.numSteps = (duration || animationOptions.duration) / 16.66; //60 fps - animation.easing = animationOptions.easing; - - // render function - animation.render = function(chartInstance, animationObject) { - var easingFunction = helpers.easingEffects[animationObject.easing]; - var stepDecimal = animationObject.currentStep / animationObject.numSteps; - var easeDecimal = easingFunction(stepDecimal); - - chartInstance.draw(easeDecimal, stepDecimal, animationObject.currentStep); - }; - - // user events - animation.onAnimationProgress = animationOptions.onProgress; - animation.onAnimationComplete = animationOptions.onComplete; - - Chart.animationService.addAnimation(me, animation, duration, lazy); - } else { - me.draw(); - if (animationOptions && animationOptions.onComplete && animationOptions.onComplete.call) { - animationOptions.onComplete.call(me); - } - } - return me; - }, - - draw: function(ease) { - var me = this; - var easingDecimal = ease || 1; - me.clear(); - - Chart.plugins.notify('beforeDraw', [me, easingDecimal]); - - // Draw all the scales - helpers.each(me.boxes, function(box) { - box.draw(me.chartArea); - }, me); - if (me.scale) { - me.scale.draw(); - } - - Chart.plugins.notify('beforeDatasetsDraw', [me, easingDecimal]); - - // Draw each dataset via its respective controller (reversed to support proper line stacking) - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - if (me.isDatasetVisible(datasetIndex)) { - me.getDatasetMeta(datasetIndex).controller.draw(ease); - } - }, me, true); - - Chart.plugins.notify('afterDatasetsDraw', [me, easingDecimal]); - - // Finally draw the tooltip - me.tooltip.transition(easingDecimal).draw(); - - Chart.plugins.notify('afterDraw', [me, easingDecimal]); - }, - - // Get the single element that was clicked on - // @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw - getElementAtEvent: function(e) { - var me = this; - var eventPosition = helpers.getRelativePosition(e, me.chart); - var elementsArray = []; - - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - if (me.isDatasetVisible(datasetIndex)) { - var meta = me.getDatasetMeta(datasetIndex); - helpers.each(meta.data, function(element) { - if (element.inRange(eventPosition.x, eventPosition.y)) { - elementsArray.push(element); - return elementsArray; - } - }); - } - }); - - return elementsArray.slice(0, 1); - }, - - getElementsAtEvent: function(e) { - var me = this; - var eventPosition = helpers.getRelativePosition(e, me.chart); - var elementsArray = []; - - var found = (function() { - if (me.data.datasets) { - for (var i = 0; i < me.data.datasets.length; i++) { - var meta = me.getDatasetMeta(i); - if (me.isDatasetVisible(i)) { - for (var j = 0; j < meta.data.length; j++) { - if (meta.data[j].inRange(eventPosition.x, eventPosition.y)) { - return meta.data[j]; - } - } - } - } - } - }).call(me); - - if (!found) { - return elementsArray; - } - - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - if (me.isDatasetVisible(datasetIndex)) { - var meta = me.getDatasetMeta(datasetIndex), - element = meta.data[found._index]; - if(element && !element._view.skip){ - elementsArray.push(element); - } - } - }, me); - - return elementsArray; - }, - - getElementsAtXAxis: function(e) { - var me = this; - var eventPosition = helpers.getRelativePosition(e, me.chart); - var elementsArray = []; - - var found = (function() { - if (me.data.datasets) { - for (var i = 0; i < me.data.datasets.length; i++) { - var meta = me.getDatasetMeta(i); - if (me.isDatasetVisible(i)) { - for (var j = 0; j < meta.data.length; j++) { - if (meta.data[j].inLabelRange(eventPosition.x, eventPosition.y)) { - return meta.data[j]; - } - } - } - } - } - }).call(me); - - if (!found) { - return elementsArray; - } - - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - if (me.isDatasetVisible(datasetIndex)) { - var meta = me.getDatasetMeta(datasetIndex); - var index = helpers.findIndex(meta.data, function (it) { - return found._model.x === it._model.x; - }); - if(index !== -1 && !meta.data[index]._view.skip) { - elementsArray.push(meta.data[index]); - } - } - }, me); - - return elementsArray; - }, - - getElementsAtEventForMode: function(e, mode) { - var me = this; - switch (mode) { - case 'single': - return me.getElementAtEvent(e); - case 'label': - return me.getElementsAtEvent(e); - case 'dataset': - return me.getDatasetAtEvent(e); - case 'x-axis': - return me.getElementsAtXAxis(e); - default: - return e; - } - }, - - getDatasetAtEvent: function(e) { - var elementsArray = this.getElementAtEvent(e); - - if (elementsArray.length > 0) { - elementsArray = this.getDatasetMeta(elementsArray[0]._datasetIndex).data; - } - - return elementsArray; - }, - - getDatasetMeta: function(datasetIndex) { - var me = this; - var dataset = me.data.datasets[datasetIndex]; - if (!dataset._meta) { - dataset._meta = {}; - } - - var meta = dataset._meta[me.id]; - if (!meta) { - meta = dataset._meta[me.id] = { - type: null, - data: [], - dataset: null, - controller: null, - hidden: null, // See isDatasetVisible() comment - xAxisID: null, - yAxisID: null - }; - } - - return meta; - }, - - getVisibleDatasetCount: function() { - var count = 0; - for (var i = 0, ilen = this.data.datasets.length; i