{"version":3,"file":"4a3ea9cd-c1175e13bb05ef1ab060.js","mappings":"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","sources":["webpack://escola-feevale/./node_modules/chart.js/dist/Chart.js"],"sourcesContent":["/*!\n * Chart.js v2.9.4\n * https://www.chartjs.org\n * (c) 2020 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function () {\n try {\n return require('moment');\n } catch (e) {}\n }()) : typeof define === 'function' && define.amd ? define(['require'], function (require) {\n return factory(function () {\n try {\n return require('moment');\n } catch (e) {}\n }());\n }) : (global = global || self, global.Chart = factory(global.moment));\n})(this, function (moment) {\n 'use strict';\n\n moment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n function createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n }\n function getCjsExportFromNamespace(n) {\n return n && n['default'] || n;\n }\n var colorName = {\n \"aliceblue\": [240, 248, 255],\n \"antiquewhite\": [250, 235, 215],\n \"aqua\": [0, 255, 255],\n \"aquamarine\": [127, 255, 212],\n \"azure\": [240, 255, 255],\n \"beige\": [245, 245, 220],\n \"bisque\": [255, 228, 196],\n \"black\": [0, 0, 0],\n \"blanchedalmond\": [255, 235, 205],\n \"blue\": [0, 0, 255],\n \"blueviolet\": [138, 43, 226],\n \"brown\": [165, 42, 42],\n \"burlywood\": [222, 184, 135],\n \"cadetblue\": [95, 158, 160],\n \"chartreuse\": [127, 255, 0],\n \"chocolate\": [210, 105, 30],\n \"coral\": [255, 127, 80],\n \"cornflowerblue\": [100, 149, 237],\n \"cornsilk\": [255, 248, 220],\n \"crimson\": [220, 20, 60],\n \"cyan\": [0, 255, 255],\n \"darkblue\": [0, 0, 139],\n \"darkcyan\": [0, 139, 139],\n \"darkgoldenrod\": [184, 134, 11],\n \"darkgray\": [169, 169, 169],\n \"darkgreen\": [0, 100, 0],\n \"darkgrey\": [169, 169, 169],\n \"darkkhaki\": [189, 183, 107],\n \"darkmagenta\": [139, 0, 139],\n \"darkolivegreen\": [85, 107, 47],\n \"darkorange\": [255, 140, 0],\n \"darkorchid\": [153, 50, 204],\n \"darkred\": [139, 0, 0],\n \"darksalmon\": [233, 150, 122],\n \"darkseagreen\": [143, 188, 143],\n \"darkslateblue\": [72, 61, 139],\n \"darkslategray\": [47, 79, 79],\n \"darkslategrey\": [47, 79, 79],\n \"darkturquoise\": [0, 206, 209],\n \"darkviolet\": [148, 0, 211],\n \"deeppink\": [255, 20, 147],\n \"deepskyblue\": [0, 191, 255],\n \"dimgray\": [105, 105, 105],\n \"dimgrey\": [105, 105, 105],\n \"dodgerblue\": [30, 144, 255],\n \"firebrick\": [178, 34, 34],\n \"floralwhite\": [255, 250, 240],\n \"forestgreen\": [34, 139, 34],\n \"fuchsia\": [255, 0, 255],\n \"gainsboro\": [220, 220, 220],\n \"ghostwhite\": [248, 248, 255],\n \"gold\": [255, 215, 0],\n \"goldenrod\": [218, 165, 32],\n \"gray\": [128, 128, 128],\n \"green\": [0, 128, 0],\n \"greenyellow\": [173, 255, 47],\n \"grey\": [128, 128, 128],\n \"honeydew\": [240, 255, 240],\n \"hotpink\": [255, 105, 180],\n \"indianred\": [205, 92, 92],\n \"indigo\": [75, 0, 130],\n \"ivory\": [255, 255, 240],\n \"khaki\": [240, 230, 140],\n \"lavender\": [230, 230, 250],\n \"lavenderblush\": [255, 240, 245],\n \"lawngreen\": [124, 252, 0],\n \"lemonchiffon\": [255, 250, 205],\n \"lightblue\": [173, 216, 230],\n \"lightcoral\": [240, 128, 128],\n \"lightcyan\": [224, 255, 255],\n \"lightgoldenrodyellow\": [250, 250, 210],\n \"lightgray\": [211, 211, 211],\n \"lightgreen\": [144, 238, 144],\n \"lightgrey\": [211, 211, 211],\n \"lightpink\": [255, 182, 193],\n \"lightsalmon\": [255, 160, 122],\n \"lightseagreen\": [32, 178, 170],\n \"lightskyblue\": [135, 206, 250],\n \"lightslategray\": [119, 136, 153],\n \"lightslategrey\": [119, 136, 153],\n \"lightsteelblue\": [176, 196, 222],\n \"lightyellow\": [255, 255, 224],\n \"lime\": [0, 255, 0],\n \"limegreen\": [50, 205, 50],\n \"linen\": [250, 240, 230],\n \"magenta\": [255, 0, 255],\n \"maroon\": [128, 0, 0],\n \"mediumaquamarine\": [102, 205, 170],\n \"mediumblue\": [0, 0, 205],\n \"mediumorchid\": [186, 85, 211],\n \"mediumpurple\": [147, 112, 219],\n \"mediumseagreen\": [60, 179, 113],\n \"mediumslateblue\": [123, 104, 238],\n \"mediumspringgreen\": [0, 250, 154],\n \"mediumturquoise\": [72, 209, 204],\n \"mediumvioletred\": [199, 21, 133],\n \"midnightblue\": [25, 25, 112],\n \"mintcream\": [245, 255, 250],\n \"mistyrose\": [255, 228, 225],\n \"moccasin\": [255, 228, 181],\n \"navajowhite\": [255, 222, 173],\n \"navy\": [0, 0, 128],\n \"oldlace\": [253, 245, 230],\n \"olive\": [128, 128, 0],\n \"olivedrab\": [107, 142, 35],\n \"orange\": [255, 165, 0],\n \"orangered\": [255, 69, 0],\n \"orchid\": [218, 112, 214],\n \"palegoldenrod\": [238, 232, 170],\n \"palegreen\": [152, 251, 152],\n \"paleturquoise\": [175, 238, 238],\n \"palevioletred\": [219, 112, 147],\n \"papayawhip\": [255, 239, 213],\n \"peachpuff\": [255, 218, 185],\n \"peru\": [205, 133, 63],\n \"pink\": [255, 192, 203],\n \"plum\": [221, 160, 221],\n \"powderblue\": [176, 224, 230],\n \"purple\": [128, 0, 128],\n \"rebeccapurple\": [102, 51, 153],\n \"red\": [255, 0, 0],\n \"rosybrown\": [188, 143, 143],\n \"royalblue\": [65, 105, 225],\n \"saddlebrown\": [139, 69, 19],\n \"salmon\": [250, 128, 114],\n \"sandybrown\": [244, 164, 96],\n \"seagreen\": [46, 139, 87],\n \"seashell\": [255, 245, 238],\n \"sienna\": [160, 82, 45],\n \"silver\": [192, 192, 192],\n \"skyblue\": [135, 206, 235],\n \"slateblue\": [106, 90, 205],\n \"slategray\": [112, 128, 144],\n \"slategrey\": [112, 128, 144],\n \"snow\": [255, 250, 250],\n \"springgreen\": [0, 255, 127],\n \"steelblue\": [70, 130, 180],\n \"tan\": [210, 180, 140],\n \"teal\": [0, 128, 128],\n \"thistle\": [216, 191, 216],\n \"tomato\": [255, 99, 71],\n \"turquoise\": [64, 224, 208],\n \"violet\": [238, 130, 238],\n \"wheat\": [245, 222, 179],\n \"white\": [255, 255, 255],\n \"whitesmoke\": [245, 245, 245],\n \"yellow\": [255, 255, 0],\n \"yellowgreen\": [154, 205, 50]\n };\n var conversions = createCommonjsModule(function (module) {\n /* MIT license */\n\n // NOTE: conversions should only return primitive values (i.e. arrays, or\n // values that give correct `typeof` results).\n // do not use box values types (i.e. Number(), String(), etc.)\n\n var reverseKeywords = {};\n for (var key in colorName) {\n if (colorName.hasOwnProperty(key)) {\n reverseKeywords[colorName[key]] = key;\n }\n }\n var convert = module.exports = {\n rgb: {\n channels: 3,\n labels: 'rgb'\n },\n hsl: {\n channels: 3,\n labels: 'hsl'\n },\n hsv: {\n channels: 3,\n labels: 'hsv'\n },\n hwb: {\n channels: 3,\n labels: 'hwb'\n },\n cmyk: {\n channels: 4,\n labels: 'cmyk'\n },\n xyz: {\n channels: 3,\n labels: 'xyz'\n },\n lab: {\n channels: 3,\n labels: 'lab'\n },\n lch: {\n channels: 3,\n labels: 'lch'\n },\n hex: {\n channels: 1,\n labels: ['hex']\n },\n keyword: {\n channels: 1,\n labels: ['keyword']\n },\n ansi16: {\n channels: 1,\n labels: ['ansi16']\n },\n ansi256: {\n channels: 1,\n labels: ['ansi256']\n },\n hcg: {\n channels: 3,\n labels: ['h', 'c', 'g']\n },\n apple: {\n channels: 3,\n labels: ['r16', 'g16', 'b16']\n },\n gray: {\n channels: 1,\n labels: ['gray']\n }\n };\n\n // hide .channels and .labels properties\n for (var model in convert) {\n if (convert.hasOwnProperty(model)) {\n if (!('channels' in convert[model])) {\n throw new Error('missing channels property: ' + model);\n }\n if (!('labels' in convert[model])) {\n throw new Error('missing channel labels property: ' + model);\n }\n if (convert[model].labels.length !== convert[model].channels) {\n throw new Error('channel and label counts mismatch: ' + model);\n }\n var channels = convert[model].channels;\n var labels = convert[model].labels;\n delete convert[model].channels;\n delete convert[model].labels;\n Object.defineProperty(convert[model], 'channels', {\n value: channels\n });\n Object.defineProperty(convert[model], 'labels', {\n value: labels\n });\n }\n }\n convert.rgb.hsl = function (rgb) {\n var r = rgb[0] / 255;\n var g = rgb[1] / 255;\n var b = rgb[2] / 255;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var h;\n var s;\n var l;\n if (max === min) {\n h = 0;\n } else if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else if (b === max) {\n h = 4 + (r - g) / delta;\n }\n h = Math.min(h * 60, 360);\n if (h < 0) {\n h += 360;\n }\n l = (min + max) / 2;\n if (max === min) {\n s = 0;\n } else if (l <= 0.5) {\n s = delta / (max + min);\n } else {\n s = delta / (2 - max - min);\n }\n return [h, s * 100, l * 100];\n };\n convert.rgb.hsv = function (rgb) {\n var rdif;\n var gdif;\n var bdif;\n var h;\n var s;\n var r = rgb[0] / 255;\n var g = rgb[1] / 255;\n var b = rgb[2] / 255;\n var v = Math.max(r, g, b);\n var diff = v - Math.min(r, g, b);\n var diffc = function (c) {\n return (v - c) / 6 / diff + 1 / 2;\n };\n if (diff === 0) {\n h = s = 0;\n } else {\n s = diff / v;\n rdif = diffc(r);\n gdif = diffc(g);\n bdif = diffc(b);\n if (r === v) {\n h = bdif - gdif;\n } else if (g === v) {\n h = 1 / 3 + rdif - bdif;\n } else if (b === v) {\n h = 2 / 3 + gdif - rdif;\n }\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n }\n return [h * 360, s * 100, v * 100];\n };\n convert.rgb.hwb = function (rgb) {\n var r = rgb[0];\n var g = rgb[1];\n var b = rgb[2];\n var h = convert.rgb.hsl(rgb)[0];\n var w = 1 / 255 * Math.min(r, Math.min(g, b));\n b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n return [h, w * 100, b * 100];\n };\n convert.rgb.cmyk = function (rgb) {\n var r = rgb[0] / 255;\n var g = rgb[1] / 255;\n var b = rgb[2] / 255;\n var c;\n var m;\n var y;\n var k;\n k = Math.min(1 - r, 1 - g, 1 - b);\n c = (1 - r - k) / (1 - k) || 0;\n m = (1 - g - k) / (1 - k) || 0;\n y = (1 - b - k) / (1 - k) || 0;\n return [c * 100, m * 100, y * 100, k * 100];\n };\n\n /**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\n function comparativeDistance(x, y) {\n return Math.pow(x[0] - y[0], 2) + Math.pow(x[1] - y[1], 2) + Math.pow(x[2] - y[2], 2);\n }\n convert.rgb.keyword = function (rgb) {\n var reversed = reverseKeywords[rgb];\n if (reversed) {\n return reversed;\n }\n var currentClosestDistance = Infinity;\n var currentClosestKeyword;\n for (var keyword in colorName) {\n if (colorName.hasOwnProperty(keyword)) {\n var value = colorName[keyword];\n\n // Compute comparative distance\n var distance = comparativeDistance(rgb, value);\n\n // Check if its less, if so set as closest\n if (distance < currentClosestDistance) {\n currentClosestDistance = distance;\n currentClosestKeyword = keyword;\n }\n }\n }\n return currentClosestKeyword;\n };\n convert.keyword.rgb = function (keyword) {\n return colorName[keyword];\n };\n convert.rgb.xyz = function (rgb) {\n var r = rgb[0] / 255;\n var g = rgb[1] / 255;\n var b = rgb[2] / 255;\n\n // assume sRGB\n r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;\n g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;\n b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;\n var x = r * 0.4124 + g * 0.3576 + b * 0.1805;\n var y = r * 0.2126 + g * 0.7152 + b * 0.0722;\n var z = r * 0.0193 + g * 0.1192 + b * 0.9505;\n return [x * 100, y * 100, z * 100];\n };\n convert.rgb.lab = function (rgb) {\n var xyz = convert.rgb.xyz(rgb);\n var x = xyz[0];\n var y = xyz[1];\n var z = xyz[2];\n var l;\n var a;\n var b;\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;\n y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;\n z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;\n l = 116 * y - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n return [l, a, b];\n };\n convert.hsl.rgb = function (hsl) {\n var h = hsl[0] / 360;\n var s = hsl[1] / 100;\n var l = hsl[2] / 100;\n var t1;\n var t2;\n var t3;\n var rgb;\n var val;\n if (s === 0) {\n val = l * 255;\n return [val, val, val];\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n } else {\n t2 = l + s - l * s;\n }\n t1 = 2 * l - t2;\n rgb = [0, 0, 0];\n for (var i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n } else if (2 * t3 < 1) {\n val = t2;\n } else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n } else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return rgb;\n };\n convert.hsl.hsv = function (hsl) {\n var h = hsl[0];\n var s = hsl[1] / 100;\n var l = hsl[2] / 100;\n var smin = s;\n var lmin = Math.max(l, 0.01);\n var sv;\n var v;\n l *= 2;\n s *= l <= 1 ? l : 2 - l;\n smin *= lmin <= 1 ? lmin : 2 - lmin;\n v = (l + s) / 2;\n sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);\n return [h, sv * 100, v * 100];\n };\n convert.hsv.rgb = function (hsv) {\n var h = hsv[0] / 60;\n var s = hsv[1] / 100;\n var v = hsv[2] / 100;\n var hi = Math.floor(h) % 6;\n var f = h - Math.floor(h);\n var p = 255 * v * (1 - s);\n var q = 255 * v * (1 - s * f);\n var t = 255 * v * (1 - s * (1 - f));\n v *= 255;\n switch (hi) {\n case 0:\n return [v, t, p];\n case 1:\n return [q, v, p];\n case 2:\n return [p, v, t];\n case 3:\n return [p, q, v];\n case 4:\n return [t, p, v];\n case 5:\n return [v, p, q];\n }\n };\n convert.hsv.hsl = function (hsv) {\n var h = hsv[0];\n var s = hsv[1] / 100;\n var v = hsv[2] / 100;\n var vmin = Math.max(v, 0.01);\n var lmin;\n var sl;\n var l;\n l = (2 - s) * v;\n lmin = (2 - s) * vmin;\n sl = s * vmin;\n sl /= lmin <= 1 ? lmin : 2 - lmin;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n };\n\n // http://dev.w3.org/csswg/css-color/#hwb-to-rgb\n convert.hwb.rgb = function (hwb) {\n var h = hwb[0] / 360;\n var wh = hwb[1] / 100;\n var bl = hwb[2] / 100;\n var ratio = wh + bl;\n var i;\n var v;\n var f;\n var n;\n\n // wh + bl cant be > 1\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n i = Math.floor(6 * h);\n v = 1 - bl;\n f = 6 * h - i;\n if ((i & 0x01) !== 0) {\n f = 1 - f;\n }\n n = wh + f * (v - wh); // linear interpolation\n\n var r;\n var g;\n var b;\n switch (i) {\n default:\n case 6:\n case 0:\n r = v;\n g = n;\n b = wh;\n break;\n case 1:\n r = n;\n g = v;\n b = wh;\n break;\n case 2:\n r = wh;\n g = v;\n b = n;\n break;\n case 3:\n r = wh;\n g = n;\n b = v;\n break;\n case 4:\n r = n;\n g = wh;\n b = v;\n break;\n case 5:\n r = v;\n g = wh;\n b = n;\n break;\n }\n return [r * 255, g * 255, b * 255];\n };\n convert.cmyk.rgb = function (cmyk) {\n var c = cmyk[0] / 100;\n var m = cmyk[1] / 100;\n var y = cmyk[2] / 100;\n var k = cmyk[3] / 100;\n var r;\n var g;\n var b;\n r = 1 - Math.min(1, c * (1 - k) + k);\n g = 1 - Math.min(1, m * (1 - k) + k);\n b = 1 - Math.min(1, y * (1 - k) + k);\n return [r * 255, g * 255, b * 255];\n };\n convert.xyz.rgb = function (xyz) {\n var x = xyz[0] / 100;\n var y = xyz[1] / 100;\n var z = xyz[2] / 100;\n var r;\n var g;\n var b;\n r = x * 3.2406 + y * -1.5372 + z * -0.4986;\n g = x * -0.9689 + y * 1.8758 + z * 0.0415;\n b = x * 0.0557 + y * -0.2040 + z * 1.0570;\n\n // assume sRGB\n r = r > 0.0031308 ? 1.055 * Math.pow(r, 1.0 / 2.4) - 0.055 : r * 12.92;\n g = g > 0.0031308 ? 1.055 * Math.pow(g, 1.0 / 2.4) - 0.055 : g * 12.92;\n b = b > 0.0031308 ? 1.055 * Math.pow(b, 1.0 / 2.4) - 0.055 : b * 12.92;\n r = Math.min(Math.max(0, r), 1);\n g = Math.min(Math.max(0, g), 1);\n b = Math.min(Math.max(0, b), 1);\n return [r * 255, g * 255, b * 255];\n };\n convert.xyz.lab = function (xyz) {\n var x = xyz[0];\n var y = xyz[1];\n var z = xyz[2];\n var l;\n var a;\n var b;\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;\n y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;\n z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;\n l = 116 * y - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n return [l, a, b];\n };\n convert.lab.xyz = function (lab) {\n var l = lab[0];\n var a = lab[1];\n var b = lab[2];\n var x;\n var y;\n var z;\n y = (l + 16) / 116;\n x = a / 500 + y;\n z = y - b / 200;\n var y2 = Math.pow(y, 3);\n var x2 = Math.pow(x, 3);\n var z2 = Math.pow(z, 3);\n y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n x *= 95.047;\n y *= 100;\n z *= 108.883;\n return [x, y, z];\n };\n convert.lab.lch = function (lab) {\n var l = lab[0];\n var a = lab[1];\n var b = lab[2];\n var hr;\n var h;\n var c;\n hr = Math.atan2(b, a);\n h = hr * 360 / 2 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n c = Math.sqrt(a * a + b * b);\n return [l, c, h];\n };\n convert.lch.lab = function (lch) {\n var l = lch[0];\n var c = lch[1];\n var h = lch[2];\n var a;\n var b;\n var hr;\n hr = h / 360 * 2 * Math.PI;\n a = c * Math.cos(hr);\n b = c * Math.sin(hr);\n return [l, a, b];\n };\n convert.rgb.ansi16 = function (args) {\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n value = Math.round(value / 50);\n if (value === 0) {\n return 30;\n }\n var ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));\n if (value === 2) {\n ansi += 60;\n }\n return ansi;\n };\n convert.hsv.ansi16 = function (args) {\n // optimization here; we already know the value and don't need to get\n // it converted for us.\n return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n };\n convert.rgb.ansi256 = function (args) {\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n // we use the extended greyscale palette here, with the exception of\n // black and white. normal palette only has 4 greyscale shades.\n if (r === g && g === b) {\n if (r < 8) {\n return 16;\n }\n if (r > 248) {\n return 231;\n }\n return Math.round((r - 8) / 247 * 24) + 232;\n }\n var ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);\n return ansi;\n };\n convert.ansi16.rgb = function (args) {\n var color = args % 10;\n\n // handle greyscale\n if (color === 0 || color === 7) {\n if (args > 50) {\n color += 3.5;\n }\n color = color / 10.5 * 255;\n return [color, color, color];\n }\n var mult = (~~(args > 50) + 1) * 0.5;\n var r = (color & 1) * mult * 255;\n var g = (color >> 1 & 1) * mult * 255;\n var b = (color >> 2 & 1) * mult * 255;\n return [r, g, b];\n };\n convert.ansi256.rgb = function (args) {\n // handle greyscale\n if (args >= 232) {\n var c = (args - 232) * 10 + 8;\n return [c, c, c];\n }\n args -= 16;\n var rem;\n var r = Math.floor(args / 36) / 5 * 255;\n var g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n var b = rem % 6 / 5 * 255;\n return [r, g, b];\n };\n convert.rgb.hex = function (args) {\n var integer = ((Math.round(args[0]) & 0xFF) << 16) + ((Math.round(args[1]) & 0xFF) << 8) + (Math.round(args[2]) & 0xFF);\n var string = integer.toString(16).toUpperCase();\n return '000000'.substring(string.length) + string;\n };\n convert.hex.rgb = function (args) {\n var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n if (!match) {\n return [0, 0, 0];\n }\n var colorString = match[0];\n if (match[0].length === 3) {\n colorString = colorString.split('').map(function (char) {\n return char + char;\n }).join('');\n }\n var integer = parseInt(colorString, 16);\n var r = integer >> 16 & 0xFF;\n var g = integer >> 8 & 0xFF;\n var b = integer & 0xFF;\n return [r, g, b];\n };\n convert.rgb.hcg = function (rgb) {\n var r = rgb[0] / 255;\n var g = rgb[1] / 255;\n var b = rgb[2] / 255;\n var max = Math.max(Math.max(r, g), b);\n var min = Math.min(Math.min(r, g), b);\n var chroma = max - min;\n var grayscale;\n var hue;\n if (chroma < 1) {\n grayscale = min / (1 - chroma);\n } else {\n grayscale = 0;\n }\n if (chroma <= 0) {\n hue = 0;\n } else if (max === r) {\n hue = (g - b) / chroma % 6;\n } else if (max === g) {\n hue = 2 + (b - r) / chroma;\n } else {\n hue = 4 + (r - g) / chroma + 4;\n }\n hue /= 6;\n hue %= 1;\n return [hue * 360, chroma * 100, grayscale * 100];\n };\n convert.hsl.hcg = function (hsl) {\n var s = hsl[1] / 100;\n var l = hsl[2] / 100;\n var c = 1;\n var f = 0;\n if (l < 0.5) {\n c = 2.0 * s * l;\n } else {\n c = 2.0 * s * (1.0 - l);\n }\n if (c < 1.0) {\n f = (l - 0.5 * c) / (1.0 - c);\n }\n return [hsl[0], c * 100, f * 100];\n };\n convert.hsv.hcg = function (hsv) {\n var s = hsv[1] / 100;\n var v = hsv[2] / 100;\n var c = s * v;\n var f = 0;\n if (c < 1.0) {\n f = (v - c) / (1 - c);\n }\n return [hsv[0], c * 100, f * 100];\n };\n convert.hcg.rgb = function (hcg) {\n var h = hcg[0] / 360;\n var c = hcg[1] / 100;\n var g = hcg[2] / 100;\n if (c === 0.0) {\n return [g * 255, g * 255, g * 255];\n }\n var pure = [0, 0, 0];\n var hi = h % 1 * 6;\n var v = hi % 1;\n var w = 1 - v;\n var mg = 0;\n switch (Math.floor(hi)) {\n case 0:\n pure[0] = 1;\n pure[1] = v;\n pure[2] = 0;\n break;\n case 1:\n pure[0] = w;\n pure[1] = 1;\n pure[2] = 0;\n break;\n case 2:\n pure[0] = 0;\n pure[1] = 1;\n pure[2] = v;\n break;\n case 3:\n pure[0] = 0;\n pure[1] = w;\n pure[2] = 1;\n break;\n case 4:\n pure[0] = v;\n pure[1] = 0;\n pure[2] = 1;\n break;\n default:\n pure[0] = 1;\n pure[1] = 0;\n pure[2] = w;\n }\n mg = (1.0 - c) * g;\n return [(c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255];\n };\n convert.hcg.hsv = function (hcg) {\n var c = hcg[1] / 100;\n var g = hcg[2] / 100;\n var v = c + g * (1.0 - c);\n var f = 0;\n if (v > 0.0) {\n f = c / v;\n }\n return [hcg[0], f * 100, v * 100];\n };\n convert.hcg.hsl = function (hcg) {\n var c = hcg[1] / 100;\n var g = hcg[2] / 100;\n var l = g * (1.0 - c) + 0.5 * c;\n var s = 0;\n if (l > 0.0 && l < 0.5) {\n s = c / (2 * l);\n } else if (l >= 0.5 && l < 1.0) {\n s = c / (2 * (1 - l));\n }\n return [hcg[0], s * 100, l * 100];\n };\n convert.hcg.hwb = function (hcg) {\n var c = hcg[1] / 100;\n var g = hcg[2] / 100;\n var v = c + g * (1.0 - c);\n return [hcg[0], (v - c) * 100, (1 - v) * 100];\n };\n convert.hwb.hcg = function (hwb) {\n var w = hwb[1] / 100;\n var b = hwb[2] / 100;\n var v = 1 - b;\n var c = v - w;\n var g = 0;\n if (c < 1) {\n g = (v - c) / (1 - c);\n }\n return [hwb[0], c * 100, g * 100];\n };\n convert.apple.rgb = function (apple) {\n return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];\n };\n convert.rgb.apple = function (rgb) {\n return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];\n };\n convert.gray.rgb = function (args) {\n return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n };\n convert.gray.hsl = convert.gray.hsv = function (args) {\n return [0, 0, args[0]];\n };\n convert.gray.hwb = function (gray) {\n return [0, 100, gray[0]];\n };\n convert.gray.cmyk = function (gray) {\n return [0, 0, 0, gray[0]];\n };\n convert.gray.lab = function (gray) {\n return [gray[0], 0, 0];\n };\n convert.gray.hex = function (gray) {\n var val = Math.round(gray[0] / 100 * 255) & 0xFF;\n var integer = (val << 16) + (val << 8) + val;\n var string = integer.toString(16).toUpperCase();\n return '000000'.substring(string.length) + string;\n };\n convert.rgb.gray = function (rgb) {\n var val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n return [val / 255 * 100];\n };\n });\n var conversions_1 = conversions.rgb;\n var conversions_2 = conversions.hsl;\n var conversions_3 = conversions.hsv;\n var conversions_4 = conversions.hwb;\n var conversions_5 = conversions.cmyk;\n var conversions_6 = conversions.xyz;\n var conversions_7 = conversions.lab;\n var conversions_8 = conversions.lch;\n var conversions_9 = conversions.hex;\n var conversions_10 = conversions.keyword;\n var conversions_11 = conversions.ansi16;\n var conversions_12 = conversions.ansi256;\n var conversions_13 = conversions.hcg;\n var conversions_14 = conversions.apple;\n var conversions_15 = conversions.gray;\n\n /*\n \tthis function routes a model to all other models.\n \n \tall functions that are routed have a property `.conversion` attached\n \tto the returned synthetic function. This property is an array\n \tof strings, each with the steps in between the 'from' and 'to'\n \tcolor models (inclusive).\n \n \tconversions that are not possible simply are not included.\n */\n\n function buildGraph() {\n var graph = {};\n // https://jsperf.com/object-keys-vs-for-in-with-closure/3\n var models = Object.keys(conversions);\n for (var len = models.length, i = 0; i < len; i++) {\n graph[models[i]] = {\n // http://jsperf.com/1-vs-infinity\n // micro-opt, but this is simple.\n distance: -1,\n parent: null\n };\n }\n return graph;\n }\n\n // https://en.wikipedia.org/wiki/Breadth-first_search\n function deriveBFS(fromModel) {\n var graph = buildGraph();\n var queue = [fromModel]; // unshift -> queue -> pop\n\n graph[fromModel].distance = 0;\n while (queue.length) {\n var current = queue.pop();\n var adjacents = Object.keys(conversions[current]);\n for (var len = adjacents.length, i = 0; i < len; i++) {\n var adjacent = adjacents[i];\n var node = graph[adjacent];\n if (node.distance === -1) {\n node.distance = graph[current].distance + 1;\n node.parent = current;\n queue.unshift(adjacent);\n }\n }\n }\n return graph;\n }\n function link(from, to) {\n return function (args) {\n return to(from(args));\n };\n }\n function wrapConversion(toModel, graph) {\n var path = [graph[toModel].parent, toModel];\n var fn = conversions[graph[toModel].parent][toModel];\n var cur = graph[toModel].parent;\n while (graph[cur].parent) {\n path.unshift(graph[cur].parent);\n fn = link(conversions[graph[cur].parent][cur], fn);\n cur = graph[cur].parent;\n }\n fn.conversion = path;\n return fn;\n }\n var route = function (fromModel) {\n var graph = deriveBFS(fromModel);\n var conversion = {};\n var models = Object.keys(graph);\n for (var len = models.length, i = 0; i < len; i++) {\n var toModel = models[i];\n var node = graph[toModel];\n if (node.parent === null) {\n // no possible conversion, or this node is the source model.\n continue;\n }\n conversion[toModel] = wrapConversion(toModel, graph);\n }\n return conversion;\n };\n var convert = {};\n var models = Object.keys(conversions);\n function wrapRaw(fn) {\n var wrappedFn = function (args) {\n if (args === undefined || args === null) {\n return args;\n }\n if (arguments.length > 1) {\n args = Array.prototype.slice.call(arguments);\n }\n return fn(args);\n };\n\n // preserve .conversion property if there is one\n if ('conversion' in fn) {\n wrappedFn.conversion = fn.conversion;\n }\n return wrappedFn;\n }\n function wrapRounded(fn) {\n var wrappedFn = function (args) {\n if (args === undefined || args === null) {\n return args;\n }\n if (arguments.length > 1) {\n args = Array.prototype.slice.call(arguments);\n }\n var result = fn(args);\n\n // we're assuming the result is an array here.\n // see notice in conversions.js; don't use box types\n // in conversion functions.\n if (typeof result === 'object') {\n for (var len = result.length, i = 0; i < len; i++) {\n result[i] = Math.round(result[i]);\n }\n }\n return result;\n };\n\n // preserve .conversion property if there is one\n if ('conversion' in fn) {\n wrappedFn.conversion = fn.conversion;\n }\n return wrappedFn;\n }\n models.forEach(function (fromModel) {\n convert[fromModel] = {};\n Object.defineProperty(convert[fromModel], 'channels', {\n value: conversions[fromModel].channels\n });\n Object.defineProperty(convert[fromModel], 'labels', {\n value: conversions[fromModel].labels\n });\n var routes = route(fromModel);\n var routeModels = Object.keys(routes);\n routeModels.forEach(function (toModel) {\n var fn = routes[toModel];\n convert[fromModel][toModel] = wrapRounded(fn);\n convert[fromModel][toModel].raw = wrapRaw(fn);\n });\n });\n var colorConvert = convert;\n var colorName$1 = {\n \"aliceblue\": [240, 248, 255],\n \"antiquewhite\": [250, 235, 215],\n \"aqua\": [0, 255, 255],\n \"aquamarine\": [127, 255, 212],\n \"azure\": [240, 255, 255],\n \"beige\": [245, 245, 220],\n \"bisque\": [255, 228, 196],\n \"black\": [0, 0, 0],\n \"blanchedalmond\": [255, 235, 205],\n \"blue\": [0, 0, 255],\n \"blueviolet\": [138, 43, 226],\n \"brown\": [165, 42, 42],\n \"burlywood\": [222, 184, 135],\n \"cadetblue\": [95, 158, 160],\n \"chartreuse\": [127, 255, 0],\n \"chocolate\": [210, 105, 30],\n \"coral\": [255, 127, 80],\n \"cornflowerblue\": [100, 149, 237],\n \"cornsilk\": [255, 248, 220],\n \"crimson\": [220, 20, 60],\n \"cyan\": [0, 255, 255],\n \"darkblue\": [0, 0, 139],\n \"darkcyan\": [0, 139, 139],\n \"darkgoldenrod\": [184, 134, 11],\n \"darkgray\": [169, 169, 169],\n \"darkgreen\": [0, 100, 0],\n \"darkgrey\": [169, 169, 169],\n \"darkkhaki\": [189, 183, 107],\n \"darkmagenta\": [139, 0, 139],\n \"darkolivegreen\": [85, 107, 47],\n \"darkorange\": [255, 140, 0],\n \"darkorchid\": [153, 50, 204],\n \"darkred\": [139, 0, 0],\n \"darksalmon\": [233, 150, 122],\n \"darkseagreen\": [143, 188, 143],\n \"darkslateblue\": [72, 61, 139],\n \"darkslategray\": [47, 79, 79],\n \"darkslategrey\": [47, 79, 79],\n \"darkturquoise\": [0, 206, 209],\n \"darkviolet\": [148, 0, 211],\n \"deeppink\": [255, 20, 147],\n \"deepskyblue\": [0, 191, 255],\n \"dimgray\": [105, 105, 105],\n \"dimgrey\": [105, 105, 105],\n \"dodgerblue\": [30, 144, 255],\n \"firebrick\": [178, 34, 34],\n \"floralwhite\": [255, 250, 240],\n \"forestgreen\": [34, 139, 34],\n \"fuchsia\": [255, 0, 255],\n \"gainsboro\": [220, 220, 220],\n \"ghostwhite\": [248, 248, 255],\n \"gold\": [255, 215, 0],\n \"goldenrod\": [218, 165, 32],\n \"gray\": [128, 128, 128],\n \"green\": [0, 128, 0],\n \"greenyellow\": [173, 255, 47],\n \"grey\": [128, 128, 128],\n \"honeydew\": [240, 255, 240],\n \"hotpink\": [255, 105, 180],\n \"indianred\": [205, 92, 92],\n \"indigo\": [75, 0, 130],\n \"ivory\": [255, 255, 240],\n \"khaki\": [240, 230, 140],\n \"lavender\": [230, 230, 250],\n \"lavenderblush\": [255, 240, 245],\n \"lawngreen\": [124, 252, 0],\n \"lemonchiffon\": [255, 250, 205],\n \"lightblue\": [173, 216, 230],\n \"lightcoral\": [240, 128, 128],\n \"lightcyan\": [224, 255, 255],\n \"lightgoldenrodyellow\": [250, 250, 210],\n \"lightgray\": [211, 211, 211],\n \"lightgreen\": [144, 238, 144],\n \"lightgrey\": [211, 211, 211],\n \"lightpink\": [255, 182, 193],\n \"lightsalmon\": [255, 160, 122],\n \"lightseagreen\": [32, 178, 170],\n \"lightskyblue\": [135, 206, 250],\n \"lightslategray\": [119, 136, 153],\n \"lightslategrey\": [119, 136, 153],\n \"lightsteelblue\": [176, 196, 222],\n \"lightyellow\": [255, 255, 224],\n \"lime\": [0, 255, 0],\n \"limegreen\": [50, 205, 50],\n \"linen\": [250, 240, 230],\n \"magenta\": [255, 0, 255],\n \"maroon\": [128, 0, 0],\n \"mediumaquamarine\": [102, 205, 170],\n \"mediumblue\": [0, 0, 205],\n \"mediumorchid\": [186, 85, 211],\n \"mediumpurple\": [147, 112, 219],\n \"mediumseagreen\": [60, 179, 113],\n \"mediumslateblue\": [123, 104, 238],\n \"mediumspringgreen\": [0, 250, 154],\n \"mediumturquoise\": [72, 209, 204],\n \"mediumvioletred\": [199, 21, 133],\n \"midnightblue\": [25, 25, 112],\n \"mintcream\": [245, 255, 250],\n \"mistyrose\": [255, 228, 225],\n \"moccasin\": [255, 228, 181],\n \"navajowhite\": [255, 222, 173],\n \"navy\": [0, 0, 128],\n \"oldlace\": [253, 245, 230],\n \"olive\": [128, 128, 0],\n \"olivedrab\": [107, 142, 35],\n \"orange\": [255, 165, 0],\n \"orangered\": [255, 69, 0],\n \"orchid\": [218, 112, 214],\n \"palegoldenrod\": [238, 232, 170],\n \"palegreen\": [152, 251, 152],\n \"paleturquoise\": [175, 238, 238],\n \"palevioletred\": [219, 112, 147],\n \"papayawhip\": [255, 239, 213],\n \"peachpuff\": [255, 218, 185],\n \"peru\": [205, 133, 63],\n \"pink\": [255, 192, 203],\n \"plum\": [221, 160, 221],\n \"powderblue\": [176, 224, 230],\n \"purple\": [128, 0, 128],\n \"rebeccapurple\": [102, 51, 153],\n \"red\": [255, 0, 0],\n \"rosybrown\": [188, 143, 143],\n \"royalblue\": [65, 105, 225],\n \"saddlebrown\": [139, 69, 19],\n \"salmon\": [250, 128, 114],\n \"sandybrown\": [244, 164, 96],\n \"seagreen\": [46, 139, 87],\n \"seashell\": [255, 245, 238],\n \"sienna\": [160, 82, 45],\n \"silver\": [192, 192, 192],\n \"skyblue\": [135, 206, 235],\n \"slateblue\": [106, 90, 205],\n \"slategray\": [112, 128, 144],\n \"slategrey\": [112, 128, 144],\n \"snow\": [255, 250, 250],\n \"springgreen\": [0, 255, 127],\n \"steelblue\": [70, 130, 180],\n \"tan\": [210, 180, 140],\n \"teal\": [0, 128, 128],\n \"thistle\": [216, 191, 216],\n \"tomato\": [255, 99, 71],\n \"turquoise\": [64, 224, 208],\n \"violet\": [238, 130, 238],\n \"wheat\": [245, 222, 179],\n \"white\": [255, 255, 255],\n \"whitesmoke\": [245, 245, 245],\n \"yellow\": [255, 255, 0],\n \"yellowgreen\": [154, 205, 50]\n };\n\n /* MIT license */\n\n var colorString = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n };\n function getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3,4})$/i,\n hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr),\n hexAlpha = \"\";\n if (match) {\n match = match[1];\n hexAlpha = match[3];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n a = Math.round(parseInt(hexAlpha + hexAlpha, 16) / 255 * 100) / 100;\n }\n } else if (match = string.match(hex)) {\n hexAlpha = match[2];\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n if (hexAlpha) {\n a = Math.round(parseInt(hexAlpha, 16) / 255 * 100) / 100;\n }\n } else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n } else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n } else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorName$1[match[1]];\n if (!rgb) {\n return;\n }\n }\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n } else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n }\n function getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n }\n function getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n }\n function getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n }\n function getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n }\n function getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n } else if (vals = getHsla(string)) {\n return vals[3];\n } else if (vals = getHwb(string)) {\n return vals[3];\n }\n }\n\n // generators\n function hexString(rgba, a) {\n var a = a !== undefined && rgba.length === 3 ? a : rgba[3];\n return \"#\" + hexDouble(rgba[0]) + hexDouble(rgba[1]) + hexDouble(rgba[2]) + (a >= 0 && a < 1 ? hexDouble(Math.round(a * 255)) : \"\");\n }\n function rgbString(rgba, alpha) {\n if (alpha < 1 || rgba[3] && rgba[3] < 1) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n }\n function rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = rgba[3] !== undefined ? rgba[3] : 1;\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \", \" + alpha + \")\";\n }\n function percentString(rgba, alpha) {\n if (alpha < 1 || rgba[3] && rgba[3] < 1) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0] / 255 * 100),\n g = Math.round(rgba[1] / 255 * 100),\n b = Math.round(rgba[2] / 255 * 100);\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n }\n function percentaString(rgba, alpha) {\n var r = Math.round(rgba[0] / 255 * 100),\n g = Math.round(rgba[1] / 255 * 100),\n b = Math.round(rgba[2] / 255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n }\n function hslString(hsla, alpha) {\n if (alpha < 1 || hsla[3] && hsla[3] < 1) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n }\n function hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = hsla[3] !== undefined ? hsla[3] : 1;\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \" + alpha + \")\";\n }\n\n // hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n // (hwb have alpha optional & 1 is default value)\n function hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = hwb[3] !== undefined ? hwb[3] : 1;\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\" + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n }\n function keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n }\n\n // helpers\n function scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n }\n function hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return str.length < 2 ? \"0\" + str : str;\n }\n\n //create a list of reverse color names\n var reverseNames = {};\n for (var name in colorName$1) {\n reverseNames[colorName$1[name]] = name;\n }\n\n /* MIT license */\n\n var Color = function (obj) {\n if (obj instanceof Color) {\n return obj;\n }\n if (!(this instanceof Color)) {\n return new Color(obj);\n }\n this.valid = false;\n this.values = {\n rgb: [0, 0, 0],\n hsl: [0, 0, 0],\n hsv: [0, 0, 0],\n hwb: [0, 0, 0],\n cmyk: [0, 0, 0, 0],\n alpha: 1\n };\n\n // parse Color() argument\n var vals;\n if (typeof obj === 'string') {\n vals = colorString.getRgba(obj);\n if (vals) {\n this.setValues('rgb', vals);\n } else if (vals = colorString.getHsla(obj)) {\n this.setValues('hsl', vals);\n } else if (vals = colorString.getHwb(obj)) {\n this.setValues('hwb', vals);\n }\n } else if (typeof obj === 'object') {\n vals = obj;\n if (vals.r !== undefined || vals.red !== undefined) {\n this.setValues('rgb', vals);\n } else if (vals.l !== undefined || vals.lightness !== undefined) {\n this.setValues('hsl', vals);\n } else if (vals.v !== undefined || vals.value !== undefined) {\n this.setValues('hsv', vals);\n } else if (vals.w !== undefined || vals.whiteness !== undefined) {\n this.setValues('hwb', vals);\n } else if (vals.c !== undefined || vals.cyan !== undefined) {\n this.setValues('cmyk', vals);\n }\n }\n };\n Color.prototype = {\n isValid: function () {\n return this.valid;\n },\n rgb: function () {\n return this.setSpace('rgb', arguments);\n },\n hsl: function () {\n return this.setSpace('hsl', arguments);\n },\n hsv: function () {\n return this.setSpace('hsv', arguments);\n },\n hwb: function () {\n return this.setSpace('hwb', arguments);\n },\n cmyk: function () {\n return this.setSpace('cmyk', arguments);\n },\n rgbArray: function () {\n return this.values.rgb;\n },\n hslArray: function () {\n return this.values.hsl;\n },\n hsvArray: function () {\n return this.values.hsv;\n },\n hwbArray: function () {\n var values = this.values;\n if (values.alpha !== 1) {\n return values.hwb.concat([values.alpha]);\n }\n return values.hwb;\n },\n cmykArray: function () {\n return this.values.cmyk;\n },\n rgbaArray: function () {\n var values = this.values;\n return values.rgb.concat([values.alpha]);\n },\n hslaArray: function () {\n var values = this.values;\n return values.hsl.concat([values.alpha]);\n },\n alpha: function (val) {\n if (val === undefined) {\n return this.values.alpha;\n }\n this.setValues('alpha', val);\n return this;\n },\n red: function (val) {\n return this.setChannel('rgb', 0, val);\n },\n green: function (val) {\n return this.setChannel('rgb', 1, val);\n },\n blue: function (val) {\n return this.setChannel('rgb', 2, val);\n },\n hue: function (val) {\n if (val) {\n val %= 360;\n val = val < 0 ? 360 + val : val;\n }\n return this.setChannel('hsl', 0, val);\n },\n saturation: function (val) {\n return this.setChannel('hsl', 1, val);\n },\n lightness: function (val) {\n return this.setChannel('hsl', 2, val);\n },\n saturationv: function (val) {\n return this.setChannel('hsv', 1, val);\n },\n whiteness: function (val) {\n return this.setChannel('hwb', 1, val);\n },\n blackness: function (val) {\n return this.setChannel('hwb', 2, val);\n },\n value: function (val) {\n return this.setChannel('hsv', 2, val);\n },\n cyan: function (val) {\n return this.setChannel('cmyk', 0, val);\n },\n magenta: function (val) {\n return this.setChannel('cmyk', 1, val);\n },\n yellow: function (val) {\n return this.setChannel('cmyk', 2, val);\n },\n black: function (val) {\n return this.setChannel('cmyk', 3, val);\n },\n hexString: function () {\n return colorString.hexString(this.values.rgb);\n },\n rgbString: function () {\n return colorString.rgbString(this.values.rgb, this.values.alpha);\n },\n rgbaString: function () {\n return colorString.rgbaString(this.values.rgb, this.values.alpha);\n },\n percentString: function () {\n return colorString.percentString(this.values.rgb, this.values.alpha);\n },\n hslString: function () {\n return colorString.hslString(this.values.hsl, this.values.alpha);\n },\n hslaString: function () {\n return colorString.hslaString(this.values.hsl, this.values.alpha);\n },\n hwbString: function () {\n return colorString.hwbString(this.values.hwb, this.values.alpha);\n },\n keyword: function () {\n return colorString.keyword(this.values.rgb, this.values.alpha);\n },\n rgbNumber: function () {\n var rgb = this.values.rgb;\n return rgb[0] << 16 | rgb[1] << 8 | rgb[2];\n },\n luminosity: function () {\n // http://www.w3.org/TR/WCAG20/#relativeluminancedef\n var rgb = this.values.rgb;\n var lum = [];\n for (var i = 0; i < rgb.length; i++) {\n var chan = rgb[i] / 255;\n lum[i] = chan <= 0.03928 ? chan / 12.92 : Math.pow((chan + 0.055) / 1.055, 2.4);\n }\n return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n },\n contrast: function (color2) {\n // http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n var lum1 = this.luminosity();\n var lum2 = color2.luminosity();\n if (lum1 > lum2) {\n return (lum1 + 0.05) / (lum2 + 0.05);\n }\n return (lum2 + 0.05) / (lum1 + 0.05);\n },\n level: function (color2) {\n var contrastRatio = this.contrast(color2);\n if (contrastRatio >= 7.1) {\n return 'AAA';\n }\n return contrastRatio >= 4.5 ? 'AA' : '';\n },\n dark: function () {\n // YIQ equation from http://24ways.org/2010/calculating-color-contrast\n var rgb = this.values.rgb;\n var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n return yiq < 128;\n },\n light: function () {\n return !this.dark();\n },\n negate: function () {\n var rgb = [];\n for (var i = 0; i < 3; i++) {\n rgb[i] = 255 - this.values.rgb[i];\n }\n this.setValues('rgb', rgb);\n return this;\n },\n lighten: function (ratio) {\n var hsl = this.values.hsl;\n hsl[2] += hsl[2] * ratio;\n this.setValues('hsl', hsl);\n return this;\n },\n darken: function (ratio) {\n var hsl = this.values.hsl;\n hsl[2] -= hsl[2] * ratio;\n this.setValues('hsl', hsl);\n return this;\n },\n saturate: function (ratio) {\n var hsl = this.values.hsl;\n hsl[1] += hsl[1] * ratio;\n this.setValues('hsl', hsl);\n return this;\n },\n desaturate: function (ratio) {\n var hsl = this.values.hsl;\n hsl[1] -= hsl[1] * ratio;\n this.setValues('hsl', hsl);\n return this;\n },\n whiten: function (ratio) {\n var hwb = this.values.hwb;\n hwb[1] += hwb[1] * ratio;\n this.setValues('hwb', hwb);\n return this;\n },\n blacken: function (ratio) {\n var hwb = this.values.hwb;\n hwb[2] += hwb[2] * ratio;\n this.setValues('hwb', hwb);\n return this;\n },\n greyscale: function () {\n var rgb = this.values.rgb;\n // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n this.setValues('rgb', [val, val, val]);\n return this;\n },\n clearer: function (ratio) {\n var alpha = this.values.alpha;\n this.setValues('alpha', alpha - alpha * ratio);\n return this;\n },\n opaquer: function (ratio) {\n var alpha = this.values.alpha;\n this.setValues('alpha', alpha + alpha * ratio);\n return this;\n },\n rotate: function (degrees) {\n var hsl = this.values.hsl;\n var hue = (hsl[0] + degrees) % 360;\n hsl[0] = hue < 0 ? 360 + hue : hue;\n this.setValues('hsl', hsl);\n return this;\n },\n /**\n * Ported from sass implementation in C\n * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n */\n mix: function (mixinColor, weight) {\n var color1 = this;\n var color2 = mixinColor;\n var p = weight === undefined ? 0.5 : weight;\n var w = 2 * p - 1;\n var a = color1.alpha() - color2.alpha();\n var w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n var w2 = 1 - w1;\n 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));\n },\n toJSON: function () {\n return this.rgb();\n },\n clone: function () {\n // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n // making the final build way to big to embed in Chart.js. So let's do it manually,\n // assuming that values to clone are 1 dimension arrays containing only numbers,\n // except 'alpha' which is a number.\n var result = new Color();\n var source = this.values;\n var target = result.values;\n var value, type;\n for (var prop in source) {\n if (source.hasOwnProperty(prop)) {\n value = source[prop];\n type = {}.toString.call(value);\n if (type === '[object Array]') {\n target[prop] = value.slice(0);\n } else if (type === '[object Number]') {\n target[prop] = value;\n } else {\n console.error('unexpected color value:', value);\n }\n }\n }\n return result;\n }\n };\n Color.prototype.spaces = {\n rgb: ['red', 'green', 'blue'],\n hsl: ['hue', 'saturation', 'lightness'],\n hsv: ['hue', 'saturation', 'value'],\n hwb: ['hue', 'whiteness', 'blackness'],\n cmyk: ['cyan', 'magenta', 'yellow', 'black']\n };\n Color.prototype.maxes = {\n rgb: [255, 255, 255],\n hsl: [360, 100, 100],\n hsv: [360, 100, 100],\n hwb: [360, 100, 100],\n cmyk: [100, 100, 100, 100]\n };\n Color.prototype.getValues = function (space) {\n var values = this.values;\n var vals = {};\n for (var i = 0; i < space.length; i++) {\n vals[space.charAt(i)] = values[space][i];\n }\n if (values.alpha !== 1) {\n vals.a = values.alpha;\n }\n\n // {r: 255, g: 255, b: 255, a: 0.4}\n return vals;\n };\n Color.prototype.setValues = function (space, vals) {\n var values = this.values;\n var spaces = this.spaces;\n var maxes = this.maxes;\n var alpha = 1;\n var i;\n this.valid = true;\n if (space === 'alpha') {\n alpha = vals;\n } else if (vals.length) {\n // [10, 10, 10]\n values[space] = vals.slice(0, space.length);\n alpha = vals[space.length];\n } else if (vals[space.charAt(0)] !== undefined) {\n // {r: 10, g: 10, b: 10}\n for (i = 0; i < space.length; i++) {\n values[space][i] = vals[space.charAt(i)];\n }\n alpha = vals.a;\n } else if (vals[spaces[space][0]] !== undefined) {\n // {red: 10, green: 10, blue: 10}\n var chans = spaces[space];\n for (i = 0; i < space.length; i++) {\n values[space][i] = vals[chans[i]];\n }\n alpha = vals.alpha;\n }\n values.alpha = Math.max(0, Math.min(1, alpha === undefined ? values.alpha : alpha));\n if (space === 'alpha') {\n return false;\n }\n var capped;\n\n // cap values of the space prior converting all values\n for (i = 0; i < space.length; i++) {\n capped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n values[space][i] = Math.round(capped);\n }\n\n // convert to all the other color spaces\n for (var sname in spaces) {\n if (sname !== space) {\n values[sname] = colorConvert[space][sname](values[space]);\n }\n }\n return true;\n };\n Color.prototype.setSpace = function (space, args) {\n var vals = args[0];\n if (vals === undefined) {\n // color.rgb()\n return this.getValues(space);\n }\n\n // color.rgb(10, 10, 10)\n if (typeof vals === 'number') {\n vals = Array.prototype.slice.call(args);\n }\n this.setValues(space, vals);\n return this;\n };\n Color.prototype.setChannel = function (space, index, val) {\n var svalues = this.values[space];\n if (val === undefined) {\n // color.red()\n return svalues[index];\n } else if (val === svalues[index]) {\n // color.red(color.red())\n return this;\n }\n\n // color.red(100)\n svalues[index] = val;\n this.setValues(space, svalues);\n return this;\n };\n if (typeof window !== 'undefined') {\n window.Color = Color;\n }\n var chartjsColor = Color;\n function isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n }\n\n /**\r\n * @namespace Chart.helpers\r\n */\n var helpers = {\n /**\r\n * An empty function that can be used, for example, for optional callback.\r\n */\n noop: function () {},\n /**\r\n * Returns a unique id, sequentially generated from a global variable.\r\n * @returns {number}\r\n * @function\r\n */\n uid: function () {\n var id = 0;\n return function () {\n return id++;\n };\n }(),\n /**\r\n * Returns true if `value` is neither null nor undefined, else returns false.\r\n * @param {*} value - The value to test.\r\n * @returns {boolean}\r\n * @since 2.7.0\r\n */\n isNullOrUndef: function (value) {\n return value === null || typeof value === 'undefined';\n },\n /**\r\n * Returns true if `value` is an array (including typed arrays), else returns false.\r\n * @param {*} value - The value to test.\r\n * @returns {boolean}\r\n * @function\r\n */\n isArray: function (value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n var type = Object.prototype.toString.call(value);\n if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n return true;\n }\n return false;\n },\n /**\r\n * Returns true if `value` is an object (excluding null), else returns false.\r\n * @param {*} value - The value to test.\r\n * @returns {boolean}\r\n * @since 2.7.0\r\n */\n isObject: function (value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n },\n /**\r\n * Returns true if `value` is a finite number, else returns false\r\n * @param {*} value - The value to test.\r\n * @returns {boolean}\r\n */\n isFinite: function (value) {\n return (typeof value === 'number' || value instanceof Number) && isFinite(value);\n },\n /**\r\n * Returns `value` if defined, else returns `defaultValue`.\r\n * @param {*} value - The value to return if defined.\r\n * @param {*} defaultValue - The value to return if `value` is undefined.\r\n * @returns {*}\r\n */\n valueOrDefault: function (value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n },\n /**\r\n * Returns value at the given `index` in array if defined, else returns `defaultValue`.\r\n * @param {Array} value - The array to lookup for value at `index`.\r\n * @param {number} index - The index in `value` to lookup for value.\r\n * @param {*} defaultValue - The value to return if `value[index]` is undefined.\r\n * @returns {*}\r\n */\n valueAtIndexOrDefault: function (value, index, defaultValue) {\n return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n },\n /**\r\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\r\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\r\n * @param {function} fn - The function to call.\r\n * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\r\n * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n * @returns {*}\r\n */\n callback: function (fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n },\n /**\r\n * Note(SB) for performance sake, this method should only be used when loopable type\r\n * is unknown or in none intensive code (not called often and small loopable). Else\r\n * it's preferable to use a regular for() loop and save extra function calls.\r\n * @param {object|Array} loopable - The object or array to be iterated.\r\n * @param {function} fn - The function to call for each item.\r\n * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n * @param {boolean} [reverse] - If true, iterates backward on the loopable.\r\n */\n each: function (loopable, fn, thisArg, reverse) {\n var i, len, keys;\n if (helpers.isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (helpers.isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n },\n /**\r\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\r\n * @see https://stackoverflow.com/a/14853974\r\n * @param {Array} a0 - The array to compare\r\n * @param {Array} a1 - The array to compare\r\n * @returns {boolean}\r\n */\n arrayEquals: function (a0, a1) {\n var i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0 instanceof Array && v1 instanceof Array) {\n if (!helpers.arrayEquals(v0, v1)) {\n return false;\n }\n } else if (v0 !== v1) {\n // NOTE: two different object instances will never be equal: {x:20} != {x:20}\n return false;\n }\n }\n return true;\n },\n /**\r\n * Returns a deep copy of `source` without keeping references on objects and arrays.\r\n * @param {*} source - The value to clone.\r\n * @returns {*}\r\n */\n clone: function (source) {\n if (helpers.isArray(source)) {\n return source.map(helpers.clone);\n }\n if (helpers.isObject(source)) {\n var target = Object.create(source);\n var keys = Object.keys(source);\n var klen = keys.length;\n var k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = helpers.clone(source[keys[k]]);\n }\n return target;\n }\n return source;\n },\n /**\r\n * The default merger when Chart.helpers.merge is called without merger option.\r\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\r\n * @private\r\n */\n _merger: function (key, target, source, options) {\n if (!isValidKey(key)) {\n // We want to ensure we do not copy prototypes over\n // as this can pollute global namespaces\n return;\n }\n var tval = target[key];\n var sval = source[key];\n if (helpers.isObject(tval) && helpers.isObject(sval)) {\n helpers.merge(tval, sval, options);\n } else {\n target[key] = helpers.clone(sval);\n }\n },\n /**\r\n * Merges source[key] in target[key] only if target[key] is undefined.\r\n * @private\r\n */\n _mergerIf: function (key, target, source) {\n if (!isValidKey(key)) {\n // We want to ensure we do not copy prototypes over\n // as this can pollute global namespaces\n return;\n }\n var tval = target[key];\n var sval = source[key];\n if (helpers.isObject(tval) && helpers.isObject(sval)) {\n helpers.mergeIf(tval, sval);\n } else if (!target.hasOwnProperty(key)) {\n target[key] = helpers.clone(sval);\n }\n },\n /**\r\n * Recursively deep copies `source` properties into `target` with the given `options`.\r\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n * @param {object} target - The target object in which all sources are merged into.\r\n * @param {object|object[]} source - Object(s) to merge into `target`.\r\n * @param {object} [options] - Merging options:\r\n * @param {function} [options.merger] - The merge method (key, target, source, options)\r\n * @returns {object} The `target` object.\r\n */\n merge: function (target, source, options) {\n var sources = helpers.isArray(source) ? source : [source];\n var ilen = sources.length;\n var merge, i, keys, klen, k;\n if (!helpers.isObject(target)) {\n return target;\n }\n options = options || {};\n merge = options.merger || helpers._merger;\n for (i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!helpers.isObject(source)) {\n continue;\n }\n keys = Object.keys(source);\n for (k = 0, klen = keys.length; k < klen; ++k) {\n merge(keys[k], target, source, options);\n }\n }\n return target;\n },\n /**\r\n * Recursively deep copies `source` properties into `target` *only* if not defined in target.\r\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n * @param {object} target - The target object in which all sources are merged into.\r\n * @param {object|object[]} source - Object(s) to merge into `target`.\r\n * @returns {object} The `target` object.\r\n */\n mergeIf: function (target, source) {\n return helpers.merge(target, source, {\n merger: helpers._mergerIf\n });\n },\n /**\r\n * Applies the contents of two or more objects together into the first object.\r\n * @param {object} target - The target object in which all objects are merged into.\r\n * @param {object} arg1 - Object containing additional properties to merge in target.\r\n * @param {object} argN - Additional objects containing properties to merge in target.\r\n * @returns {object} The `target` object.\r\n */\n extend: Object.assign || function (target) {\n return helpers.merge(target, [].slice.call(arguments, 1), {\n merger: function (key, dst, src) {\n dst[key] = src[key];\n }\n });\n },\n /**\r\n * Basic javascript inheritance based on the model created in Backbone.js\r\n */\n inherits: function (extensions) {\n var me = this;\n var ChartElement = extensions && extensions.hasOwnProperty('constructor') ? extensions.constructor : function () {\n return me.apply(this, arguments);\n };\n var Surrogate = function () {\n this.constructor = ChartElement;\n };\n Surrogate.prototype = me.prototype;\n ChartElement.prototype = new Surrogate();\n ChartElement.extend = helpers.inherits;\n if (extensions) {\n helpers.extend(ChartElement.prototype, extensions);\n }\n ChartElement.__super__ = me.prototype;\n return ChartElement;\n },\n _deprecated: function (scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n }\n };\n var helpers_core = helpers;\n\n // DEPRECATIONS\n\n /**\r\n * Provided for backward compatibility, use Chart.helpers.callback instead.\r\n * @function Chart.helpers.callCallback\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers.callCallback = helpers.callback;\n\n /**\r\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\r\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\r\n * @function Chart.helpers.indexOf\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers.indexOf = function (array, item, fromIndex) {\n return Array.prototype.indexOf.call(array, item, fromIndex);\n };\n\n /**\r\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\r\n * @function Chart.helpers.getValueOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers.getValueOrDefault = helpers.valueOrDefault;\n\n /**\r\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\r\n * @function Chart.helpers.getValueAtIndexOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n /**\r\n * Easing functions adapted from Robert Penner's easing equations.\r\n * @namespace Chart.helpers.easingEffects\r\n * @see http://www.robertpenner.com/easing/\r\n */\n var effects = {\n linear: function (t) {\n return t;\n },\n easeInQuad: function (t) {\n return t * t;\n },\n easeOutQuad: function (t) {\n return -t * (t - 2);\n },\n easeInOutQuad: function (t) {\n if ((t /= 0.5) < 1) {\n return 0.5 * t * t;\n }\n return -0.5 * (--t * (t - 2) - 1);\n },\n easeInCubic: function (t) {\n return t * t * t;\n },\n easeOutCubic: function (t) {\n return (t = t - 1) * t * t + 1;\n },\n easeInOutCubic: function (t) {\n if ((t /= 0.5) < 1) {\n return 0.5 * t * t * t;\n }\n return 0.5 * ((t -= 2) * t * t + 2);\n },\n easeInQuart: function (t) {\n return t * t * t * t;\n },\n easeOutQuart: function (t) {\n return -((t = t - 1) * t * t * t - 1);\n },\n easeInOutQuart: function (t) {\n if ((t /= 0.5) < 1) {\n return 0.5 * t * t * t * t;\n }\n return -0.5 * ((t -= 2) * t * t * t - 2);\n },\n easeInQuint: function (t) {\n return t * t * t * t * t;\n },\n easeOutQuint: function (t) {\n return (t = t - 1) * t * t * t * t + 1;\n },\n easeInOutQuint: function (t) {\n if ((t /= 0.5) < 1) {\n return 0.5 * t * t * t * t * t;\n }\n return 0.5 * ((t -= 2) * t * t * t * t + 2);\n },\n easeInSine: function (t) {\n return -Math.cos(t * (Math.PI / 2)) + 1;\n },\n easeOutSine: function (t) {\n return Math.sin(t * (Math.PI / 2));\n },\n easeInOutSine: function (t) {\n return -0.5 * (Math.cos(Math.PI * t) - 1);\n },\n easeInExpo: function (t) {\n return t === 0 ? 0 : Math.pow(2, 10 * (t - 1));\n },\n easeOutExpo: function (t) {\n return t === 1 ? 1 : -Math.pow(2, -10 * t) + 1;\n },\n easeInOutExpo: function (t) {\n if (t === 0) {\n return 0;\n }\n if (t === 1) {\n return 1;\n }\n if ((t /= 0.5) < 1) {\n return 0.5 * Math.pow(2, 10 * (t - 1));\n }\n return 0.5 * (-Math.pow(2, -10 * --t) + 2);\n },\n easeInCirc: function (t) {\n if (t >= 1) {\n return t;\n }\n return -(Math.sqrt(1 - t * t) - 1);\n },\n easeOutCirc: function (t) {\n return Math.sqrt(1 - (t = t - 1) * t);\n },\n easeInOutCirc: function (t) {\n if ((t /= 0.5) < 1) {\n return -0.5 * (Math.sqrt(1 - t * t) - 1);\n }\n return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n },\n easeInElastic: function (t) {\n var s = 1.70158;\n var p = 0;\n var a = 1;\n if (t === 0) {\n return 0;\n }\n if (t === 1) {\n return 1;\n }\n if (!p) {\n p = 0.3;\n }\n if (a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(1 / a);\n }\n return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n },\n easeOutElastic: function (t) {\n var s = 1.70158;\n var p = 0;\n var a = 1;\n if (t === 0) {\n return 0;\n }\n if (t === 1) {\n return 1;\n }\n if (!p) {\n p = 0.3;\n }\n if (a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(1 / a);\n }\n return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n },\n easeInOutElastic: function (t) {\n var s = 1.70158;\n var p = 0;\n var a = 1;\n if (t === 0) {\n return 0;\n }\n if ((t /= 0.5) === 2) {\n return 1;\n }\n if (!p) {\n p = 0.45;\n }\n if (a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(1 / a);\n }\n if (t < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n }\n return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n },\n easeInBack: function (t) {\n var s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack: function (t) {\n var s = 1.70158;\n return (t = t - 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack: function (t) {\n var s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n easeInBounce: function (t) {\n return 1 - effects.easeOutBounce(1 - t);\n },\n easeOutBounce: function (t) {\n if (t < 1 / 2.75) {\n return 7.5625 * t * t;\n }\n if (t < 2 / 2.75) {\n return 7.5625 * (t -= 1.5 / 2.75) * t + 0.75;\n }\n if (t < 2.5 / 2.75) {\n return 7.5625 * (t -= 2.25 / 2.75) * t + 0.9375;\n }\n return 7.5625 * (t -= 2.625 / 2.75) * t + 0.984375;\n },\n easeInOutBounce: function (t) {\n if (t < 0.5) {\n return effects.easeInBounce(t * 2) * 0.5;\n }\n return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n }\n };\n var helpers_easing = {\n effects: effects\n };\n\n // DEPRECATIONS\n\n /**\r\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\r\n * @function Chart.helpers.easingEffects\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers_core.easingEffects = effects;\n var PI = Math.PI;\n var RAD_PER_DEG = PI / 180;\n var DOUBLE_PI = PI * 2;\n var HALF_PI = PI / 2;\n var QUARTER_PI = PI / 4;\n var TWO_THIRDS_PI = PI * 2 / 3;\n\n /**\r\n * @namespace Chart.helpers.canvas\r\n */\n var exports$1 = {\n /**\r\n * Clears the entire canvas associated to the given `chart`.\r\n * @param {Chart} chart - The chart for which to clear the canvas.\r\n */\n clear: function (chart) {\n chart.ctx.clearRect(0, 0, chart.width, chart.height);\n },\n /**\r\n * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\r\n * given size (width, height) and the same `radius` for all corners.\r\n * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\r\n * @param {number} x - The x axis of the coordinate for the rectangle starting point.\r\n * @param {number} y - The y axis of the coordinate for the rectangle starting point.\r\n * @param {number} width - The rectangle's width.\r\n * @param {number} height - The rectangle's height.\r\n * @param {number} radius - The rounded amount (in pixels) for the four corners.\r\n * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\r\n */\n roundedRect: function (ctx, x, y, width, height, radius) {\n if (radius) {\n var r = Math.min(radius, height / 2, width / 2);\n var left = x + r;\n var top = y + r;\n var right = x + width - r;\n var bottom = y + height - r;\n ctx.moveTo(x, top);\n if (left < right && top < bottom) {\n ctx.arc(left, top, r, -PI, -HALF_PI);\n ctx.arc(right, top, r, -HALF_PI, 0);\n ctx.arc(right, bottom, r, 0, HALF_PI);\n ctx.arc(left, bottom, r, HALF_PI, PI);\n } else if (left < right) {\n ctx.moveTo(left, y);\n ctx.arc(right, top, r, -HALF_PI, HALF_PI);\n ctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\n } else if (top < bottom) {\n ctx.arc(left, top, r, -PI, 0);\n ctx.arc(left, bottom, r, 0, PI);\n } else {\n ctx.arc(left, top, r, -PI, PI);\n }\n ctx.closePath();\n ctx.moveTo(x, y);\n } else {\n ctx.rect(x, y, width, height);\n }\n },\n drawPoint: function (ctx, style, radius, x, y, rotation) {\n var type, xOffset, yOffset, size, cornerRadius;\n var rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n // Default includes circle\n default:\n ctx.arc(x, y, radius, 0, DOUBLE_PI);\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n ctx.rect(x - size, y - size, 2 * size, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n ctx.stroke();\n },\n /**\r\n * Returns true if the point is inside the rectangle\r\n * @param {object} point - The point to test\r\n * @param {object} area - The rectangle\r\n * @returns {boolean}\r\n * @private\r\n */\n _isPointInArea: function (point, area) {\n var epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n\n return point.x > area.left - epsilon && point.x < area.right + epsilon && point.y > area.top - epsilon && point.y < area.bottom + epsilon;\n },\n clipArea: function (ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n },\n unclipArea: function (ctx) {\n ctx.restore();\n },\n lineTo: function (ctx, previous, target, flip) {\n var stepped = target.steppedLine;\n if (stepped) {\n if (stepped === 'middle') {\n var midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, flip ? target.y : previous.y);\n ctx.lineTo(midpoint, flip ? previous.y : target.y);\n } else if (stepped === 'after' && !flip || stepped !== 'after' && flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n return;\n }\n if (!target.tension) {\n ctx.lineTo(target.x, target.y);\n return;\n }\n ctx.bezierCurveTo(flip ? previous.controlPointPreviousX : previous.controlPointNextX, flip ? previous.controlPointPreviousY : previous.controlPointNextY, flip ? target.controlPointNextX : target.controlPointPreviousX, flip ? target.controlPointNextY : target.controlPointPreviousY, target.x, target.y);\n }\n };\n var helpers_canvas = exports$1;\n\n // DEPRECATIONS\n\n /**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\r\n * @namespace Chart.helpers.clear\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers_core.clear = exports$1.clear;\n\n /**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\r\n * @namespace Chart.helpers.drawRoundedRectangle\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers_core.drawRoundedRectangle = function (ctx) {\n ctx.beginPath();\n exports$1.roundedRect.apply(exports$1, arguments);\n };\n var defaults = {\n /**\r\n * @private\r\n */\n _set: function (scope, values) {\n return helpers_core.merge(this[scope] || (this[scope] = {}), values);\n }\n };\n\n // TODO(v3): remove 'global' from namespace. all default are global and\n // there's inconsistency around which options are under 'global'\n defaults._set('global', {\n defaultColor: 'rgba(0,0,0,0.1)',\n defaultFontColor: '#666',\n defaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n defaultFontSize: 12,\n defaultFontStyle: 'normal',\n defaultLineHeight: 1.2,\n showLines: true\n });\n var core_defaults = defaults;\n var valueOrDefault = helpers_core.valueOrDefault;\n\n /**\r\n * Converts the given font object into a CSS font string.\r\n * @param {object} font - A font object.\r\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n * @private\r\n */\n function toFontString(font) {\n if (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n }\n\n /**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\n var helpers_options = {\n /**\r\n * Converts the given line height `value` in pixels for a specific font `size`.\r\n * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\r\n * @param {number} size - The font size (in pixels) used to resolve relative `value`.\r\n * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\r\n * @since 2.7.0\r\n */\n toLineHeight: function (value, size) {\n var matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n },\n /**\r\n * Converts the given value into a padding object with pre-computed width/height.\r\n * @param {number|object} value - If a number, set the value to all TRBL component,\r\n * else, if and object, use defined properties and sets undefined ones to 0.\r\n * @returns {object} The padding values (top, right, bottom, left, width, height)\r\n * @since 2.7.0\r\n */\n toPadding: function (value) {\n var t, r, b, l;\n if (helpers_core.isObject(value)) {\n t = +value.top || 0;\n r = +value.right || 0;\n b = +value.bottom || 0;\n l = +value.left || 0;\n } else {\n t = r = b = l = +value || 0;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n height: t + b,\n width: l + r\n };\n },\n /**\r\n * Parses font options and returns the font object.\r\n * @param {object} options - A object that contains font options to be parsed.\r\n * @return {object} The font object.\r\n * @todo Support font.* options and renamed to toFont().\r\n * @private\r\n */\n _parseFont: function (options) {\n var globalDefaults = core_defaults.global;\n var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n var font = {\n family: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\n lineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\n size: size,\n style: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\n weight: null,\n string: ''\n };\n font.string = toFontString(font);\n return font;\n },\n /**\r\n * Evaluates the given `inputs` sequentially and returns the first defined value.\r\n * @param {Array} inputs - An array of values, falling back to the last value.\r\n * @param {object} [context] - If defined and the current value is a function, the value\r\n * is called with `context` as first argument and the result becomes the new input.\r\n * @param {number} [index] - If defined and the current value is an array, the value\r\n * at `index` become the new input.\r\n * @param {object} [info] - object to return information about resolution in\r\n * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\r\n * @since 2.7.0\r\n */\n resolve: function (inputs, context, index, info) {\n var cacheable = true;\n var i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && helpers_core.isArray(value)) {\n value = value[index];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n }\n };\n\n /**\r\n * @alias Chart.helpers.math\r\n * @namespace\r\n */\n var exports$2 = {\n /**\r\n * Returns an array of factors sorted from 1 to sqrt(value)\r\n * @private\r\n */\n _factorize: function (value) {\n var result = [];\n var sqrt = Math.sqrt(value);\n var i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n // if value is a square number\n result.push(sqrt);\n }\n result.sort(function (a, b) {\n return a - b;\n }).pop();\n return result;\n },\n log10: Math.log10 || function (x) {\n var exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n // Check for whole powers of 10,\n // which due to floating point rounding error should be corrected.\n var powerOf10 = Math.round(exponent);\n var isPowerOf10 = x === Math.pow(10, powerOf10);\n return isPowerOf10 ? powerOf10 : exponent;\n }\n };\n var helpers_math = exports$2;\n\n // DEPRECATIONS\n\n /**\r\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\r\n * @namespace Chart.helpers.log10\r\n * @deprecated since version 2.9.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers_core.log10 = exports$2.log10;\n var getRtlAdapter = function (rectX, width) {\n return {\n x: function (x) {\n return rectX + rectX + width - x;\n },\n setWidth: function (w) {\n width = w;\n },\n textAlign: function (align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus: function (x, value) {\n return x - value;\n },\n leftForLtr: function (x, itemWidth) {\n return x - itemWidth;\n }\n };\n };\n var getLtrAdapter = function () {\n return {\n x: function (x) {\n return x;\n },\n setWidth: function (w) {// eslint-disable-line no-unused-vars\n },\n textAlign: function (align) {\n return align;\n },\n xPlus: function (x, value) {\n return x + value;\n },\n leftForLtr: function (x, _itemWidth) {\n // eslint-disable-line no-unused-vars\n return x;\n }\n };\n };\n var getAdapter = function (rtl, rectX, width) {\n return rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\n };\n var overrideTextDirection = function (ctx, direction) {\n var style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [style.getPropertyValue('direction'), style.getPropertyPriority('direction')];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n };\n var restoreTextDirection = function (ctx) {\n var original = ctx.prevTextDirection;\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n };\n var helpers_rtl = {\n getRtlAdapter: getAdapter,\n overrideTextDirection: overrideTextDirection,\n restoreTextDirection: restoreTextDirection\n };\n var helpers$1 = helpers_core;\n var easing = helpers_easing;\n var canvas = helpers_canvas;\n var options = helpers_options;\n var math = helpers_math;\n var rtl = helpers_rtl;\n helpers$1.easing = easing;\n helpers$1.canvas = canvas;\n helpers$1.options = options;\n helpers$1.math = math;\n helpers$1.rtl = rtl;\n function interpolate(start, view, model, ease) {\n var keys = Object.keys(model);\n var i, ilen, key, actual, origin, target, type, c0, c1;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n target = model[key];\n\n // if a value is added to the model after pivot() has been called, the view\n // doesn't contain it, so let's initialize the view to the target value.\n if (!view.hasOwnProperty(key)) {\n view[key] = target;\n }\n actual = view[key];\n if (actual === target || key[0] === '_') {\n continue;\n }\n if (!start.hasOwnProperty(key)) {\n start[key] = actual;\n }\n origin = start[key];\n type = typeof target;\n if (type === typeof origin) {\n if (type === 'string') {\n c0 = chartjsColor(origin);\n if (c0.valid) {\n c1 = chartjsColor(target);\n if (c1.valid) {\n view[key] = c1.mix(c0, ease).rgbString();\n continue;\n }\n }\n } else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\n view[key] = origin + (target - origin) * ease;\n continue;\n }\n }\n view[key] = target;\n }\n }\n var Element = function (configuration) {\n helpers$1.extend(this, configuration);\n this.initialize.apply(this, arguments);\n };\n helpers$1.extend(Element.prototype, {\n _type: undefined,\n initialize: function () {\n this.hidden = false;\n },\n pivot: function () {\n var me = this;\n if (!me._view) {\n me._view = helpers$1.extend({}, me._model);\n }\n me._start = {};\n return me;\n },\n transition: function (ease) {\n var me = this;\n var model = me._model;\n var start = me._start;\n var view = me._view;\n\n // No animation -> No Transition\n if (!model || ease === 1) {\n me._view = helpers$1.extend({}, model);\n me._start = null;\n return me;\n }\n if (!view) {\n view = me._view = {};\n }\n if (!start) {\n start = me._start = {};\n }\n interpolate(start, view, model, ease);\n return me;\n },\n tooltipPosition: function () {\n return {\n x: this._model.x,\n y: this._model.y\n };\n },\n hasValue: function () {\n return helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\n }\n });\n Element.extend = helpers$1.inherits;\n var core_element = Element;\n var exports$3 = core_element.extend({\n chart: null,\n // the animation associated chart instance\n currentStep: 0,\n // the current animation step\n numSteps: 60,\n // default number of steps\n easing: '',\n // the easing to use for this animation\n render: null,\n // render function used by the animation service\n\n onAnimationProgress: null,\n // user specified callback to fire on each step of the animation\n onAnimationComplete: null // user specified callback to fire when the animation finishes\n });\n var core_animation = exports$3;\n\n // DEPRECATIONS\n\n /**\r\n * Provided for backward compatibility, use Chart.Animation instead\r\n * @prop Chart.Animation#animationObject\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\n Object.defineProperty(exports$3.prototype, 'animationObject', {\n get: function () {\n return this;\n }\n });\n\n /**\r\n * Provided for backward compatibility, use Chart.Animation#chart instead\r\n * @prop Chart.Animation#chartInstance\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\n Object.defineProperty(exports$3.prototype, 'chartInstance', {\n get: function () {\n return this.chart;\n },\n set: function (value) {\n this.chart = value;\n }\n });\n core_defaults._set('global', {\n animation: {\n duration: 1000,\n easing: 'easeOutQuart',\n onProgress: helpers$1.noop,\n onComplete: helpers$1.noop\n }\n });\n var core_animations = {\n animations: [],\n request: null,\n /**\r\n * @param {Chart} chart - The chart to animate.\r\n * @param {Chart.Animation} animation - The animation that we will animate.\r\n * @param {number} duration - The animation duration in ms.\r\n * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\r\n */\n addAnimation: function (chart, animation, duration, lazy) {\n var animations = this.animations;\n var i, ilen;\n animation.chart = chart;\n animation.startTime = Date.now();\n animation.duration = duration;\n if (!lazy) {\n chart.animating = true;\n }\n for (i = 0, ilen = animations.length; i < ilen; ++i) {\n if (animations[i].chart === chart) {\n animations[i] = animation;\n return;\n }\n }\n animations.push(animation);\n\n // If there are no animations queued, manually kickstart a digest, for lack of a better word\n if (animations.length === 1) {\n this.requestAnimationFrame();\n }\n },\n cancelAnimation: function (chart) {\n var index = helpers$1.findIndex(this.animations, function (animation) {\n return animation.chart === chart;\n });\n if (index !== -1) {\n this.animations.splice(index, 1);\n chart.animating = false;\n }\n },\n requestAnimationFrame: function () {\n var me = this;\n if (me.request === null) {\n // Skip animation frame requests until the active one is executed.\n // This can happen when processing mouse events, e.g. 'mousemove'\n // and 'mouseout' events will trigger multiple renders.\n me.request = helpers$1.requestAnimFrame.call(window, function () {\n me.request = null;\n me.startDigest();\n });\n }\n },\n /**\r\n * @private\r\n */\n startDigest: function () {\n var me = this;\n me.advance();\n\n // Do we have more stuff to animate?\n if (me.animations.length > 0) {\n me.requestAnimationFrame();\n }\n },\n /**\r\n * @private\r\n */\n advance: function () {\n var animations = this.animations;\n var animation, chart, numSteps, nextStep;\n var i = 0;\n\n // 1 animation per chart, so we are looping charts here\n while (i < animations.length) {\n animation = animations[i];\n chart = animation.chart;\n numSteps = animation.numSteps;\n\n // Make sure that currentStep starts at 1\n // https://github.com/chartjs/Chart.js/issues/6104\n nextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\n animation.currentStep = Math.min(nextStep, numSteps);\n helpers$1.callback(animation.render, [chart, animation], chart);\n helpers$1.callback(animation.onAnimationProgress, [animation], chart);\n if (animation.currentStep >= numSteps) {\n helpers$1.callback(animation.onAnimationComplete, [animation], chart);\n chart.animating = false;\n animations.splice(i, 1);\n } else {\n ++i;\n }\n }\n }\n };\n var resolve = helpers$1.options.resolve;\n var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n /**\r\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n */\n function listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach(function (key) {\n var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n var base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value: function () {\n var args = Array.prototype.slice.call(arguments);\n var res = base.apply(this, args);\n helpers$1.each(array._chartjs.listeners, function (object) {\n if (typeof object[method] === 'function') {\n object[method].apply(object, args);\n }\n });\n return res;\n }\n });\n });\n }\n\n /**\r\n * Removes the given array event listener and cleanup extra attached properties (such as\r\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n */\n function unlistenArrayEvents(array, listener) {\n var stub = array._chartjs;\n if (!stub) {\n return;\n }\n var listeners = stub.listeners;\n var index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach(function (key) {\n delete array[key];\n });\n delete array._chartjs;\n }\n\n // Base class for all dataset controllers (line, bar, etc)\n var DatasetController = function (chart, datasetIndex) {\n this.initialize(chart, datasetIndex);\n };\n helpers$1.extend(DatasetController.prototype, {\n /**\r\n * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n * @type {Chart.core.element}\r\n */\n datasetElementType: null,\n /**\r\n * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n * @type {Chart.core.element}\r\n */\n dataElementType: null,\n /**\r\n * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\r\n * A derived controller may override this to resolve controller-specific options.\r\n * The keys defined here are for backward compatibility for legend styles.\r\n * @private\r\n */\n _datasetElementOptions: ['backgroundColor', 'borderCapStyle', 'borderColor', 'borderDash', 'borderDashOffset', 'borderJoinStyle', 'borderWidth'],\n /**\r\n * Data element option keys to be resolved in _resolveDataElementOptions.\r\n * A derived controller may override this to resolve controller-specific options.\r\n * The keys defined here are for backward compatibility for legend styles.\r\n * @private\r\n */\n _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'pointStyle'],\n initialize: function (chart, datasetIndex) {\n var me = this;\n me.chart = chart;\n me.index = datasetIndex;\n me.linkScales();\n me.addElements();\n me._type = me.getMeta().type;\n },\n updateIndex: function (datasetIndex) {\n this.index = datasetIndex;\n },\n linkScales: function () {\n var me = this;\n var meta = me.getMeta();\n var chart = me.chart;\n var scales = chart.scales;\n var dataset = me.getDataset();\n var scalesOpts = chart.options.scales;\n if (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\n meta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\n }\n if (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\n meta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\n }\n },\n getDataset: function () {\n return this.chart.data.datasets[this.index];\n },\n getMeta: function () {\n return this.chart.getDatasetMeta(this.index);\n },\n getScaleForId: function (scaleID) {\n return this.chart.scales[scaleID];\n },\n /**\r\n * @private\r\n */\n _getValueScaleId: function () {\n return this.getMeta().yAxisID;\n },\n /**\r\n * @private\r\n */\n _getIndexScaleId: function () {\n return this.getMeta().xAxisID;\n },\n /**\r\n * @private\r\n */\n _getValueScale: function () {\n return this.getScaleForId(this._getValueScaleId());\n },\n /**\r\n * @private\r\n */\n _getIndexScale: function () {\n return this.getScaleForId(this._getIndexScaleId());\n },\n reset: function () {\n this._update(true);\n },\n /**\r\n * @private\r\n */\n destroy: function () {\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n },\n createMetaDataset: function () {\n var me = this;\n var type = me.datasetElementType;\n return type && new type({\n _chart: me.chart,\n _datasetIndex: me.index\n });\n },\n createMetaData: function (index) {\n var me = this;\n var type = me.dataElementType;\n return type && new type({\n _chart: me.chart,\n _datasetIndex: me.index,\n _index: index\n });\n },\n addElements: function () {\n var me = this;\n var meta = me.getMeta();\n var data = me.getDataset().data || [];\n var metaData = meta.data;\n var i, ilen;\n for (i = 0, ilen = data.length; i < ilen; ++i) {\n metaData[i] = metaData[i] || me.createMetaData(i);\n }\n meta.dataset = meta.dataset || me.createMetaDataset();\n },\n addElementAndReset: function (index) {\n var element = this.createMetaData(index);\n this.getMeta().data.splice(index, 0, element);\n this.updateElement(element, index, true);\n },\n buildOrUpdateElements: function () {\n var me = this;\n var dataset = me.getDataset();\n var data = dataset.data || (dataset.data = []);\n\n // In order to correctly handle data addition/deletion animation (an thus simulate\n // real-time charts), we need to monitor these data modifications and synchronize\n // the internal meta data accordingly.\n if (me._data !== data) {\n if (me._data) {\n // This case happens when the user replaced the data array instance.\n unlistenArrayEvents(me._data, me);\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, me);\n }\n me._data = data;\n }\n\n // Re-sync meta data in case the user replaced the data array or if we missed\n // any updates and so make sure that we handle number of datapoints changing.\n me.resyncElements();\n },\n /**\r\n * Returns the merged user-supplied and default dataset-level options\r\n * @private\r\n */\n _configure: function () {\n var me = this;\n me._config = helpers$1.merge(Object.create(null), [me.chart.options.datasets[me._type], me.getDataset()], {\n merger: function (key, target, source) {\n if (key !== '_meta' && key !== 'data') {\n helpers$1._merger(key, target, source);\n }\n }\n });\n },\n _update: function (reset) {\n var me = this;\n me._configure();\n me._cachedDataOpts = null;\n me.update(reset);\n },\n update: helpers$1.noop,\n transition: function (easingValue) {\n var meta = this.getMeta();\n var elements = meta.data || [];\n var ilen = elements.length;\n var i = 0;\n for (; i < ilen; ++i) {\n elements[i].transition(easingValue);\n }\n if (meta.dataset) {\n meta.dataset.transition(easingValue);\n }\n },\n draw: function () {\n var meta = this.getMeta();\n var elements = meta.data || [];\n var ilen = elements.length;\n var i = 0;\n if (meta.dataset) {\n meta.dataset.draw();\n }\n for (; i < ilen; ++i) {\n elements[i].draw();\n }\n },\n /**\r\n * Returns a set of predefined style properties that should be used to represent the dataset\r\n * or the data if the index is specified\r\n * @param {number} index - data index\r\n * @return {IStyleInterface} style object\r\n */\n getStyle: function (index) {\n var me = this;\n var meta = me.getMeta();\n var dataset = meta.dataset;\n var style;\n me._configure();\n if (dataset && index === undefined) {\n style = me._resolveDatasetElementOptions(dataset || {});\n } else {\n index = index || 0;\n style = me._resolveDataElementOptions(meta.data[index] || {}, index);\n }\n if (style.fill === false || style.fill === null) {\n style.backgroundColor = style.borderColor;\n }\n return style;\n },\n /**\r\n * @private\r\n */\n _resolveDatasetElementOptions: function (element, hover) {\n var me = this;\n var chart = me.chart;\n var datasetOpts = me._config;\n var custom = element.custom || {};\n var options = chart.options.elements[me.datasetElementType.prototype._type] || {};\n var elementOptions = me._datasetElementOptions;\n var values = {};\n var i, ilen, key, readKey;\n\n // Scriptable options\n var context = {\n chart: chart,\n dataset: me.getDataset(),\n datasetIndex: me.index,\n hover: hover\n };\n for (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n key = elementOptions[i];\n readKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\n values[key] = resolve([custom[readKey], datasetOpts[readKey], options[readKey]], context);\n }\n return values;\n },\n /**\r\n * @private\r\n */\n _resolveDataElementOptions: function (element, index) {\n var me = this;\n var custom = element && element.custom;\n var cached = me._cachedDataOpts;\n if (cached && !custom) {\n return cached;\n }\n var chart = me.chart;\n var datasetOpts = me._config;\n var options = chart.options.elements[me.dataElementType.prototype._type] || {};\n var elementOptions = me._dataElementOptions;\n var values = {};\n\n // Scriptable options\n var context = {\n chart: chart,\n dataIndex: index,\n dataset: me.getDataset(),\n datasetIndex: me.index\n };\n\n // `resolve` sets cacheable to `false` if any option is indexed or scripted\n var info = {\n cacheable: !custom\n };\n var keys, i, ilen, key;\n custom = custom || {};\n if (helpers$1.isArray(elementOptions)) {\n for (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n key = elementOptions[i];\n values[key] = resolve([custom[key], datasetOpts[key], options[key]], context, index, info);\n }\n } else {\n keys = Object.keys(elementOptions);\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n values[key] = resolve([custom[key], datasetOpts[elementOptions[key]], datasetOpts[key], options[key]], context, index, info);\n }\n }\n if (info.cacheable) {\n me._cachedDataOpts = Object.freeze(values);\n }\n return values;\n },\n removeHoverStyle: function (element) {\n helpers$1.merge(element._model, element.$previousStyle || {});\n delete element.$previousStyle;\n },\n setHoverStyle: function (element) {\n var dataset = this.chart.data.datasets[element._datasetIndex];\n var index = element._index;\n var custom = element.custom || {};\n var model = element._model;\n var getHoverColor = helpers$1.getHoverColor;\n element.$previousStyle = {\n backgroundColor: model.backgroundColor,\n borderColor: model.borderColor,\n borderWidth: model.borderWidth\n };\n model.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\n model.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\n model.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\n },\n /**\r\n * @private\r\n */\n _removeDatasetHoverStyle: function () {\n var element = this.getMeta().dataset;\n if (element) {\n this.removeHoverStyle(element);\n }\n },\n /**\r\n * @private\r\n */\n _setDatasetHoverStyle: function () {\n var element = this.getMeta().dataset;\n var prev = {};\n var i, ilen, key, keys, hoverOptions, model;\n if (!element) {\n return;\n }\n model = element._model;\n hoverOptions = this._resolveDatasetElementOptions(element, true);\n keys = Object.keys(hoverOptions);\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n prev[key] = model[key];\n model[key] = hoverOptions[key];\n }\n element.$previousStyle = prev;\n },\n /**\r\n * @private\r\n */\n resyncElements: function () {\n var me = this;\n var meta = me.getMeta();\n var data = me.getDataset().data;\n var numMeta = meta.data.length;\n var numData = data.length;\n if (numData < numMeta) {\n meta.data.splice(numData, numMeta - numData);\n } else if (numData > numMeta) {\n me.insertElements(numMeta, numData - numMeta);\n }\n },\n /**\r\n * @private\r\n */\n insertElements: function (start, count) {\n for (var i = 0; i < count; ++i) {\n this.addElementAndReset(start + i);\n }\n },\n /**\r\n * @private\r\n */\n onDataPush: function () {\n var count = arguments.length;\n this.insertElements(this.getDataset().data.length - count, count);\n },\n /**\r\n * @private\r\n */\n onDataPop: function () {\n this.getMeta().data.pop();\n },\n /**\r\n * @private\r\n */\n onDataShift: function () {\n this.getMeta().data.shift();\n },\n /**\r\n * @private\r\n */\n onDataSplice: function (start, count) {\n this.getMeta().data.splice(start, count);\n this.insertElements(start, arguments.length - 2);\n },\n /**\r\n * @private\r\n */\n onDataUnshift: function () {\n this.insertElements(0, arguments.length);\n }\n });\n DatasetController.extend = helpers$1.inherits;\n var core_datasetController = DatasetController;\n var TAU = Math.PI * 2;\n core_defaults._set('global', {\n elements: {\n arc: {\n backgroundColor: core_defaults.global.defaultColor,\n borderColor: '#fff',\n borderWidth: 2,\n borderAlign: 'center'\n }\n }\n });\n function clipArc(ctx, arc) {\n var startAngle = arc.startAngle;\n var endAngle = arc.endAngle;\n var pixelMargin = arc.pixelMargin;\n var angleMargin = pixelMargin / arc.outerRadius;\n var x = arc.x;\n var y = arc.y;\n\n // Draw an inner border by cliping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (arc.innerRadius > pixelMargin) {\n angleMargin = pixelMargin / arc.innerRadius;\n ctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\n }\n ctx.closePath();\n ctx.clip();\n }\n function drawFullCircleBorders(ctx, vm, arc, inner) {\n var endAngle = arc.endAngle;\n var i;\n if (inner) {\n arc.endAngle = arc.startAngle + TAU;\n clipArc(ctx, arc);\n arc.endAngle = endAngle;\n if (arc.endAngle === arc.startAngle && arc.fullCircles) {\n arc.endAngle += TAU;\n arc.fullCircles--;\n }\n }\n ctx.beginPath();\n ctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\n for (i = 0; i < arc.fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\n for (i = 0; i < arc.fullCircles; ++i) {\n ctx.stroke();\n }\n }\n function drawBorder(ctx, vm, arc) {\n var inner = vm.borderAlign === 'inner';\n if (inner) {\n ctx.lineWidth = vm.borderWidth * 2;\n ctx.lineJoin = 'round';\n } else {\n ctx.lineWidth = vm.borderWidth;\n ctx.lineJoin = 'bevel';\n }\n if (arc.fullCircles) {\n drawFullCircleBorders(ctx, vm, arc, inner);\n }\n if (inner) {\n clipArc(ctx, arc);\n }\n ctx.beginPath();\n ctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\n ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n ctx.closePath();\n ctx.stroke();\n }\n var element_arc = core_element.extend({\n _type: 'arc',\n inLabelRange: function (mouseX) {\n var vm = this._view;\n if (vm) {\n return Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2);\n }\n return false;\n },\n inRange: function (chartX, chartY) {\n var vm = this._view;\n if (vm) {\n var pointRelativePosition = helpers$1.getAngleFromPoint(vm, {\n x: chartX,\n y: chartY\n });\n var angle = pointRelativePosition.angle;\n var distance = pointRelativePosition.distance;\n\n // Sanitise angle range\n var startAngle = vm.startAngle;\n var endAngle = vm.endAngle;\n while (endAngle < startAngle) {\n endAngle += TAU;\n }\n while (angle > endAngle) {\n angle -= TAU;\n }\n while (angle < startAngle) {\n angle += TAU;\n }\n\n // Check if within the range of the open/close angle\n var betweenAngles = angle >= startAngle && angle <= endAngle;\n var withinRadius = distance >= vm.innerRadius && distance <= vm.outerRadius;\n return betweenAngles && withinRadius;\n }\n return false;\n },\n getCenterPoint: function () {\n var vm = this._view;\n var halfAngle = (vm.startAngle + vm.endAngle) / 2;\n var halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n return {\n x: vm.x + Math.cos(halfAngle) * halfRadius,\n y: vm.y + Math.sin(halfAngle) * halfRadius\n };\n },\n getArea: function () {\n var vm = this._view;\n return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n },\n tooltipPosition: function () {\n var vm = this._view;\n var centreAngle = vm.startAngle + (vm.endAngle - vm.startAngle) / 2;\n var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n return {\n x: vm.x + Math.cos(centreAngle) * rangeFromCentre,\n y: vm.y + Math.sin(centreAngle) * rangeFromCentre\n };\n },\n draw: function () {\n var ctx = this._chart.ctx;\n var vm = this._view;\n var pixelMargin = vm.borderAlign === 'inner' ? 0.33 : 0;\n var arc = {\n x: vm.x,\n y: vm.y,\n innerRadius: vm.innerRadius,\n outerRadius: Math.max(vm.outerRadius - pixelMargin, 0),\n pixelMargin: pixelMargin,\n startAngle: vm.startAngle,\n endAngle: vm.endAngle,\n fullCircles: Math.floor(vm.circumference / TAU)\n };\n var i;\n ctx.save();\n ctx.fillStyle = vm.backgroundColor;\n ctx.strokeStyle = vm.borderColor;\n if (arc.fullCircles) {\n arc.endAngle = arc.startAngle + TAU;\n ctx.beginPath();\n ctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n ctx.closePath();\n for (i = 0; i < arc.fullCircles; ++i) {\n ctx.fill();\n }\n arc.endAngle = arc.startAngle + vm.circumference % TAU;\n }\n ctx.beginPath();\n ctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n ctx.closePath();\n ctx.fill();\n if (vm.borderWidth) {\n drawBorder(ctx, vm, arc);\n }\n ctx.restore();\n }\n });\n var valueOrDefault$1 = helpers$1.valueOrDefault;\n var defaultColor = core_defaults.global.defaultColor;\n core_defaults._set('global', {\n elements: {\n line: {\n tension: 0.4,\n backgroundColor: defaultColor,\n borderWidth: 3,\n borderColor: defaultColor,\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0.0,\n borderJoinStyle: 'miter',\n capBezierPoints: true,\n fill: true // do we fill in the area between the line and its base axis\n }\n }\n });\n var element_line = core_element.extend({\n _type: 'line',\n draw: function () {\n var me = this;\n var vm = me._view;\n var ctx = me._chart.ctx;\n var spanGaps = vm.spanGaps;\n var points = me._children.slice(); // clone array\n var globalDefaults = core_defaults.global;\n var globalOptionLineElements = globalDefaults.elements.line;\n var lastDrawnIndex = -1;\n var closePath = me._loop;\n var index, previous, currentVM;\n if (!points.length) {\n return;\n }\n if (me._loop) {\n for (index = 0; index < points.length; ++index) {\n previous = helpers$1.previousItem(points, index);\n // If the line has an open path, shift the point array\n if (!points[index]._view.skip && previous._view.skip) {\n points = points.slice(index).concat(points.slice(0, index));\n closePath = spanGaps;\n break;\n }\n }\n // If the line has a close path, add the first point again\n if (closePath) {\n points.push(points[0]);\n }\n }\n ctx.save();\n\n // Stroke Line Options\n ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n // IE 9 and 10 do not support line dash\n if (ctx.setLineDash) {\n ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n }\n ctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\n ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n ctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\n ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n // Stroke Line\n ctx.beginPath();\n\n // First point moves to it's starting position no matter what\n currentVM = points[0]._view;\n if (!currentVM.skip) {\n ctx.moveTo(currentVM.x, currentVM.y);\n lastDrawnIndex = 0;\n }\n for (index = 1; index < points.length; ++index) {\n currentVM = points[index]._view;\n previous = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\n if (!currentVM.skip) {\n if (lastDrawnIndex !== index - 1 && !spanGaps || lastDrawnIndex === -1) {\n // There was a gap and this is the first point after the gap\n ctx.moveTo(currentVM.x, currentVM.y);\n } else {\n // Line to next point\n helpers$1.canvas.lineTo(ctx, previous._view, currentVM);\n }\n lastDrawnIndex = index;\n }\n }\n if (closePath) {\n ctx.closePath();\n }\n ctx.stroke();\n ctx.restore();\n }\n });\n var valueOrDefault$2 = helpers$1.valueOrDefault;\n var defaultColor$1 = core_defaults.global.defaultColor;\n core_defaults._set('global', {\n elements: {\n point: {\n radius: 3,\n pointStyle: 'circle',\n backgroundColor: defaultColor$1,\n borderColor: defaultColor$1,\n borderWidth: 1,\n // Hover\n hitRadius: 1,\n hoverRadius: 4,\n hoverBorderWidth: 1\n }\n }\n });\n function xRange(mouseX) {\n var vm = this._view;\n return vm ? Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius : false;\n }\n function yRange(mouseY) {\n var vm = this._view;\n return vm ? Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius : false;\n }\n var element_point = core_element.extend({\n _type: 'point',\n inRange: function (mouseX, mouseY) {\n var vm = this._view;\n return vm ? Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2) < Math.pow(vm.hitRadius + vm.radius, 2) : false;\n },\n inLabelRange: xRange,\n inXRange: xRange,\n inYRange: yRange,\n getCenterPoint: function () {\n var vm = this._view;\n return {\n x: vm.x,\n y: vm.y\n };\n },\n getArea: function () {\n return Math.PI * Math.pow(this._view.radius, 2);\n },\n tooltipPosition: function () {\n var vm = this._view;\n return {\n x: vm.x,\n y: vm.y,\n padding: vm.radius + vm.borderWidth\n };\n },\n draw: function (chartArea) {\n var vm = this._view;\n var ctx = this._chart.ctx;\n var pointStyle = vm.pointStyle;\n var rotation = vm.rotation;\n var radius = vm.radius;\n var x = vm.x;\n var y = vm.y;\n var globalDefaults = core_defaults.global;\n var defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\n\n if (vm.skip) {\n return;\n }\n\n // Clipping for Points.\n if (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\n ctx.strokeStyle = vm.borderColor || defaultColor;\n ctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\n ctx.fillStyle = vm.backgroundColor || defaultColor;\n helpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n }\n }\n });\n var defaultColor$2 = core_defaults.global.defaultColor;\n core_defaults._set('global', {\n elements: {\n rectangle: {\n backgroundColor: defaultColor$2,\n borderColor: defaultColor$2,\n borderSkipped: 'bottom',\n borderWidth: 0\n }\n }\n });\n function isVertical(vm) {\n return vm && vm.width !== undefined;\n }\n\n /**\r\n * Helper function to get the bounds of the bar regardless of the orientation\r\n * @param bar {Chart.Element.Rectangle} the bar\r\n * @return {Bounds} bounds of the bar\r\n * @private\r\n */\n function getBarBounds(vm) {\n var x1, x2, y1, y2, half;\n if (isVertical(vm)) {\n half = vm.width / 2;\n x1 = vm.x - half;\n x2 = vm.x + half;\n y1 = Math.min(vm.y, vm.base);\n y2 = Math.max(vm.y, vm.base);\n } else {\n half = vm.height / 2;\n x1 = Math.min(vm.x, vm.base);\n x2 = Math.max(vm.x, vm.base);\n y1 = vm.y - half;\n y2 = vm.y + half;\n }\n return {\n left: x1,\n top: y1,\n right: x2,\n bottom: y2\n };\n }\n function swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n }\n function parseBorderSkipped(vm) {\n var edge = vm.borderSkipped;\n var res = {};\n if (!edge) {\n return res;\n }\n if (vm.horizontal) {\n if (vm.base > vm.x) {\n edge = swap(edge, 'left', 'right');\n }\n } else if (vm.base < vm.y) {\n edge = swap(edge, 'bottom', 'top');\n }\n res[edge] = true;\n return res;\n }\n function parseBorderWidth(vm, maxW, maxH) {\n var value = vm.borderWidth;\n var skip = parseBorderSkipped(vm);\n var t, r, b, l;\n if (helpers$1.isObject(value)) {\n t = +value.top || 0;\n r = +value.right || 0;\n b = +value.bottom || 0;\n l = +value.left || 0;\n } else {\n t = r = b = l = +value || 0;\n }\n return {\n t: skip.top || t < 0 ? 0 : t > maxH ? maxH : t,\n r: skip.right || r < 0 ? 0 : r > maxW ? maxW : r,\n b: skip.bottom || b < 0 ? 0 : b > maxH ? maxH : b,\n l: skip.left || l < 0 ? 0 : l > maxW ? maxW : l\n };\n }\n function boundingRects(vm) {\n var bounds = getBarBounds(vm);\n var width = bounds.right - bounds.left;\n var height = bounds.bottom - bounds.top;\n var border = parseBorderWidth(vm, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b\n }\n };\n }\n function inRange(vm, x, y) {\n var skipX = x === null;\n var skipY = y === null;\n var bounds = !vm || skipX && skipY ? false : getBarBounds(vm);\n return bounds && (skipX || x >= bounds.left && x <= bounds.right) && (skipY || y >= bounds.top && y <= bounds.bottom);\n }\n var element_rectangle = core_element.extend({\n _type: 'rectangle',\n draw: function () {\n var ctx = this._chart.ctx;\n var vm = this._view;\n var rects = boundingRects(vm);\n var outer = rects.outer;\n var inner = rects.inner;\n ctx.fillStyle = vm.backgroundColor;\n ctx.fillRect(outer.x, outer.y, outer.w, outer.h);\n if (outer.w === inner.w && outer.h === inner.h) {\n return;\n }\n ctx.save();\n ctx.beginPath();\n ctx.rect(outer.x, outer.y, outer.w, outer.h);\n ctx.clip();\n ctx.fillStyle = vm.borderColor;\n ctx.rect(inner.x, inner.y, inner.w, inner.h);\n ctx.fill('evenodd');\n ctx.restore();\n },\n height: function () {\n var vm = this._view;\n return vm.base - vm.y;\n },\n inRange: function (mouseX, mouseY) {\n return inRange(this._view, mouseX, mouseY);\n },\n inLabelRange: function (mouseX, mouseY) {\n var vm = this._view;\n return isVertical(vm) ? inRange(vm, mouseX, null) : inRange(vm, null, mouseY);\n },\n inXRange: function (mouseX) {\n return inRange(this._view, mouseX, null);\n },\n inYRange: function (mouseY) {\n return inRange(this._view, null, mouseY);\n },\n getCenterPoint: function () {\n var vm = this._view;\n var x, y;\n if (isVertical(vm)) {\n x = vm.x;\n y = (vm.y + vm.base) / 2;\n } else {\n x = (vm.x + vm.base) / 2;\n y = vm.y;\n }\n return {\n x: x,\n y: y\n };\n },\n getArea: function () {\n var vm = this._view;\n return isVertical(vm) ? vm.width * Math.abs(vm.y - vm.base) : vm.height * Math.abs(vm.x - vm.base);\n },\n tooltipPosition: function () {\n var vm = this._view;\n return {\n x: vm.x,\n y: vm.y\n };\n }\n });\n var elements = {};\n var Arc = element_arc;\n var Line = element_line;\n var Point = element_point;\n var Rectangle = element_rectangle;\n elements.Arc = Arc;\n elements.Line = Line;\n elements.Point = Point;\n elements.Rectangle = Rectangle;\n var deprecated = helpers$1._deprecated;\n var valueOrDefault$3 = helpers$1.valueOrDefault;\n core_defaults._set('bar', {\n hover: {\n mode: 'label'\n },\n scales: {\n xAxes: [{\n type: 'category',\n offset: true,\n gridLines: {\n offsetGridLines: true\n }\n }],\n yAxes: [{\n type: 'linear'\n }]\n }\n });\n core_defaults._set('global', {\n datasets: {\n bar: {\n categoryPercentage: 0.8,\n barPercentage: 0.9\n }\n }\n });\n\n /**\r\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\r\n * @private\r\n */\n function computeMinSampleSize(scale, pixels) {\n var min = scale._length;\n var prev, curr, i, ilen;\n for (i = 1, ilen = pixels.length; i < ilen; ++i) {\n min = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\n }\n for (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n min = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min;\n prev = curr;\n }\n return min;\n }\n\n /**\r\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\r\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\r\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\r\n * @private\r\n */\n function computeFitCategoryTraits(index, ruler, options) {\n var thickness = options.barThickness;\n var count = ruler.stackCount;\n var curr = ruler.pixels[index];\n var min = helpers$1.isNullOrUndef(thickness) ? computeMinSampleSize(ruler.scale, ruler.pixels) : -1;\n var size, ratio;\n if (helpers$1.isNullOrUndef(thickness)) {\n size = min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n // When bar thickness is enforced, category and bar percentages are ignored.\n // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n // and deprecate barPercentage since this value is ignored when thickness is absolute.\n size = thickness * count;\n ratio = 1;\n }\n return {\n chunk: size / count,\n ratio: ratio,\n start: curr - size / 2\n };\n }\n\n /**\r\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\r\n * percentage options are 1), based on the previous and following categories. This mode\r\n * generates bars with different widths when data are not evenly spaced.\r\n * @private\r\n */\n function computeFlexCategoryTraits(index, ruler, options) {\n var pixels = ruler.pixels;\n var curr = pixels[index];\n var prev = index > 0 ? pixels[index - 1] : null;\n var next = index < pixels.length - 1 ? pixels[index + 1] : null;\n var percent = options.categoryPercentage;\n var start, size;\n if (prev === null) {\n // first data: its size is double based on the next point or,\n // if it's also the last data, we use the scale size.\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n // last data: its size is also double based on the previous point.\n next = curr + curr - prev;\n }\n start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / ruler.stackCount,\n ratio: options.barPercentage,\n start: start\n };\n }\n var controller_bar = core_datasetController.extend({\n dataElementType: elements.Rectangle,\n /**\r\n * @private\r\n */\n _dataElementOptions: ['backgroundColor', 'borderColor', 'borderSkipped', 'borderWidth', 'barPercentage', 'barThickness', 'categoryPercentage', 'maxBarThickness', 'minBarLength'],\n initialize: function () {\n var me = this;\n var meta, scaleOpts;\n core_datasetController.prototype.initialize.apply(me, arguments);\n meta = me.getMeta();\n meta.stack = me.getDataset().stack;\n meta.bar = true;\n scaleOpts = me._getIndexScale().options;\n deprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\n deprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\n deprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\n deprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\n deprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\n },\n update: function (reset) {\n var me = this;\n var rects = me.getMeta().data;\n var i, ilen;\n me._ruler = me.getRuler();\n for (i = 0, ilen = rects.length; i < ilen; ++i) {\n me.updateElement(rects[i], i, reset);\n }\n },\n updateElement: function (rectangle, index, reset) {\n var me = this;\n var meta = me.getMeta();\n var dataset = me.getDataset();\n var options = me._resolveDataElementOptions(rectangle, index);\n rectangle._xScale = me.getScaleForId(meta.xAxisID);\n rectangle._yScale = me.getScaleForId(meta.yAxisID);\n rectangle._datasetIndex = me.index;\n rectangle._index = index;\n rectangle._model = {\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderSkipped: options.borderSkipped,\n borderWidth: options.borderWidth,\n datasetLabel: dataset.label,\n label: me.chart.data.labels[index]\n };\n if (helpers$1.isArray(dataset.data[index])) {\n rectangle._model.borderSkipped = null;\n }\n me._updateElementGeometry(rectangle, index, reset, options);\n rectangle.pivot();\n },\n /**\r\n * @private\r\n */\n _updateElementGeometry: function (rectangle, index, reset, options) {\n var me = this;\n var model = rectangle._model;\n var vscale = me._getValueScale();\n var base = vscale.getBasePixel();\n var horizontal = vscale.isHorizontal();\n var ruler = me._ruler || me.getRuler();\n var vpixels = me.calculateBarValuePixels(me.index, index, options);\n var ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\n model.horizontal = horizontal;\n model.base = reset ? base : vpixels.base;\n model.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n model.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n model.height = horizontal ? ipixels.size : undefined;\n model.width = horizontal ? undefined : ipixels.size;\n },\n /**\r\n * Returns the stacks based on groups and bar visibility.\r\n * @param {number} [last] - The dataset index\r\n * @returns {string[]} The list of stack IDs\r\n * @private\r\n */\n _getStacks: function (last) {\n var me = this;\n var scale = me._getIndexScale();\n var metasets = scale._getMatchingVisibleMetas(me._type);\n var stacked = scale.options.stacked;\n var ilen = metasets.length;\n var stacks = [];\n var i, meta;\n for (i = 0; i < ilen; ++i) {\n meta = metasets[i];\n // stacked | meta.stack\n // | found | not found | undefined\n // false | x | x | x\n // true | | x |\n // undefined | | x | x\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n return stacks;\n },\n /**\r\n * Returns the effective number of stacks based on groups and bar visibility.\r\n * @private\r\n */\n getStackCount: function () {\n return this._getStacks().length;\n },\n /**\r\n * Returns the stack index for the given dataset based on groups and bar visibility.\r\n * @param {number} [datasetIndex] - The dataset index\r\n * @param {string} [name] - The stack name to find\r\n * @returns {number} The stack index\r\n * @private\r\n */\n getStackIndex: function (datasetIndex, name) {\n var stacks = this._getStacks(datasetIndex);\n var index = name !== undefined ? stacks.indexOf(name) : -1; // indexOf returns -1 if element is not present\n\n return index === -1 ? stacks.length - 1 : index;\n },\n /**\r\n * @private\r\n */\n getRuler: function () {\n var me = this;\n var scale = me._getIndexScale();\n var pixels = [];\n var i, ilen;\n for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n pixels.push(scale.getPixelForValue(null, i, me.index));\n }\n return {\n pixels: pixels,\n start: scale._startPixel,\n end: scale._endPixel,\n stackCount: me.getStackCount(),\n scale: scale\n };\n },\n /**\r\n * Note: pixel values are not clamped to the scale area.\r\n * @private\r\n */\n calculateBarValuePixels: function (datasetIndex, index, options) {\n var me = this;\n var chart = me.chart;\n var scale = me._getValueScale();\n var isHorizontal = scale.isHorizontal();\n var datasets = chart.data.datasets;\n var metasets = scale._getMatchingVisibleMetas(me._type);\n var value = scale._parseValue(datasets[datasetIndex].data[index]);\n var minBarLength = options.minBarLength;\n var stacked = scale.options.stacked;\n var stack = me.getMeta().stack;\n var start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\n var length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\n var ilen = metasets.length;\n var i, imeta, ivalue, base, head, size, stackLength;\n if (stacked || stacked === undefined && stack !== undefined) {\n for (i = 0; i < ilen; ++i) {\n imeta = metasets[i];\n if (imeta.index === datasetIndex) {\n break;\n }\n if (imeta.stack === stack) {\n stackLength = scale._parseValue(datasets[imeta.index].data[index]);\n ivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\n if (value.min < 0 && ivalue < 0 || value.max >= 0 && ivalue > 0) {\n start += ivalue;\n }\n }\n }\n }\n base = scale.getPixelForValue(start);\n head = scale.getPixelForValue(start + length);\n size = head - base;\n if (minBarLength !== undefined && Math.abs(size) < minBarLength) {\n size = minBarLength;\n if (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\n head = base - minBarLength;\n } else {\n head = base + minBarLength;\n }\n }\n return {\n size: size,\n base: base,\n head: head,\n center: head + size / 2\n };\n },\n /**\r\n * @private\r\n */\n calculateBarIndexPixels: function (datasetIndex, index, ruler, options) {\n var me = this;\n var range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options) : computeFitCategoryTraits(index, ruler, options);\n var stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n var center = range.start + range.chunk * stackIndex + range.chunk / 2;\n var size = Math.min(valueOrDefault$3(options.maxBarThickness, Infinity), range.chunk * range.ratio);\n return {\n base: center - size / 2,\n head: center + size / 2,\n center: center,\n size: size\n };\n },\n draw: function () {\n var me = this;\n var chart = me.chart;\n var scale = me._getValueScale();\n var rects = me.getMeta().data;\n var dataset = me.getDataset();\n var ilen = rects.length;\n var i = 0;\n helpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\n for (; i < ilen; ++i) {\n var val = scale._parseValue(dataset.data[i]);\n if (!isNaN(val.min) && !isNaN(val.max)) {\n rects[i].draw();\n }\n }\n helpers$1.canvas.unclipArea(chart.ctx);\n },\n /**\r\n * @private\r\n */\n _resolveDataElementOptions: function () {\n var me = this;\n var values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\n var indexOpts = me._getIndexScale().options;\n var valueOpts = me._getValueScale().options;\n values.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\n values.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\n values.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\n values.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\n values.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\n return values;\n }\n });\n var valueOrDefault$4 = helpers$1.valueOrDefault;\n var resolve$1 = helpers$1.options.resolve;\n core_defaults._set('bubble', {\n hover: {\n mode: 'single'\n },\n scales: {\n xAxes: [{\n type: 'linear',\n // bubble should probably use a linear scale by default\n position: 'bottom',\n id: 'x-axis-0' // need an ID so datasets can reference the scale\n }],\n yAxes: [{\n type: 'linear',\n position: 'left',\n id: 'y-axis-0'\n }]\n },\n tooltips: {\n callbacks: {\n title: function () {\n // Title doesn't make sense for scatter since we format the data as a point\n return '';\n },\n label: function (item, data) {\n var datasetLabel = data.datasets[item.datasetIndex].label || '';\n var dataPoint = data.datasets[item.datasetIndex].data[item.index];\n return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n }\n }\n }\n });\n var controller_bubble = core_datasetController.extend({\n /**\r\n * @protected\r\n */\n dataElementType: elements.Point,\n /**\r\n * @private\r\n */\n _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'hoverBackgroundColor', 'hoverBorderColor', 'hoverBorderWidth', 'hoverRadius', 'hitRadius', 'pointStyle', 'rotation'],\n /**\r\n * @protected\r\n */\n update: function (reset) {\n var me = this;\n var meta = me.getMeta();\n var points = meta.data;\n\n // Update Points\n helpers$1.each(points, function (point, index) {\n me.updateElement(point, index, reset);\n });\n },\n /**\r\n * @protected\r\n */\n updateElement: function (point, index, reset) {\n var me = this;\n var meta = me.getMeta();\n var custom = point.custom || {};\n var xScale = me.getScaleForId(meta.xAxisID);\n var yScale = me.getScaleForId(meta.yAxisID);\n var options = me._resolveDataElementOptions(point, index);\n var data = me.getDataset().data[index];\n var dsIndex = me.index;\n var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n point._xScale = xScale;\n point._yScale = yScale;\n point._options = options;\n point._datasetIndex = dsIndex;\n point._index = index;\n point._model = {\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: options.borderWidth,\n hitRadius: options.hitRadius,\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n radius: reset ? 0 : options.radius,\n skip: custom.skip || isNaN(x) || isNaN(y),\n x: x,\n y: y\n };\n point.pivot();\n },\n /**\r\n * @protected\r\n */\n setHoverStyle: function (point) {\n var model = point._model;\n var options = point._options;\n var getHoverColor = helpers$1.getHoverColor;\n point.$previousStyle = {\n backgroundColor: model.backgroundColor,\n borderColor: model.borderColor,\n borderWidth: model.borderWidth,\n radius: model.radius\n };\n model.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n model.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\n model.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\n model.radius = options.radius + options.hoverRadius;\n },\n /**\r\n * @private\r\n */\n _resolveDataElementOptions: function (point, index) {\n var me = this;\n var chart = me.chart;\n var dataset = me.getDataset();\n var custom = point.custom || {};\n var data = dataset.data[index] || {};\n var values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments);\n\n // Scriptable options\n var context = {\n chart: chart,\n dataIndex: index,\n dataset: dataset,\n datasetIndex: me.index\n };\n\n // In case values were cached (and thus frozen), we need to clone the values\n if (me._cachedDataOpts === values) {\n values = helpers$1.extend({}, values);\n }\n\n // Custom radius resolution\n values.radius = resolve$1([custom.radius, data.r, me._config.radius, chart.options.elements.point.radius], context, index);\n return values;\n }\n });\n var valueOrDefault$5 = helpers$1.valueOrDefault;\n var PI$1 = Math.PI;\n var DOUBLE_PI$1 = PI$1 * 2;\n var HALF_PI$1 = PI$1 / 2;\n core_defaults._set('doughnut', {\n animation: {\n // Boolean - Whether we animate the rotation of the Doughnut\n animateRotate: true,\n // Boolean - Whether we animate scaling the Doughnut from the centre\n animateScale: false\n },\n hover: {\n mode: 'single'\n },\n legendCallback: function (chart) {\n var list = document.createElement('ul');\n var data = chart.data;\n var datasets = data.datasets;\n var labels = data.labels;\n var i, ilen, listItem, listItemSpan;\n list.setAttribute('class', chart.id + '-legend');\n if (datasets.length) {\n for (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n listItem = list.appendChild(document.createElement('li'));\n listItemSpan = listItem.appendChild(document.createElement('span'));\n listItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n if (labels[i]) {\n listItem.appendChild(document.createTextNode(labels[i]));\n }\n }\n }\n return list.outerHTML;\n },\n legend: {\n labels: {\n generateLabels: function (chart) {\n var data = chart.data;\n if (data.labels.length && data.datasets.length) {\n return data.labels.map(function (label, i) {\n var meta = chart.getDatasetMeta(0);\n var style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n hidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick: function (e, legendItem) {\n var index = legendItem.index;\n var chart = this.chart;\n var i, ilen, meta;\n for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n meta = chart.getDatasetMeta(i);\n // toggle visibility of index if exists\n if (meta.data[index]) {\n meta.data[index].hidden = !meta.data[index].hidden;\n }\n }\n chart.update();\n }\n },\n // The percentage of the chart that we cut out of the middle.\n cutoutPercentage: 50,\n // The rotation of the chart, where the first data arc begins.\n rotation: -HALF_PI$1,\n // The total circumference of the chart.\n circumference: DOUBLE_PI$1,\n // Need to override these to give a nice default\n tooltips: {\n callbacks: {\n title: function () {\n return '';\n },\n label: function (tooltipItem, data) {\n var dataLabel = data.labels[tooltipItem.index];\n var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n if (helpers$1.isArray(dataLabel)) {\n // show value on first line of multiline label\n // need to clone because we are changing the value\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n });\n var controller_doughnut = core_datasetController.extend({\n dataElementType: elements.Arc,\n linkScales: helpers$1.noop,\n /**\r\n * @private\r\n */\n _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'borderAlign', 'hoverBackgroundColor', 'hoverBorderColor', 'hoverBorderWidth'],\n // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n getRingIndex: function (datasetIndex) {\n var ringIndex = 0;\n for (var j = 0; j < datasetIndex; ++j) {\n if (this.chart.isDatasetVisible(j)) {\n ++ringIndex;\n }\n }\n return ringIndex;\n },\n update: function (reset) {\n var me = this;\n var chart = me.chart;\n var chartArea = chart.chartArea;\n var opts = chart.options;\n var ratioX = 1;\n var ratioY = 1;\n var offsetX = 0;\n var offsetY = 0;\n var meta = me.getMeta();\n var arcs = meta.data;\n var cutout = opts.cutoutPercentage / 100 || 0;\n var circumference = opts.circumference;\n var chartWeight = me._getRingWeight(me.index);\n var maxWidth, maxHeight, i, ilen;\n\n // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n if (circumference < DOUBLE_PI$1) {\n var startAngle = opts.rotation % DOUBLE_PI$1;\n startAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\n var endAngle = startAngle + circumference;\n var startX = Math.cos(startAngle);\n var startY = Math.sin(startAngle);\n var endX = Math.cos(endAngle);\n var endY = Math.sin(endAngle);\n var contains0 = startAngle <= 0 && endAngle >= 0 || endAngle >= DOUBLE_PI$1;\n var contains90 = startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1 || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\n var contains180 = startAngle === -PI$1 || endAngle >= PI$1;\n var contains270 = startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1 || endAngle >= PI$1 + HALF_PI$1;\n var minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\n var minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\n var maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\n var maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n arcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n }\n chart.borderWidth = me.getMaxBorderWidth();\n maxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\n maxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\n chart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n chart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\n chart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\n chart.offsetX = offsetX * chart.outerRadius;\n chart.offsetY = offsetY * chart.outerRadius;\n meta.total = me.calculateTotal();\n me.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\n me.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n me.updateElement(arcs[i], i, reset);\n }\n },\n updateElement: function (arc, index, reset) {\n var me = this;\n var chart = me.chart;\n var chartArea = chart.chartArea;\n var opts = chart.options;\n var animationOpts = opts.animation;\n var centerX = (chartArea.left + chartArea.right) / 2;\n var centerY = (chartArea.top + chartArea.bottom) / 2;\n var startAngle = opts.rotation; // non reset case handled later\n var endAngle = opts.rotation; // non reset case handled later\n var dataset = me.getDataset();\n var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\n var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n var options = arc._options || {};\n helpers$1.extend(arc, {\n // Utility\n _datasetIndex: me.index,\n _index: index,\n // Desired view properties\n _model: {\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: options.borderWidth,\n borderAlign: options.borderAlign,\n x: centerX + chart.offsetX,\n y: centerY + chart.offsetY,\n startAngle: startAngle,\n endAngle: endAngle,\n circumference: circumference,\n outerRadius: outerRadius,\n innerRadius: innerRadius,\n label: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n }\n });\n var model = arc._model;\n\n // Set correct angles if not resetting\n if (!reset || !animationOpts.animateRotate) {\n if (index === 0) {\n model.startAngle = opts.rotation;\n } else {\n model.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n }\n model.endAngle = model.startAngle + model.circumference;\n }\n arc.pivot();\n },\n calculateTotal: function () {\n var dataset = this.getDataset();\n var meta = this.getMeta();\n var total = 0;\n var value;\n helpers$1.each(meta.data, function (element, index) {\n value = dataset.data[index];\n if (!isNaN(value) && !element.hidden) {\n total += Math.abs(value);\n }\n });\n\n /* if (total === 0) {\r\n \ttotal = NaN;\r\n }*/\n\n return total;\n },\n calculateCircumference: function (value) {\n var total = this.getMeta().total;\n if (total > 0 && !isNaN(value)) {\n return DOUBLE_PI$1 * (Math.abs(value) / total);\n }\n return 0;\n },\n // gets the max border or hover width to properly scale pie charts\n getMaxBorderWidth: function (arcs) {\n var me = this;\n var max = 0;\n var chart = me.chart;\n var i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\n if (!arcs) {\n // Find the outmost visible dataset\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n if (i !== me.index) {\n controller = meta.controller;\n }\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n arc = arcs[i];\n if (controller) {\n controller._configure();\n options = controller._resolveDataElementOptions(arc, i);\n } else {\n options = arc._options;\n }\n if (options.borderAlign !== 'inner') {\n borderWidth = options.borderWidth;\n hoverWidth = options.hoverBorderWidth;\n max = borderWidth > max ? borderWidth : max;\n max = hoverWidth > max ? hoverWidth : max;\n }\n }\n return max;\n },\n /**\r\n * @protected\r\n */\n setHoverStyle: function (arc) {\n var model = arc._model;\n var options = arc._options;\n var getHoverColor = helpers$1.getHoverColor;\n arc.$previousStyle = {\n backgroundColor: model.backgroundColor,\n borderColor: model.borderColor,\n borderWidth: model.borderWidth\n };\n model.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n model.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\n model.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\n },\n /**\r\n * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\r\n * @private\r\n */\n _getRingWeightOffset: function (datasetIndex) {\n var ringWeightOffset = 0;\n for (var i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n },\n /**\r\n * @private\r\n */\n _getRingWeight: function (dataSetIndex) {\n return Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\n },\n /**\r\n * Returns the sum of all visibile data set weights. This value can be 0.\r\n * @private\r\n */\n _getVisibleDatasetWeightTotal: function () {\n return this._getRingWeightOffset(this.chart.data.datasets.length);\n }\n });\n core_defaults._set('horizontalBar', {\n hover: {\n mode: 'index',\n axis: 'y'\n },\n scales: {\n xAxes: [{\n type: 'linear',\n position: 'bottom'\n }],\n yAxes: [{\n type: 'category',\n position: 'left',\n offset: true,\n gridLines: {\n offsetGridLines: true\n }\n }]\n },\n elements: {\n rectangle: {\n borderSkipped: 'left'\n }\n },\n tooltips: {\n mode: 'index',\n axis: 'y'\n }\n });\n core_defaults._set('global', {\n datasets: {\n horizontalBar: {\n categoryPercentage: 0.8,\n barPercentage: 0.9\n }\n }\n });\n var controller_horizontalBar = controller_bar.extend({\n /**\r\n * @private\r\n */\n _getValueScaleId: function () {\n return this.getMeta().xAxisID;\n },\n /**\r\n * @private\r\n */\n _getIndexScaleId: function () {\n return this.getMeta().yAxisID;\n }\n });\n var valueOrDefault$6 = helpers$1.valueOrDefault;\n var resolve$2 = helpers$1.options.resolve;\n var isPointInArea = helpers$1.canvas._isPointInArea;\n core_defaults._set('line', {\n showLines: true,\n spanGaps: false,\n hover: {\n mode: 'label'\n },\n scales: {\n xAxes: [{\n type: 'category',\n id: 'x-axis-0'\n }],\n yAxes: [{\n type: 'linear',\n id: 'y-axis-0'\n }]\n }\n });\n function scaleClip(scale, halfBorderWidth) {\n var tickOpts = scale && scale.options.ticks || {};\n var reverse = tickOpts.reverse;\n var min = tickOpts.min === undefined ? halfBorderWidth : 0;\n var max = tickOpts.max === undefined ? halfBorderWidth : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n }\n function defaultClip(xScale, yScale, borderWidth) {\n var halfBorderWidth = borderWidth / 2;\n var x = scaleClip(xScale, halfBorderWidth);\n var y = scaleClip(yScale, halfBorderWidth);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n }\n function toClip(value) {\n var t, r, b, l;\n if (helpers$1.isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l\n };\n }\n var controller_line = core_datasetController.extend({\n datasetElementType: elements.Line,\n dataElementType: elements.Point,\n /**\r\n * @private\r\n */\n _datasetElementOptions: ['backgroundColor', 'borderCapStyle', 'borderColor', 'borderDash', 'borderDashOffset', 'borderJoinStyle', 'borderWidth', 'cubicInterpolationMode', 'fill'],\n /**\r\n * @private\r\n */\n _dataElementOptions: {\n backgroundColor: 'pointBackgroundColor',\n borderColor: 'pointBorderColor',\n borderWidth: 'pointBorderWidth',\n hitRadius: 'pointHitRadius',\n hoverBackgroundColor: 'pointHoverBackgroundColor',\n hoverBorderColor: 'pointHoverBorderColor',\n hoverBorderWidth: 'pointHoverBorderWidth',\n hoverRadius: 'pointHoverRadius',\n pointStyle: 'pointStyle',\n radius: 'pointRadius',\n rotation: 'pointRotation'\n },\n update: function (reset) {\n var me = this;\n var meta = me.getMeta();\n var line = meta.dataset;\n var points = meta.data || [];\n var options = me.chart.options;\n var config = me._config;\n var showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\n var i, ilen;\n me._xScale = me.getScaleForId(meta.xAxisID);\n me._yScale = me.getScaleForId(meta.yAxisID);\n\n // Update Line\n if (showLine) {\n // Compatibility: If the properties are defined with only the old name, use those values\n if (config.tension !== undefined && config.lineTension === undefined) {\n config.lineTension = config.tension;\n }\n\n // Utility\n line._scale = me._yScale;\n line._datasetIndex = me.index;\n // Data\n line._children = points;\n // Model\n line._model = me._resolveDatasetElementOptions(line);\n line.pivot();\n }\n\n // Update Points\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n me.updateElement(points[i], i, reset);\n }\n if (showLine && line._model.tension !== 0) {\n me.updateBezierControlPoints();\n }\n\n // Now pivot the point for animation\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n points[i].pivot();\n }\n },\n updateElement: function (point, index, reset) {\n var me = this;\n var meta = me.getMeta();\n var custom = point.custom || {};\n var dataset = me.getDataset();\n var datasetIndex = me.index;\n var value = dataset.data[index];\n var xScale = me._xScale;\n var yScale = me._yScale;\n var lineModel = meta.dataset._model;\n var x, y;\n var options = me._resolveDataElementOptions(point, index);\n x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n // Utility\n point._xScale = xScale;\n point._yScale = yScale;\n point._options = options;\n point._datasetIndex = datasetIndex;\n point._index = index;\n\n // Desired view properties\n point._model = {\n x: x,\n y: y,\n skip: custom.skip || isNaN(x) || isNaN(y),\n // Appearance\n radius: options.radius,\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: options.borderWidth,\n tension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\n steppedLine: lineModel ? lineModel.steppedLine : false,\n // Tooltip\n hitRadius: options.hitRadius\n };\n },\n /**\r\n * @private\r\n */\n _resolveDatasetElementOptions: function (element) {\n var me = this;\n var config = me._config;\n var custom = element.custom || {};\n var options = me.chart.options;\n var lineOptions = options.elements.line;\n var values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\n\n // The default behavior of lines is to break at null values, according\n // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n // This option gives lines the ability to span gaps\n values.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\n values.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\n values.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\n values.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\n return values;\n },\n calculatePointY: function (value, index, datasetIndex) {\n var me = this;\n var chart = me.chart;\n var yScale = me._yScale;\n var sumPos = 0;\n var sumNeg = 0;\n var i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\n if (yScale.options.stacked) {\n rightValue = +yScale.getRightValue(value);\n metasets = chart._getSortedVisibleDatasetMetas();\n ilen = metasets.length;\n for (i = 0; i < ilen; ++i) {\n dsMeta = metasets[i];\n if (dsMeta.index === datasetIndex) {\n break;\n }\n ds = chart.data.datasets[dsMeta.index];\n if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\n stackedRightValue = +yScale.getRightValue(ds.data[index]);\n if (stackedRightValue < 0) {\n sumNeg += stackedRightValue || 0;\n } else {\n sumPos += stackedRightValue || 0;\n }\n }\n }\n if (rightValue < 0) {\n return yScale.getPixelForValue(sumNeg + rightValue);\n }\n return yScale.getPixelForValue(sumPos + rightValue);\n }\n return yScale.getPixelForValue(value);\n },\n updateBezierControlPoints: function () {\n var me = this;\n var chart = me.chart;\n var meta = me.getMeta();\n var lineModel = meta.dataset._model;\n var area = chart.chartArea;\n var points = meta.data || [];\n var i, ilen, model, controlPoints;\n\n // Only consider points that are drawn in case the spanGaps option is used\n if (lineModel.spanGaps) {\n points = points.filter(function (pt) {\n return !pt._model.skip;\n });\n }\n function capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n }\n if (lineModel.cubicInterpolationMode === 'monotone') {\n helpers$1.splineCurveMonotone(points);\n } else {\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n model = points[i]._model;\n controlPoints = helpers$1.splineCurve(helpers$1.previousItem(points, i)._model, model, helpers$1.nextItem(points, i)._model, lineModel.tension);\n model.controlPointPreviousX = controlPoints.previous.x;\n model.controlPointPreviousY = controlPoints.previous.y;\n model.controlPointNextX = controlPoints.next.x;\n model.controlPointNextY = controlPoints.next.y;\n }\n }\n if (chart.options.elements.line.capBezierPoints) {\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n model = points[i]._model;\n if (isPointInArea(model, area)) {\n if (i > 0 && isPointInArea(points[i - 1]._model, area)) {\n model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n }\n if (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\n model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n }\n }\n }\n }\n },\n draw: function () {\n var me = this;\n var chart = me.chart;\n var meta = me.getMeta();\n var points = meta.data || [];\n var area = chart.chartArea;\n var canvas = chart.canvas;\n var i = 0;\n var ilen = points.length;\n var clip;\n if (me._showLine) {\n clip = meta.dataset._model.clip;\n helpers$1.canvas.clipArea(chart.ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? canvas.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\n });\n meta.dataset.draw();\n helpers$1.canvas.unclipArea(chart.ctx);\n }\n\n // Draw the points\n for (; i < ilen; ++i) {\n points[i].draw(area);\n }\n },\n /**\r\n * @protected\r\n */\n setHoverStyle: function (point) {\n var model = point._model;\n var options = point._options;\n var getHoverColor = helpers$1.getHoverColor;\n point.$previousStyle = {\n backgroundColor: model.backgroundColor,\n borderColor: model.borderColor,\n borderWidth: model.borderWidth,\n radius: model.radius\n };\n model.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n model.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\n model.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\n model.radius = valueOrDefault$6(options.hoverRadius, options.radius);\n }\n });\n var resolve$3 = helpers$1.options.resolve;\n core_defaults._set('polarArea', {\n scale: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n gridLines: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n ticks: {\n beginAtZero: true\n }\n },\n // Boolean - Whether to animate the rotation of the chart\n animation: {\n animateRotate: true,\n animateScale: true\n },\n startAngle: -0.5 * Math.PI,\n legendCallback: function (chart) {\n var list = document.createElement('ul');\n var data = chart.data;\n var datasets = data.datasets;\n var labels = data.labels;\n var i, ilen, listItem, listItemSpan;\n list.setAttribute('class', chart.id + '-legend');\n if (datasets.length) {\n for (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n listItem = list.appendChild(document.createElement('li'));\n listItemSpan = listItem.appendChild(document.createElement('span'));\n listItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n if (labels[i]) {\n listItem.appendChild(document.createTextNode(labels[i]));\n }\n }\n }\n return list.outerHTML;\n },\n legend: {\n labels: {\n generateLabels: function (chart) {\n var data = chart.data;\n if (data.labels.length && data.datasets.length) {\n return data.labels.map(function (label, i) {\n var meta = chart.getDatasetMeta(0);\n var style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n hidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick: function (e, legendItem) {\n var index = legendItem.index;\n var chart = this.chart;\n var i, ilen, meta;\n for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n meta = chart.getDatasetMeta(i);\n meta.data[index].hidden = !meta.data[index].hidden;\n }\n chart.update();\n }\n },\n // Need to override these to give a nice default\n tooltips: {\n callbacks: {\n title: function () {\n return '';\n },\n label: function (item, data) {\n return data.labels[item.index] + ': ' + item.yLabel;\n }\n }\n }\n });\n var controller_polarArea = core_datasetController.extend({\n dataElementType: elements.Arc,\n linkScales: helpers$1.noop,\n /**\r\n * @private\r\n */\n _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'borderAlign', 'hoverBackgroundColor', 'hoverBorderColor', 'hoverBorderWidth'],\n /**\r\n * @private\r\n */\n _getIndexScaleId: function () {\n return this.chart.scale.id;\n },\n /**\r\n * @private\r\n */\n _getValueScaleId: function () {\n return this.chart.scale.id;\n },\n update: function (reset) {\n var me = this;\n var dataset = me.getDataset();\n var meta = me.getMeta();\n var start = me.chart.options.startAngle || 0;\n var starts = me._starts = [];\n var angles = me._angles = [];\n var arcs = meta.data;\n var i, ilen, angle;\n me._updateRadius();\n meta.count = me.countVisibleElements();\n for (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n starts[i] = start;\n angle = me._computeAngle(i);\n angles[i] = angle;\n start += angle;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n arcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n me.updateElement(arcs[i], i, reset);\n }\n },\n /**\r\n * @private\r\n */\n _updateRadius: function () {\n var me = this;\n var chart = me.chart;\n var chartArea = chart.chartArea;\n var opts = chart.options;\n var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n chart.outerRadius = Math.max(minSize / 2, 0);\n chart.innerRadius = Math.max(opts.cutoutPercentage ? chart.outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n me.outerRadius = chart.outerRadius - chart.radiusLength * me.index;\n me.innerRadius = me.outerRadius - chart.radiusLength;\n },\n updateElement: function (arc, index, reset) {\n var me = this;\n var chart = me.chart;\n var dataset = me.getDataset();\n var opts = chart.options;\n var animationOpts = opts.animation;\n var scale = chart.scale;\n var labels = chart.data.labels;\n var centerX = scale.xCenter;\n var centerY = scale.yCenter;\n\n // var negHalfPI = -0.5 * Math.PI;\n var datasetStartAngle = opts.startAngle;\n var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n var startAngle = me._starts[index];\n var endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n var options = arc._options || {};\n helpers$1.extend(arc, {\n // Utility\n _datasetIndex: me.index,\n _index: index,\n _scale: scale,\n // Desired view properties\n _model: {\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: options.borderWidth,\n borderAlign: options.borderAlign,\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius: reset ? resetRadius : distance,\n startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n label: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\n }\n });\n arc.pivot();\n },\n countVisibleElements: function () {\n var dataset = this.getDataset();\n var meta = this.getMeta();\n var count = 0;\n helpers$1.each(meta.data, function (element, index) {\n if (!isNaN(dataset.data[index]) && !element.hidden) {\n count++;\n }\n });\n return count;\n },\n /**\r\n * @protected\r\n */\n setHoverStyle: function (arc) {\n var model = arc._model;\n var options = arc._options;\n var getHoverColor = helpers$1.getHoverColor;\n var valueOrDefault = helpers$1.valueOrDefault;\n arc.$previousStyle = {\n backgroundColor: model.backgroundColor,\n borderColor: model.borderColor,\n borderWidth: model.borderWidth\n };\n model.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n model.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\n model.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n },\n /**\r\n * @private\r\n */\n _computeAngle: function (index) {\n var me = this;\n var count = this.getMeta().count;\n var dataset = me.getDataset();\n var meta = me.getMeta();\n if (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n return 0;\n }\n\n // Scriptable options\n var context = {\n chart: me.chart,\n dataIndex: index,\n dataset: dataset,\n datasetIndex: me.index\n };\n return resolve$3([me.chart.options.elements.arc.angle, 2 * Math.PI / count], context, index);\n }\n });\n core_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\n core_defaults._set('pie', {\n cutoutPercentage: 0\n });\n\n // Pie charts are Doughnut chart with different defaults\n var controller_pie = controller_doughnut;\n var valueOrDefault$7 = helpers$1.valueOrDefault;\n core_defaults._set('radar', {\n spanGaps: false,\n scale: {\n type: 'radialLinear'\n },\n elements: {\n line: {\n fill: 'start',\n tension: 0 // no bezier in radar\n }\n }\n });\n var controller_radar = core_datasetController.extend({\n datasetElementType: elements.Line,\n dataElementType: elements.Point,\n linkScales: helpers$1.noop,\n /**\r\n * @private\r\n */\n _datasetElementOptions: ['backgroundColor', 'borderWidth', 'borderColor', 'borderCapStyle', 'borderDash', 'borderDashOffset', 'borderJoinStyle', 'fill'],\n /**\r\n * @private\r\n */\n _dataElementOptions: {\n backgroundColor: 'pointBackgroundColor',\n borderColor: 'pointBorderColor',\n borderWidth: 'pointBorderWidth',\n hitRadius: 'pointHitRadius',\n hoverBackgroundColor: 'pointHoverBackgroundColor',\n hoverBorderColor: 'pointHoverBorderColor',\n hoverBorderWidth: 'pointHoverBorderWidth',\n hoverRadius: 'pointHoverRadius',\n pointStyle: 'pointStyle',\n radius: 'pointRadius',\n rotation: 'pointRotation'\n },\n /**\r\n * @private\r\n */\n _getIndexScaleId: function () {\n return this.chart.scale.id;\n },\n /**\r\n * @private\r\n */\n _getValueScaleId: function () {\n return this.chart.scale.id;\n },\n update: function (reset) {\n var me = this;\n var meta = me.getMeta();\n var line = meta.dataset;\n var points = meta.data || [];\n var scale = me.chart.scale;\n var config = me._config;\n var i, ilen;\n\n // Compatibility: If the properties are defined with only the old name, use those values\n if (config.tension !== undefined && config.lineTension === undefined) {\n config.lineTension = config.tension;\n }\n\n // Utility\n line._scale = scale;\n line._datasetIndex = me.index;\n // Data\n line._children = points;\n line._loop = true;\n // Model\n line._model = me._resolveDatasetElementOptions(line);\n line.pivot();\n\n // Update Points\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n me.updateElement(points[i], i, reset);\n }\n\n // Update bezier control points\n me.updateBezierControlPoints();\n\n // Now pivot the point for animation\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n points[i].pivot();\n }\n },\n updateElement: function (point, index, reset) {\n var me = this;\n var custom = point.custom || {};\n var dataset = me.getDataset();\n var scale = me.chart.scale;\n var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n var options = me._resolveDataElementOptions(point, index);\n var lineModel = me.getMeta().dataset._model;\n var x = reset ? scale.xCenter : pointPosition.x;\n var y = reset ? scale.yCenter : pointPosition.y;\n\n // Utility\n point._scale = scale;\n point._options = options;\n point._datasetIndex = me.index;\n point._index = index;\n\n // Desired view properties\n point._model = {\n x: x,\n // value not used in dataset scale, but we want a consistent API between scales\n y: y,\n skip: custom.skip || isNaN(x) || isNaN(y),\n // Appearance\n radius: options.radius,\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: options.borderWidth,\n tension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\n // Tooltip\n hitRadius: options.hitRadius\n };\n },\n /**\r\n * @private\r\n */\n _resolveDatasetElementOptions: function () {\n var me = this;\n var config = me._config;\n var options = me.chart.options;\n var values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\n values.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\n values.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\n return values;\n },\n updateBezierControlPoints: function () {\n var me = this;\n var meta = me.getMeta();\n var area = me.chart.chartArea;\n var points = meta.data || [];\n var i, ilen, model, controlPoints;\n\n // Only consider points that are drawn in case the spanGaps option is used\n if (meta.dataset._model.spanGaps) {\n points = points.filter(function (pt) {\n return !pt._model.skip;\n });\n }\n function capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n }\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n model = points[i]._model;\n controlPoints = helpers$1.splineCurve(helpers$1.previousItem(points, i, true)._model, model, helpers$1.nextItem(points, i, true)._model, model.tension);\n\n // Prevent the bezier going outside of the bounds of the graph\n model.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\n model.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\n model.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\n model.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\n }\n },\n setHoverStyle: function (point) {\n var model = point._model;\n var options = point._options;\n var getHoverColor = helpers$1.getHoverColor;\n point.$previousStyle = {\n backgroundColor: model.backgroundColor,\n borderColor: model.borderColor,\n borderWidth: model.borderWidth,\n radius: model.radius\n };\n model.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n model.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\n model.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\n model.radius = valueOrDefault$7(options.hoverRadius, options.radius);\n }\n });\n core_defaults._set('scatter', {\n hover: {\n mode: 'single'\n },\n scales: {\n xAxes: [{\n id: 'x-axis-1',\n // need an ID so datasets can reference the scale\n type: 'linear',\n // scatter should not use a category axis\n position: 'bottom'\n }],\n yAxes: [{\n id: 'y-axis-1',\n type: 'linear',\n position: 'left'\n }]\n },\n tooltips: {\n callbacks: {\n title: function () {\n return ''; // doesn't make sense for scatter since data are formatted as a point\n },\n label: function (item) {\n return '(' + item.xLabel + ', ' + item.yLabel + ')';\n }\n }\n }\n });\n core_defaults._set('global', {\n datasets: {\n scatter: {\n showLine: false\n }\n }\n });\n\n // Scatter charts use line controllers\n var controller_scatter = controller_line;\n\n // NOTE export a map in which the key represents the controller type, not\n // the class, and so must be CamelCase in order to be correctly retrieved\n // by the controller in core.controller.js (`controllers[meta.type]`).\n\n var controllers = {\n bar: controller_bar,\n bubble: controller_bubble,\n doughnut: controller_doughnut,\n horizontalBar: controller_horizontalBar,\n line: controller_line,\n polarArea: controller_polarArea,\n pie: controller_pie,\n radar: controller_radar,\n scatter: controller_scatter\n };\n\n /**\r\n * Helper function to get relative position for an event\r\n * @param {Event|IEvent} event - The event to get the position for\r\n * @param {Chart} chart - The chart\r\n * @returns {object} the event position\r\n */\n function getRelativePosition(e, chart) {\n if (e.native) {\n return {\n x: e.x,\n y: e.y\n };\n }\n return helpers$1.getRelativePosition(e, chart);\n }\n\n /**\r\n * Helper function to traverse all of the visible elements in the chart\r\n * @param {Chart} chart - the chart\r\n * @param {function} handler - the callback to execute for each visible item\r\n */\n function parseVisibleItems(chart, handler) {\n var metasets = chart._getSortedVisibleDatasetMetas();\n var metadata, i, j, ilen, jlen, element;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n metadata = metasets[i].data;\n for (j = 0, jlen = metadata.length; j < jlen; ++j) {\n element = metadata[j];\n if (!element._view.skip) {\n handler(element);\n }\n }\n }\n }\n\n /**\r\n * Helper function to get the items that intersect the event position\r\n * @param {ChartElement[]} items - elements to filter\r\n * @param {object} position - the point to be nearest to\r\n * @return {ChartElement[]} the nearest items\r\n */\n function getIntersectItems(chart, position) {\n var elements = [];\n parseVisibleItems(chart, function (element) {\n if (element.inRange(position.x, position.y)) {\n elements.push(element);\n }\n });\n return elements;\n }\n\n /**\r\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\r\n * @param {Chart} chart - the chart to look at elements from\r\n * @param {object} position - the point to be nearest to\r\n * @param {boolean} intersect - if true, only consider items that intersect the position\r\n * @param {function} distanceMetric - function to provide the distance between points\r\n * @return {ChartElement[]} the nearest items\r\n */\n function getNearestItems(chart, position, intersect, distanceMetric) {\n var minDistance = Number.POSITIVE_INFINITY;\n var nearestItems = [];\n parseVisibleItems(chart, function (element) {\n if (intersect && !element.inRange(position.x, position.y)) {\n return;\n }\n var center = element.getCenterPoint();\n var distance = distanceMetric(position, center);\n if (distance < minDistance) {\n nearestItems = [element];\n minDistance = distance;\n } else if (distance === minDistance) {\n // Can have multiple items at the same distance in which case we sort by size\n nearestItems.push(element);\n }\n });\n return nearestItems;\n }\n\n /**\r\n * Get a distance metric function for two points based on the\r\n * axis mode setting\r\n * @param {string} axis - the axis mode. x|y|xy\r\n */\n function getDistanceMetricForAxis(axis) {\n var useX = axis.indexOf('x') !== -1;\n var useY = axis.indexOf('y') !== -1;\n return function (pt1, pt2) {\n var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n }\n function indexMode(chart, e, options) {\n var position = getRelativePosition(e, chart);\n // Default axis for index mode is 'x' to match old behaviour\n options.axis = options.axis || 'x';\n var distanceMetric = getDistanceMetricForAxis(options.axis);\n var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n var elements = [];\n if (!items.length) {\n return [];\n }\n chart._getSortedVisibleDatasetMetas().forEach(function (meta) {\n var element = meta.data[items[0]._index];\n\n // don't count items that are skipped (null data)\n if (element && !element._view.skip) {\n elements.push(element);\n }\n });\n return elements;\n }\n\n /**\r\n * @interface IInteractionOptions\r\n */\n /**\r\n * If true, only consider items that intersect the point\r\n * @name IInterfaceOptions#boolean\r\n * @type Boolean\r\n */\n\n /**\r\n * Contains interaction related functions\r\n * @namespace Chart.Interaction\r\n */\n var core_interaction = {\n // Helper function for different modes\n modes: {\n single: function (chart, e) {\n var position = getRelativePosition(e, chart);\n var elements = [];\n parseVisibleItems(chart, function (element) {\n if (element.inRange(position.x, position.y)) {\n elements.push(element);\n return elements;\n }\n });\n return elements.slice(0, 1);\n },\n /**\r\n * @function Chart.Interaction.modes.label\r\n * @deprecated since version 2.4.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n label: indexMode,\n /**\r\n * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\r\n * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\r\n * @function Chart.Interaction.modes.index\r\n * @since v2.4.0\r\n * @param {Chart} chart - the chart we are returning items from\r\n * @param {Event} e - the event we are find things at\r\n * @param {IInteractionOptions} options - options to use during interaction\r\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n */\n index: indexMode,\n /**\r\n * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\r\n * If the options.intersect is false, we find the nearest item and return the items in that dataset\r\n * @function Chart.Interaction.modes.dataset\r\n * @param {Chart} chart - the chart we are returning items from\r\n * @param {Event} e - the event we are find things at\r\n * @param {IInteractionOptions} options - options to use during interaction\r\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n */\n dataset: function (chart, e, options) {\n var position = getRelativePosition(e, chart);\n options.axis = options.axis || 'xy';\n var distanceMetric = getDistanceMetricForAxis(options.axis);\n var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n if (items.length > 0) {\n items = chart.getDatasetMeta(items[0]._datasetIndex).data;\n }\n return items;\n },\n /**\r\n * @function Chart.Interaction.modes.x-axis\r\n * @deprecated since version 2.4.0. Use index mode and intersect == true\r\n * @todo remove at version 3\r\n * @private\r\n */\n 'x-axis': function (chart, e) {\n return indexMode(chart, e, {\n intersect: false\n });\n },\n /**\r\n * Point mode returns all elements that hit test based on the event position\r\n * of the event\r\n * @function Chart.Interaction.modes.intersect\r\n * @param {Chart} chart - the chart we are returning items from\r\n * @param {Event} e - the event we are find things at\r\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n */\n point: function (chart, e) {\n var position = getRelativePosition(e, chart);\n return getIntersectItems(chart, position);\n },\n /**\r\n * nearest mode returns the element closest to the point\r\n * @function Chart.Interaction.modes.intersect\r\n * @param {Chart} chart - the chart we are returning items from\r\n * @param {Event} e - the event we are find things at\r\n * @param {IInteractionOptions} options - options to use\r\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n */\n nearest: function (chart, e, options) {\n var position = getRelativePosition(e, chart);\n options.axis = options.axis || 'xy';\n var distanceMetric = getDistanceMetricForAxis(options.axis);\n return getNearestItems(chart, position, options.intersect, distanceMetric);\n },\n /**\r\n * x mode returns the elements that hit-test at the current x coordinate\r\n * @function Chart.Interaction.modes.x\r\n * @param {Chart} chart - the chart we are returning items from\r\n * @param {Event} e - the event we are find things at\r\n * @param {IInteractionOptions} options - options to use\r\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n */\n x: function (chart, e, options) {\n var position = getRelativePosition(e, chart);\n var items = [];\n var intersectsItem = false;\n parseVisibleItems(chart, function (element) {\n if (element.inXRange(position.x)) {\n items.push(element);\n }\n if (element.inRange(position.x, position.y)) {\n intersectsItem = true;\n }\n });\n\n // If we want to trigger on an intersect and we don't have any items\n // that intersect the position, return nothing\n if (options.intersect && !intersectsItem) {\n items = [];\n }\n return items;\n },\n /**\r\n * y mode returns the elements that hit-test at the current y coordinate\r\n * @function Chart.Interaction.modes.y\r\n * @param {Chart} chart - the chart we are returning items from\r\n * @param {Event} e - the event we are find things at\r\n * @param {IInteractionOptions} options - options to use\r\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n */\n y: function (chart, e, options) {\n var position = getRelativePosition(e, chart);\n var items = [];\n var intersectsItem = false;\n parseVisibleItems(chart, function (element) {\n if (element.inYRange(position.y)) {\n items.push(element);\n }\n if (element.inRange(position.x, position.y)) {\n intersectsItem = true;\n }\n });\n\n // If we want to trigger on an intersect and we don't have any items\n // that intersect the position, return nothing\n if (options.intersect && !intersectsItem) {\n items = [];\n }\n return items;\n }\n }\n };\n var extend = helpers$1.extend;\n function filterByPosition(array, position) {\n return helpers$1.where(array, function (v) {\n return v.pos === position;\n });\n }\n function sortByWeight(array, reverse) {\n return array.sort(function (a, b) {\n var v0 = reverse ? b : a;\n var v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n }\n function wrapBoxes(boxes) {\n var layoutBoxes = [];\n var i, ilen, box;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n layoutBoxes.push({\n index: i,\n box: box,\n pos: box.position,\n horizontal: box.isHorizontal(),\n weight: box.weight\n });\n }\n return layoutBoxes;\n }\n function setLayoutDims(layouts, params) {\n var i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n // store width used instead of chartArea.w in fitBoxes\n layout.width = layout.horizontal ? layout.box.fullWidth && params.availableWidth : params.vBoxMaxWidth;\n // store height used instead of chartArea.h in fitBoxes\n layout.height = layout.horizontal && params.hBoxMaxHeight;\n }\n }\n function buildLayoutBoxes(boxes) {\n var layoutBoxes = wrapBoxes(boxes);\n var left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n var right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n var top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n var bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n return {\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(bottom),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right),\n horizontal: top.concat(bottom)\n };\n }\n function getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n }\n function updateDims(chartArea, params, layout) {\n var box = layout.box;\n var maxPadding = chartArea.maxPadding;\n var newWidth, newHeight;\n if (layout.size) {\n // this layout was already counted for, lets first reduce old size\n chartArea[layout.pos] -= layout.size;\n }\n layout.size = layout.horizontal ? box.height : box.width;\n chartArea[layout.pos] += layout.size;\n if (box.getPadding) {\n var boxPadding = box.getPadding();\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n }\n newWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\n newHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\n if (newWidth !== chartArea.w || newHeight !== chartArea.h) {\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n\n // return true if chart area changed in layout's direction\n var sizes = layout.horizontal ? [newWidth, chartArea.w] : [newHeight, chartArea.h];\n return sizes[0] !== sizes[1] && (!isNaN(sizes[0]) || !isNaN(sizes[1]));\n }\n }\n function handleMaxPadding(chartArea) {\n var maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n var change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n }\n function getMargins(horizontal, chartArea) {\n var maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n var margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach(function (pos) {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal ? marginForPositions(['left', 'right']) : marginForPositions(['top', 'bottom']);\n }\n function fitBoxes(boxes, chartArea, params) {\n var refitBoxes = [];\n var i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n if (updateDims(chartArea, params, layout)) {\n changed = true;\n if (refitBoxes.length) {\n // Dimensions changed and there were non full width boxes before this\n // -> we have to refit those\n refit = true;\n }\n }\n if (!box.fullWidth) {\n // fullWidth boxes don't need to be re-fitted in any case\n refitBoxes.push(layout);\n }\n }\n return refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\n }\n function placeBoxes(boxes, chartArea, params) {\n var userPadding = params.padding;\n var x = chartArea.x;\n var y = chartArea.y;\n var i, ilen, layout, box;\n for (i = 0, ilen = boxes.length; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n if (layout.horizontal) {\n box.left = box.fullWidth ? userPadding.left : chartArea.left;\n box.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\n box.top = y;\n box.bottom = y + box.height;\n box.width = box.right - box.left;\n y = box.bottom;\n } else {\n box.left = x;\n box.right = x + box.width;\n box.top = chartArea.top;\n box.bottom = chartArea.top + chartArea.h;\n box.height = box.bottom - box.top;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n }\n core_defaults._set('global', {\n layout: {\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n }\n });\n\n /**\r\n * @interface ILayoutItem\r\n * @prop {string} position - The position of the item in the chart layout. Possible values are\r\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\r\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\r\n * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\r\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\r\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\r\n * @prop {function} getPadding - Returns an object with padding on the edges\r\n * @prop {number} width - Width of item. Must be valid after update()\r\n * @prop {number} height - Height of item. Must be valid after update()\r\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\r\n */\n\n // The layout service is very self explanatory. It's responsible for the layout within a chart.\n // Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n // It is this service's responsibility of carrying out that layout.\n var core_layouts = {\n defaults: {},\n /**\r\n * Register a box to a chart.\r\n * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\r\n * @param {Chart} chart - the chart to use\r\n * @param {ILayoutItem} item - the item to add to be layed out\r\n */\n addBox: function (chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n\n // initialize item with default values\n item.fullWidth = item.fullWidth || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function () {\n return [{\n z: 0,\n draw: function () {\n item.draw.apply(item, arguments);\n }\n }];\n };\n chart.boxes.push(item);\n },\n /**\r\n * Remove a layoutItem from a chart\r\n * @param {Chart} chart - the chart to remove the box from\r\n * @param {ILayoutItem} layoutItem - the item to remove from the layout\r\n */\n removeBox: function (chart, layoutItem) {\n var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n /**\r\n * Sets (or updates) options on the given `item`.\r\n * @param {Chart} chart - the chart in which the item lives (or will be added to)\r\n * @param {ILayoutItem} item - the item to configure with the given options\r\n * @param {object} options - the new item options.\r\n */\n configure: function (chart, item, options) {\n var props = ['fullWidth', 'position', 'weight'];\n var ilen = props.length;\n var i = 0;\n var prop;\n for (; i < ilen; ++i) {\n prop = props[i];\n if (options.hasOwnProperty(prop)) {\n item[prop] = options[prop];\n }\n }\n },\n /**\r\n * Fits boxes of the given chart into the given size by having each box measure itself\r\n * then running a fitting algorithm\r\n * @param {Chart} chart - the chart\r\n * @param {number} width - the width to fit into\r\n * @param {number} height - the height to fit into\r\n */\n update: function (chart, width, height) {\n if (!chart) {\n return;\n }\n var layoutOptions = chart.options.layout || {};\n var padding = helpers$1.options.toPadding(layoutOptions.padding);\n var availableWidth = width - padding.width;\n var availableHeight = height - padding.height;\n var boxes = buildLayoutBoxes(chart.boxes);\n var verticalBoxes = boxes.vertical;\n var horizontalBoxes = boxes.horizontal;\n\n // Essentially we now have any number of boxes on each of the 4 sides.\n // Our canvas looks like the following.\n // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n // B1 is the bottom axis\n // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n // an error will be thrown.\n //\n // |----------------------------------------------------|\n // | T1 (Full Width) |\n // |----------------------------------------------------|\n // | | | T2 | |\n // | |----|-------------------------------------|----|\n // | | | C1 | | C2 | |\n // | | |----| |----| |\n // | | | | |\n // | L1 | L2 | ChartArea (C0) | R1 |\n // | | | | |\n // | | |----| |----| |\n // | | | C3 | | C4 | |\n // | |----|-------------------------------------|----|\n // | | | B1 | |\n // |----------------------------------------------------|\n // | B2 (Full Width) |\n // |----------------------------------------------------|\n //\n\n var params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding: padding,\n availableWidth: availableWidth,\n vBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\n hBoxMaxHeight: availableHeight / 2\n });\n var chartArea = extend({\n maxPadding: extend({}, padding),\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n // First fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params);\n\n // Then fit horizontal boxes\n if (fitBoxes(horizontalBoxes, chartArea, params)) {\n // if the area changed, re-fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params);\n }\n handleMaxPadding(chartArea);\n\n // Finally place the boxes to correct coordinates\n placeBoxes(boxes.leftAndTop, chartArea, params);\n\n // Move to opposite side of chart\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h\n };\n\n // Finally update boxes in chartArea (radial scale for example)\n helpers$1.each(boxes.chartArea, function (layout) {\n var box = layout.box;\n extend(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h);\n });\n }\n };\n\n /**\r\n * Platform fallback implementation (minimal).\r\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\r\n */\n\n var platform_basic = {\n acquireContext: function (item) {\n if (item && item.canvas) {\n // Support for any object associated to a canvas (including a context2d)\n item = item.canvas;\n }\n return item && item.getContext('2d') || null;\n }\n };\n var platform_dom = \"/*\\r\\n * DOM element rendering detection\\r\\n * https://davidwalsh.name/detect-node-insertion\\r\\n */\\r\\n@keyframes chartjs-render-animation {\\r\\n\\tfrom { opacity: 0.99; }\\r\\n\\tto { opacity: 1; }\\r\\n}\\r\\n\\r\\n.chartjs-render-monitor {\\r\\n\\tanimation: chartjs-render-animation 0.001s;\\r\\n}\\r\\n\\r\\n/*\\r\\n * DOM element resizing detection\\r\\n * https://github.com/marcj/css-element-queries\\r\\n */\\r\\n.chartjs-size-monitor,\\r\\n.chartjs-size-monitor-expand,\\r\\n.chartjs-size-monitor-shrink {\\r\\n\\tposition: absolute;\\r\\n\\tdirection: ltr;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tright: 0;\\r\\n\\tbottom: 0;\\r\\n\\toverflow: hidden;\\r\\n\\tpointer-events: none;\\r\\n\\tvisibility: hidden;\\r\\n\\tz-index: -1;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-expand > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 1000000px;\\r\\n\\theight: 1000000px;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-shrink > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 200%;\\r\\n\\theight: 200%;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\";\n var platform_dom$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n 'default': platform_dom\n });\n var stylesheet = getCjsExportFromNamespace(platform_dom$1);\n var EXPANDO_KEY = '$chartjs';\n var CSS_PREFIX = 'chartjs-';\n var CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\n var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\n var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\n var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n\n /**\r\n * DOM event types -> Chart.js event types.\r\n * Note: only events with different types are mapped.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\r\n */\n var EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n };\n\n /**\r\n * The \"used\" size is the final value of a dimension property after all calculations have\r\n * been performed. This method uses the computed style of `element` but returns undefined\r\n * if the computed style is not expressed in pixels. That can happen in some cases where\r\n * `element` has a size relative to its parent and this last one is not yet displayed,\r\n * for example because of `display: none` on a parent node.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\r\n * @returns {number} Size in pixels or undefined if unknown.\r\n */\n function readUsedSize(element, property) {\n var value = helpers$1.getStyle(element, property);\n var matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? Number(matches[1]) : undefined;\n }\n\n /**\r\n * Initializes the canvas style and render size without modifying the canvas display size,\r\n * since responsiveness is handled by the controller.resize() method. The config is used\r\n * to determine the aspect ratio to apply in case no explicit height has been specified.\r\n */\n function initCanvas(canvas, config) {\n var style = canvas.style;\n\n // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n // returns null or '' if no explicit value has been set to the canvas attribute.\n var renderHeight = canvas.getAttribute('height');\n var renderWidth = canvas.getAttribute('width');\n\n // Chart.js modifies some canvas values that we want to restore on destroy\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n\n // Force canvas to display as block to avoid extra space caused by inline\n // elements, which would interfere with the responsive resize process.\n // https://github.com/chartjs/Chart.js/issues/2538\n style.display = style.display || 'block';\n if (renderWidth === null || renderWidth === '') {\n var displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (renderHeight === null || renderHeight === '') {\n if (canvas.style.height === '') {\n // If no explicit render height and style height, let's apply the aspect ratio,\n // which one can be specified by the user but also by charts as default option\n // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n canvas.height = canvas.width / (config.options.aspectRatio || 2);\n } else {\n var displayHeight = readUsedSize(canvas, 'height');\n if (displayWidth !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n }\n\n /**\r\n * Detects support for options object argument in addEventListener.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\r\n * @private\r\n */\n var supportsEventListenerOptions = function () {\n var supports = false;\n try {\n var options = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line getter-return\n get: function () {\n supports = true;\n }\n });\n window.addEventListener('e', null, options);\n } catch (e) {\n // continue regardless of error\n }\n return supports;\n }();\n\n // Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n // https://github.com/chartjs/Chart.js/issues/4287\n var eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n } : false;\n function addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n function removeListener(node, type, listener) {\n node.removeEventListener(type, listener, eventListenerOptions);\n }\n function createEvent(type, chart, x, y, nativeEvent) {\n return {\n type: type,\n chart: chart,\n native: nativeEvent || null,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n }\n function fromNativeEvent(event, chart) {\n var type = EVENT_TYPES[event.type] || event.type;\n var pos = helpers$1.getRelativePosition(event, chart);\n return createEvent(type, chart, pos.x, pos.y, event);\n }\n function throttled(fn, thisArg) {\n var ticking = false;\n var args = [];\n return function () {\n args = Array.prototype.slice.call(arguments);\n thisArg = thisArg || this;\n if (!ticking) {\n ticking = true;\n helpers$1.requestAnimFrame.call(window, function () {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n }\n function createDiv(cls) {\n var el = document.createElement('div');\n el.className = cls || '';\n return el;\n }\n\n // Implementation based on https://github.com/marcj/css-element-queries\n function createResizer(handler) {\n var maxSize = 1000000;\n\n // NOTE(SB) Don't use innerHTML because it could be considered unsafe.\n // https://github.com/chartjs/Chart.js/issues/5902\n var resizer = createDiv(CSS_SIZE_MONITOR);\n var expand = createDiv(CSS_SIZE_MONITOR + '-expand');\n var shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\n expand.appendChild(createDiv());\n shrink.appendChild(createDiv());\n resizer.appendChild(expand);\n resizer.appendChild(shrink);\n resizer._reset = function () {\n expand.scrollLeft = maxSize;\n expand.scrollTop = maxSize;\n shrink.scrollLeft = maxSize;\n shrink.scrollTop = maxSize;\n };\n var onScroll = function () {\n resizer._reset();\n handler();\n };\n addListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n addListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n return resizer;\n }\n\n // https://davidwalsh.name/detect-node-insertion\n function watchForRender(node, handler) {\n var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n var proxy = expando.renderProxy = function (e) {\n if (e.animationName === CSS_RENDER_ANIMATION) {\n handler();\n }\n };\n helpers$1.each(ANIMATION_START_EVENTS, function (type) {\n addListener(node, type, proxy);\n });\n\n // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n // is removed then added back immediately (same animation frame?). Accessing the\n // `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n // https://github.com/chartjs/Chart.js/issues/4737\n expando.reflow = !!node.offsetParent;\n node.classList.add(CSS_RENDER_MONITOR);\n }\n function unwatchForRender(node) {\n var expando = node[EXPANDO_KEY] || {};\n var proxy = expando.renderProxy;\n if (proxy) {\n helpers$1.each(ANIMATION_START_EVENTS, function (type) {\n removeListener(node, type, proxy);\n });\n delete expando.renderProxy;\n }\n node.classList.remove(CSS_RENDER_MONITOR);\n }\n function addResizeListener(node, listener, chart) {\n var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n // Let's keep track of this added resizer and thus avoid DOM query when removing it.\n var resizer = expando.resizer = createResizer(throttled(function () {\n if (expando.resizer) {\n var container = chart.options.maintainAspectRatio && node.parentNode;\n var w = container ? container.clientWidth : 0;\n listener(createEvent('resize', chart));\n if (container && container.clientWidth < w && chart.canvas) {\n // If the container size shrank during chart resize, let's assume\n // scrollbar appeared. So we resize again with the scrollbar visible -\n // effectively making chart smaller and the scrollbar hidden again.\n // Because we are inside `throttled`, and currently `ticking`, scroll\n // events are ignored during this whole 2 resize process.\n // If we assumed wrong and something else happened, we are resizing\n // twice in a frame (potential performance issue)\n listener(createEvent('resize', chart));\n }\n }\n }));\n\n // The resizer needs to be attached to the node parent, so we first need to be\n // sure that `node` is attached to the DOM before injecting the resizer element.\n watchForRender(node, function () {\n if (expando.resizer) {\n var container = node.parentNode;\n if (container && container !== resizer.parentNode) {\n container.insertBefore(resizer, container.firstChild);\n }\n\n // The container size might have changed, let's reset the resizer state.\n resizer._reset();\n }\n });\n }\n function removeResizeListener(node) {\n var expando = node[EXPANDO_KEY] || {};\n var resizer = expando.resizer;\n delete expando.resizer;\n unwatchForRender(node);\n if (resizer && resizer.parentNode) {\n resizer.parentNode.removeChild(resizer);\n }\n }\n\n /**\r\n * Injects CSS styles inline if the styles are not already present.\r\n * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the