!function(n){function t(a){if(e[a])return e[a].exports;var c=e[a]={i:a,l:!1,exports:{}};return n[a].call(c.exports,c,c.exports,t),c.l=!0,c.exports}var e={};t.m=n,t.c=e,t.i=function(n){return n},t.d=function(n,e,a){t.o(n,e)||Object.defineProperty(n,e,{configurable:!1,enumerable:!0,get:a})},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},t.p="",t(t.s=8)}([function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\nvar multiplier = 1;\n\nvar constants = {\n MIN: 60 * multiplier,\n AVERAGE: 140 * multiplier,\n MAX: 194 * multiplier\n};\n\nexports.default = constants;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9jb25zdGFudHMuanM/ODg5MCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtdWx0aXBsaWVyID0gMVxuXG5jb25zdCBjb25zdGFudHMgPSB7XG4gIE1JTjogNjAgKiBtdWx0aXBsaWVyLFxuICBBVkVSQUdFOiAxNDAgKiBtdWx0aXBsaWVyLFxuICBNQVg6IDE5NCAqIG11bHRpcGxpZXJcbn1cblxuZXhwb3J0IGRlZmF1bHQgY29uc3RhbnRzXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gY29uc3RhbnRzLmpzIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFLQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///0\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// We want:\n// DONE: position\n// DONE: status\n// DONE: GAP\n// DONE: INT\n// DONE: recent lap time\n// DONE: lap count\n// : is better lap\n// : is better GAP\n// : is better INT\n\nvar formatGap = function formatGap(x) {\n return (x / 1000).toFixed(1);\n};\n\nvar calculateMetrics = function calculateMetrics(_ref) {\n var car = _ref.car,\n raceElapsed = _ref.raceElapsed,\n cars = _ref.cars,\n index = _ref.index;\n var elapsed = car.elapsed,\n isNewLap = car.isNewLap,\n laps = car.laps,\n measures = car.measures,\n number = car.number,\n gap = car.gap,\n status = car.status,\n int = car.int;\n\n var leader = cars[0];\n\n // Set defaults.\n var previousLap = null;\n var newElapsed = elapsed;\n var newGap = gap;\n var newStatus = status;\n var newInt = int;\n\n // If the leader started a new lap,\n // set this car's status to yellow.\n if (leader.isNewLap) {\n newStatus = 'yellow';\n }\n\n // If we started a new lap,\n if (isNewLap) {\n // do a number of things.\n\n // Set our status to white.\n newStatus = 'white';\n\n // Calculate the previous lap time.\n // To do this, do race elapsed - previous elapsed.\n previousLap = raceElapsed - elapsed;\n\n // And set car's elapsed to race elapsed.\n newElapsed = raceElapsed;\n\n // Every time you start a new lap,\n // calculate GAP and INT.\n // GAP = distance to the leader.\n // INT = distance to the previous car.\n // If we're the leader, ignore.\n if (number === leader.number) {\n newGap = 'LAP';\n newInt = '--';\n } else {\n // If we're not the leader,\n // calculate the lap count differences to leader and previous car.\n var leaderLapDelta = Math.floor(_.last(leader.measures).pct) - Math.floor(_.last(measures).pct);\n var previousCarLapDelta = Math.floor(_.last(cars[index - 1].measures).pct) - Math.floor(_.last(measures).pct);\n\n // If we're on the same lap as leader, show time gap.\n if (leaderLapDelta === 0) {\n newGap = formatGap(newElapsed - leader.elapsed);\n } else {\n // If we're NOT on the same lap, just show the lap count delta.\n newGap = leaderLapDelta + 'L';\n }\n\n // If we're on the same lap as previous, show time gap.\n if (previousCarLapDelta === 0) {\n newInt = formatGap(newElapsed - cars[index - 1].elapsed);\n } else {\n // If we're NOT on the same lap, just show the lap count delta.\n newInt = previousCarLapDelta + 'L';\n }\n }\n }\n\n return _extends({}, car, {\n elapsed: newElapsed,\n laps: [].concat(_toConsumableArray(laps), [previousLap]).filter(function (d) {\n return d;\n }),\n gap: newGap,\n isNewLap: isNewLap,\n status: newStatus,\n int: newInt,\n position: index + 1\n });\n};\n\nexports.default = calculateMetrics;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9jYWxjdWxhdGVNZXRyaWNzLmpzPzkyOGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gV2Ugd2FudDpcbi8vIERPTkU6IHBvc2l0aW9uXG4vLyBET05FOiBzdGF0dXNcbi8vIERPTkU6IEdBUFxuLy8gRE9ORTogSU5UXG4vLyBET05FOiByZWNlbnQgbGFwIHRpbWVcbi8vIERPTkU6IGxhcCBjb3VudFxuLy8gICAgIDogaXMgYmV0dGVyIGxhcFxuLy8gICAgIDogaXMgYmV0dGVyIEdBUFxuLy8gICAgIDogaXMgYmV0dGVyIElOVFxuXG5jb25zdCBmb3JtYXRHYXAgPSB4ID0+ICh4IC8gMTAwMCkudG9GaXhlZCgxKVxuXG5jb25zdCBjYWxjdWxhdGVNZXRyaWNzID0gKHsgY2FyLCByYWNlRWxhcHNlZCwgY2FycywgaW5kZXggfSkgPT4ge1xuICBjb25zdCB7IGVsYXBzZWQsIGlzTmV3TGFwLCBsYXBzLCBtZWFzdXJlcywgbnVtYmVyLCBnYXAsIHN0YXR1cywgaW50IH0gPSBjYXJcbiAgY29uc3QgbGVhZGVyID0gY2Fyc1swXVxuXG4gIC8vIFNldCBkZWZhdWx0cy5cbiAgbGV0IHByZXZpb3VzTGFwID0gbnVsbFxuICBsZXQgbmV3RWxhcHNlZCA9IGVsYXBzZWRcbiAgbGV0IG5ld0dhcCA9IGdhcFxuICBsZXQgbmV3U3RhdHVzID0gc3RhdHVzXG4gIGxldCBuZXdJbnQgPSBpbnRcblxuICAvLyBJZiB0aGUgbGVhZGVyIHN0YXJ0ZWQgYSBuZXcgbGFwLFxuICAvLyBzZXQgdGhpcyBjYXIncyBzdGF0dXMgdG8geWVsbG93LlxuICBpZiAobGVhZGVyLmlzTmV3TGFwKSB7XG4gICAgbmV3U3RhdHVzID0gJ3llbGxvdydcbiAgfVxuXG4gIC8vIElmIHdlIHN0YXJ0ZWQgYSBuZXcgbGFwLFxuICBpZiAoaXNOZXdMYXApIHtcbiAgICAvLyBkbyBhIG51bWJlciBvZiB0aGluZ3MuXG5cbiAgICAvLyBTZXQgb3VyIHN0YXR1cyB0byB3aGl0ZS5cbiAgICBuZXdTdGF0dXMgPSAnd2hpdGUnXG5cbiAgICAvLyBDYWxjdWxhdGUgdGhlIHByZXZpb3VzIGxhcCB0aW1lLlxuICAgIC8vIFRvIGRvIHRoaXMsIGRvIHJhY2UgZWxhcHNlZCAtIHByZXZpb3VzIGVsYXBzZWQuXG4gICAgcHJldmlvdXNMYXAgPSByYWNlRWxhcHNlZCAtIGVsYXBzZWRcblxuICAgIC8vIEFuZCBzZXQgY2FyJ3MgZWxhcHNlZCB0byByYWNlIGVsYXBzZWQuXG4gICAgbmV3RWxhcHNlZCA9IHJhY2VFbGFwc2VkXG5cbiAgICAvLyBFdmVyeSB0aW1lIHlvdSBzdGFydCBhIG5ldyBsYXAsXG4gICAgLy8gY2FsY3VsYXRlIEdBUCBhbmQgSU5ULlxuICAgIC8vIEdBUCA9IGRpc3RhbmNlIHRvIHRoZSBsZWFkZXIuXG4gICAgLy8gSU5UID0gZGlzdGFuY2UgdG8gdGhlIHByZXZpb3VzIGNhci5cbiAgICAvLyBJZiB3ZSdyZSB0aGUgbGVhZGVyLCBpZ25vcmUuXG4gICAgaWYgKG51bWJlciA9PT0gbGVhZGVyLm51bWJlcikge1xuICAgICAgbmV3R2FwID0gJ0xBUCdcbiAgICAgIG5ld0ludCA9ICctLSdcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgd2UncmUgbm90IHRoZSBsZWFkZXIsXG4gICAgICAvLyBjYWxjdWxhdGUgdGhlIGxhcCBjb3VudCBkaWZmZXJlbmNlcyB0byBsZWFkZXIgYW5kIHByZXZpb3VzIGNhci5cbiAgICAgIGNvbnN0IGxlYWRlckxhcERlbHRhID1cbiAgICAgICAgTWF0aC5mbG9vcihfLmxhc3QobGVhZGVyLm1lYXN1cmVzKS5wY3QpIC1cbiAgICAgICAgTWF0aC5mbG9vcihfLmxhc3QobWVhc3VyZXMpLnBjdClcbiAgICAgIGNvbnN0IHByZXZpb3VzQ2FyTGFwRGVsdGEgPVxuICAgICAgICBNYXRoLmZsb29yKF8ubGFzdChjYXJzW2luZGV4IC0gMV0ubWVhc3VyZXMpLnBjdCkgLVxuICAgICAgICBNYXRoLmZsb29yKF8ubGFzdChtZWFzdXJlcykucGN0KVxuXG4gICAgICAvLyBJZiB3ZSdyZSBvbiB0aGUgc2FtZSBsYXAgYXMgbGVhZGVyLCBzaG93IHRpbWUgZ2FwLlxuICAgICAgaWYgKGxlYWRlckxhcERlbHRhID09PSAwKSB7XG4gICAgICAgIG5ld0dhcCA9IGZvcm1hdEdhcChuZXdFbGFwc2VkIC0gbGVhZGVyLmVsYXBzZWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiB3ZSdyZSBOT1Qgb24gdGhlIHNhbWUgbGFwLCBqdXN0IHNob3cgdGhlIGxhcCBjb3VudCBkZWx0YS5cbiAgICAgICAgbmV3R2FwID0gYCR7bGVhZGVyTGFwRGVsdGF9TGBcbiAgICAgIH1cblxuICAgICAgLy8gSWYgd2UncmUgb24gdGhlIHNhbWUgbGFwIGFzIHByZXZpb3VzLCBzaG93IHRpbWUgZ2FwLlxuICAgICAgaWYgKHByZXZpb3VzQ2FyTGFwRGVsdGEgPT09IDApIHtcbiAgICAgICAgbmV3SW50ID0gZm9ybWF0R2FwKG5ld0VsYXBzZWQgLSBjYXJzW2luZGV4IC0gMV0uZWxhcHNlZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIHdlJ3JlIE5PVCBvbiB0aGUgc2FtZSBsYXAsIGp1c3Qgc2hvdyB0aGUgbGFwIGNvdW50IGRlbHRhLlxuICAgICAgICBuZXdJbnQgPSBgJHtwcmV2aW91c0NhckxhcERlbHRhfUxgXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5jYXIsXG4gICAgZWxhcHNlZDogbmV3RWxhcHNlZCxcbiAgICBsYXBzOiBbLi4ubGFwcywgcHJldmlvdXNMYXBdLmZpbHRlcihkID0+IGQpLFxuICAgIGdhcDogbmV3R2FwLFxuICAgIGlzTmV3TGFwLFxuICAgIHN0YXR1czogbmV3U3RhdHVzLFxuICAgIGludDogbmV3SW50LFxuICAgIHBvc2l0aW9uOiBpbmRleCArIDFcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjYWxjdWxhdGVNZXRyaWNzXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gY2FsY3VsYXRlTWV0cmljcy5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFVQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _constants = __webpack_require__(0);\n\nvar _constants2 = _interopRequireDefault(_constants);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar setup = function setup(container) {\n var margins = { top: 45, right: 5, bottom: 20, left: 40 };\n var width = container.node().offsetWidth - margins.right - margins.left;\n var height = width / 3.5;\n\n var svg = container.append('svg').attr('width', width + margins.right + margins.left).attr('height', height + margins.top + margins.bottom);\n\n var g = svg.append('g').attr('transform', 'translate(' + margins.left + ', ' + margins.top + ')');\n\n var x = d3.scaleLinear().range([0, width]).domain([0, 1]);\n\n var y = d3.scaleLinear().range([height, 0]).domain([0, _constants2.default.MAX]).nice();\n\n var line = d3.line().curve(d3.curveBasis).x(function (d) {\n return x(d.pct % 1);\n }).y(function (d) {\n return y(d.speed);\n });\n\n var xAxis = g.append('g').attr('class', 'axis axis--x').attr('transform', 'translate(0, ' + height + ')').call(d3.axisBottom(x).tickSize(0).ticks([]));\n\n xAxis.append('text').text('Start').attr('x', x(0)).attr('text-anchor', 'start').attr('dy', 14);\n\n xAxis.append('text').text('Finish').attr('x', x(1)).attr('text-anchor', 'end').attr('dy', 14);\n\n var yAxis = g.append('g').attr('class', 'axis axis--y').call(d3.axisLeft(y).tickSize(0).ticks(5));\n\n yAxis.append('text').text('(MPH)').attr('dx', -3).attr('dy', 6 - 18).attr('text-anchor', 'end');\n\n yAxis.append('text').text('Speed').attr('dx', -3).attr('dy', 6 - 18 - 18).attr('text-anchor', 'end');\n\n return {\n g: g,\n x: x,\n y: y,\n line: line\n };\n};\n\nvar clean = function clean(measures) {\n var lastTwo = measures.slice(-2).map(function (d) {\n return d.pct % 1;\n });\n\n return lastTwo[1] < lastTwo[0] ? measures.slice(0, measures.length - 1) : measures;\n};\n// _.last(measures).pct % 1 <\n// measures.length === 2 ? measures.slice(-1) : measures\n\nvar getTransform = function getTransform(_ref) {\n var d = _ref.d,\n x = _ref.x,\n y = _ref.y;\n\n var last = _.last(d.measures);\n return 'translate(' + x(last.pct % 1) + ', ' + y(last.speed) + ')';\n};\n\nvar update = function update(_ref2) {\n var g = _ref2.g,\n x = _ref2.x,\n y = _ref2.y,\n line = _ref2.line,\n cars = _ref2.cars;\n\n // join\n var paths = g.selectAll('path.car').data(cars, function (d) {\n return d.number;\n });\n\n // update\n paths.attr('d', function (d) {\n return line(clean(d.measures));\n });\n\n // enter\n paths.enter().append('path').attr('class', 'car').attr('d', function (d) {\n return line(clean(d.measures));\n });\n\n // remove\n paths.exit().remove();\n\n // join\n var gJoin = g.selectAll('g.car').data(cars, function (d) {\n return d.number;\n });\n\n // update\n gJoin.attr('class', function (d) {\n return d.position === 1 ? 'car leader' : 'car';\n }).attr('transform', function (d) {\n return getTransform({ d: d, x: x, y: y });\n });\n\n // enter\n var gEnter = gJoin.enter().append('g').attr('class', function (d) {\n return d.position === 1 ? 'car leader' : 'car';\n }).attr('transform', function (d) {\n return getTransform({ d: d, x: x, y: y });\n });\n\n gEnter.append('circle').attr('cx', 0).attr('cy', 0).attr('r', 9);\n\n gEnter.append('text').text(function (d) {\n return d.number;\n }).attr('dy', 4);\n\n // remove\n gJoin.exit().remove();\n};\n\nvar chart = {\n setup: setup,\n update: update\n};\n\nexports.default = chart;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9jaGFydC5qcz9lNThjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25zdGFudHMgZnJvbSAnLi9jb25zdGFudHMuanMnXG5cbmNvbnN0IHNldHVwID0gY29udGFpbmVyID0+IHtcbiAgY29uc3QgbWFyZ2lucyA9IHsgdG9wOiA0NSwgcmlnaHQ6IDUsIGJvdHRvbTogMjAsIGxlZnQ6IDQwIH1cbiAgY29uc3Qgd2lkdGggPSBjb250YWluZXIubm9kZSgpLm9mZnNldFdpZHRoIC0gbWFyZ2lucy5yaWdodCAtIG1hcmdpbnMubGVmdFxuICBjb25zdCBoZWlnaHQgPSB3aWR0aCAvIDMuNVxuXG4gIGNvbnN0IHN2ZyA9IGNvbnRhaW5lclxuICAgIC5hcHBlbmQoJ3N2ZycpXG4gICAgLmF0dHIoJ3dpZHRoJywgd2lkdGggKyBtYXJnaW5zLnJpZ2h0ICsgbWFyZ2lucy5sZWZ0KVxuICAgIC5hdHRyKCdoZWlnaHQnLCBoZWlnaHQgKyBtYXJnaW5zLnRvcCArIG1hcmdpbnMuYm90dG9tKVxuXG4gIGNvbnN0IGcgPSBzdmdcbiAgICAuYXBwZW5kKCdnJylcbiAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke21hcmdpbnMubGVmdH0sICR7bWFyZ2lucy50b3B9KWApXG5cbiAgY29uc3QgeCA9IGQzXG4gICAgLnNjYWxlTGluZWFyKClcbiAgICAucmFuZ2UoWzAsIHdpZHRoXSlcbiAgICAuZG9tYWluKFswLCAxXSlcblxuICBjb25zdCB5ID0gZDNcbiAgICAuc2NhbGVMaW5lYXIoKVxuICAgIC5yYW5nZShbaGVpZ2h0LCAwXSlcbiAgICAuZG9tYWluKFswLCBjb25zdGFudHMuTUFYXSlcbiAgICAubmljZSgpXG5cbiAgY29uc3QgbGluZSA9IGQzXG4gICAgLmxpbmUoKVxuICAgIC5jdXJ2ZShkMy5jdXJ2ZUJhc2lzKVxuICAgIC54KGQgPT4geChkLnBjdCAlIDEpKVxuICAgIC55KGQgPT4geShkLnNwZWVkKSlcblxuICBjb25zdCB4QXhpcyA9IGdcbiAgICAuYXBwZW5kKCdnJylcbiAgICAuYXR0cignY2xhc3MnLCAnYXhpcyBheGlzLS14JylcbiAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgwLCAke2hlaWdodH0pYClcbiAgICAuY2FsbChcbiAgICAgIGQzXG4gICAgICAgIC5heGlzQm90dG9tKHgpXG4gICAgICAgIC50aWNrU2l6ZSgwKVxuICAgICAgICAudGlja3MoW10pXG4gICAgKVxuXG4gIHhBeGlzXG4gICAgLmFwcGVuZCgndGV4dCcpXG4gICAgLnRleHQoJ1N0YXJ0JylcbiAgICAuYXR0cigneCcsIHgoMCkpXG4gICAgLmF0dHIoJ3RleHQtYW5jaG9yJywgJ3N0YXJ0JylcbiAgICAuYXR0cignZHknLCAxNClcblxuICB4QXhpc1xuICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgIC50ZXh0KCdGaW5pc2gnKVxuICAgIC5hdHRyKCd4JywgeCgxKSlcbiAgICAuYXR0cigndGV4dC1hbmNob3InLCAnZW5kJylcbiAgICAuYXR0cignZHknLCAxNClcblxuICBjb25zdCB5QXhpcyA9IGdcbiAgICAuYXBwZW5kKCdnJylcbiAgICAuYXR0cignY2xhc3MnLCAnYXhpcyBheGlzLS15JylcbiAgICAuY2FsbChcbiAgICAgIGQzXG4gICAgICAgIC5heGlzTGVmdCh5KVxuICAgICAgICAudGlja1NpemUoMClcbiAgICAgICAgLnRpY2tzKDUpXG4gICAgKVxuXG4gIHlBeGlzXG4gICAgLmFwcGVuZCgndGV4dCcpXG4gICAgLnRleHQoJyhNUEgpJylcbiAgICAuYXR0cignZHgnLCAtMylcbiAgICAuYXR0cignZHknLCA2IC0gMTgpXG4gICAgLmF0dHIoJ3RleHQtYW5jaG9yJywgJ2VuZCcpXG5cbiAgeUF4aXNcbiAgICAuYXBwZW5kKCd0ZXh0JylcbiAgICAudGV4dCgnU3BlZWQnKVxuICAgIC5hdHRyKCdkeCcsIC0zKVxuICAgIC5hdHRyKCdkeScsIDYgLSAxOCAtIDE4KVxuICAgIC5hdHRyKCd0ZXh0LWFuY2hvcicsICdlbmQnKVxuXG4gIHJldHVybiB7XG4gICAgZyxcbiAgICB4LFxuICAgIHksXG4gICAgbGluZVxuICB9XG59XG5cbmNvbnN0IGNsZWFuID0gbWVhc3VyZXMgPT4ge1xuICBjb25zdCBsYXN0VHdvID0gbWVhc3VyZXMuc2xpY2UoLTIpLm1hcChkID0+IGQucGN0ICUgMSlcblxuICByZXR1cm4gbGFzdFR3b1sxXSA8IGxhc3RUd29bMF1cbiAgICA/IG1lYXN1cmVzLnNsaWNlKDAsIG1lYXN1cmVzLmxlbmd0aCAtIDEpXG4gICAgOiBtZWFzdXJlc1xufVxuLy8gXy5sYXN0KG1lYXN1cmVzKS5wY3QgJSAxIDxcbi8vIG1lYXN1cmVzLmxlbmd0aCA9PT0gMiA/IG1lYXN1cmVzLnNsaWNlKC0xKSA6IG1lYXN1cmVzXG5cbmNvbnN0IGdldFRyYW5zZm9ybSA9ICh7IGQsIHgsIHkgfSkgPT4ge1xuICBjb25zdCBsYXN0ID0gXy5sYXN0KGQubWVhc3VyZXMpXG4gIHJldHVybiBgdHJhbnNsYXRlKCR7eChsYXN0LnBjdCAlIDEpfSwgJHt5KGxhc3Quc3BlZWQpfSlgXG59XG5cbmNvbnN0IHVwZGF0ZSA9ICh7IGcsIHgsIHksIGxpbmUsIGNhcnMgfSkgPT4ge1xuICAvLyBqb2luXG4gIGNvbnN0IHBhdGhzID0gZy5zZWxlY3RBbGwoJ3BhdGguY2FyJykuZGF0YShjYXJzLCBkID0+IGQubnVtYmVyKVxuXG4gIC8vIHVwZGF0ZVxuICBwYXRocy5hdHRyKCdkJywgZCA9PiBsaW5lKGNsZWFuKGQubWVhc3VyZXMpKSlcblxuICAvLyBlbnRlclxuICBwYXRoc1xuICAgIC5lbnRlcigpXG4gICAgLmFwcGVuZCgncGF0aCcpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ2NhcicpXG4gICAgLmF0dHIoJ2QnLCBkID0+IGxpbmUoY2xlYW4oZC5tZWFzdXJlcykpKVxuXG4gIC8vIHJlbW92ZVxuICBwYXRocy5leGl0KCkucmVtb3ZlKClcblxuICAvLyBqb2luXG4gIGNvbnN0IGdKb2luID0gZy5zZWxlY3RBbGwoJ2cuY2FyJykuZGF0YShjYXJzLCBkID0+IGQubnVtYmVyKVxuXG4gIC8vIHVwZGF0ZVxuICBnSm9pblxuICAgIC5hdHRyKCdjbGFzcycsIGQgPT4gKGQucG9zaXRpb24gPT09IDEgPyAnY2FyIGxlYWRlcicgOiAnY2FyJykpXG4gICAgLmF0dHIoJ3RyYW5zZm9ybScsIGQgPT4gZ2V0VHJhbnNmb3JtKHsgZCwgeCwgeSB9KSlcblxuICAvLyBlbnRlclxuICBjb25zdCBnRW50ZXIgPSBnSm9pblxuICAgIC5lbnRlcigpXG4gICAgLmFwcGVuZCgnZycpXG4gICAgLmF0dHIoJ2NsYXNzJywgZCA9PiAoZC5wb3NpdGlvbiA9PT0gMSA/ICdjYXIgbGVhZGVyJyA6ICdjYXInKSlcbiAgICAuYXR0cigndHJhbnNmb3JtJywgZCA9PiBnZXRUcmFuc2Zvcm0oeyBkLCB4LCB5IH0pKVxuXG4gIGdFbnRlclxuICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgLmF0dHIoJ2N4JywgMClcbiAgICAuYXR0cignY3knLCAwKVxuICAgIC5hdHRyKCdyJywgOSlcblxuICBnRW50ZXJcbiAgICAuYXBwZW5kKCd0ZXh0JylcbiAgICAudGV4dChkID0+IGQubnVtYmVyKVxuICAgIC5hdHRyKCdkeScsIDQpXG5cbiAgLy8gcmVtb3ZlXG4gIGdKb2luLmV4aXQoKS5yZW1vdmUoKVxufVxuXG5jb25zdCBjaGFydCA9IHtcbiAgc2V0dXAsXG4gIHVwZGF0ZVxufVxuXG5leHBvcnQgZGVmYXVsdCBjaGFydFxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIGNoYXJ0LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOzs7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUdBO0FBQ0E7QUFJQTtBQUNBO0FBS0E7QUFHQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQVVBO0FBQ0E7QUFNQTtBQUNBO0FBTUE7QUFDQTtBQVNBO0FBQ0E7QUFNQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUVBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///2\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar formatTime = d3.timeFormat('%-M:%S.%L');\n\nvar rowCells = function rowCells(d) {\n return [['', d.position], [d.position === 1 ? 'leader' : d.status, d.number], [d.position === 1 ? 'leader' : d.status, d.name], ['', d.gap || ''], ['', d.int || ''], ['', _.last(d.laps) ? formatTime(_.last(d.laps)) : ''], ['', Math.floor(_.last(d.measures).pct) || '']];\n};\n\nvar drawBoard = function drawBoard(_ref) {\n var cars = _ref.cars,\n setup = _ref.setup;\n\n // console.log(JSON.stringify(cars, null, 2))\n\n // Only draw the board when a car starts a new lap.\n if (cars.filter(function (d) {\n return d.isNewLap;\n }).length || setup) {\n var tbody = d3.select('table.board tbody');\n\n // join\n var trJoin = tbody.selectAll('tr').data(cars);\n\n // update\n trJoin.selectAll('td').data(rowCells).attr('class', function (d) {\n return d[0];\n });\n\n // immediately display non-new laps\n trJoin.transition().duration(0).filter(function (d) {\n return !d.isNewLap;\n }).selectAll('td').text(function (d) {\n return d[1];\n }).style('visibility', 'visible');\n\n // stagger display new laps\n trJoin.transition().duration(0).filter(function (d) {\n return d.isNewLap;\n }).selectAll('td').text(function (d) {\n return d[1];\n }).style('visibility', 'hidden').transition().delay(function (d, i) {\n return 125 + i * 125;\n }).style('visibility', 'visible');\n\n // enter\n var trEnter = trJoin.enter().append('tr');\n\n trEnter.selectAll('td').data(rowCells).enter().append('td').attr('class', function (d) {\n return d[0];\n }).text(function (d) {\n return d[1];\n });\n }\n};\n\nexports.default = drawBoard;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9kcmF3Qm9hcmQuanM/YjQ2ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBmb3JtYXRUaW1lID0gZDMudGltZUZvcm1hdCgnJS1NOiVTLiVMJylcblxuY29uc3Qgcm93Q2VsbHMgPSBkID0+IFtcbiAgWycnLCBkLnBvc2l0aW9uXSxcbiAgW2QucG9zaXRpb24gPT09IDEgPyAnbGVhZGVyJyA6IGQuc3RhdHVzLCBkLm51bWJlcl0sXG4gIFtkLnBvc2l0aW9uID09PSAxID8gJ2xlYWRlcicgOiBkLnN0YXR1cywgZC5uYW1lXSxcbiAgWycnLCBkLmdhcCB8fCAnJ10sXG4gIFsnJywgZC5pbnQgfHwgJyddLFxuICBbJycsIF8ubGFzdChkLmxhcHMpID8gZm9ybWF0VGltZShfLmxhc3QoZC5sYXBzKSkgOiAnJ10sXG4gIFsnJywgTWF0aC5mbG9vcihfLmxhc3QoZC5tZWFzdXJlcykucGN0KSB8fCAnJ11cbl1cblxuY29uc3QgZHJhd0JvYXJkID0gKHsgY2Fycywgc2V0dXAgfSkgPT4ge1xuICAvLyBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShjYXJzLCBudWxsLCAyKSlcblxuICAvLyBPbmx5IGRyYXcgdGhlIGJvYXJkIHdoZW4gYSBjYXIgc3RhcnRzIGEgbmV3IGxhcC5cbiAgaWYgKGNhcnMuZmlsdGVyKGQgPT4gZC5pc05ld0xhcCkubGVuZ3RoIHx8IHNldHVwKSB7XG4gICAgY29uc3QgdGJvZHkgPSBkMy5zZWxlY3QoJ3RhYmxlLmJvYXJkIHRib2R5JylcblxuICAgIC8vIGpvaW5cbiAgICBjb25zdCB0ckpvaW4gPSB0Ym9keS5zZWxlY3RBbGwoJ3RyJykuZGF0YShjYXJzKVxuXG4gICAgLy8gdXBkYXRlXG4gICAgdHJKb2luXG4gICAgICAuc2VsZWN0QWxsKCd0ZCcpXG4gICAgICAuZGF0YShyb3dDZWxscylcbiAgICAgIC5hdHRyKCdjbGFzcycsIGQgPT4gZFswXSlcblxuICAgIC8vIGltbWVkaWF0ZWx5IGRpc3BsYXkgbm9uLW5ldyBsYXBzXG4gICAgdHJKb2luXG4gICAgICAudHJhbnNpdGlvbigpXG4gICAgICAuZHVyYXRpb24oMClcbiAgICAgIC5maWx0ZXIoZCA9PiAhZC5pc05ld0xhcClcbiAgICAgIC5zZWxlY3RBbGwoJ3RkJylcbiAgICAgIC50ZXh0KGQgPT4gZFsxXSlcbiAgICAgIC5zdHlsZSgndmlzaWJpbGl0eScsICd2aXNpYmxlJylcblxuICAgIC8vIHN0YWdnZXIgZGlzcGxheSBuZXcgbGFwc1xuICAgIHRySm9pblxuICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgLmR1cmF0aW9uKDApXG4gICAgICAuZmlsdGVyKGQgPT4gZC5pc05ld0xhcClcbiAgICAgIC5zZWxlY3RBbGwoJ3RkJylcbiAgICAgIC50ZXh0KGQgPT4gZFsxXSlcbiAgICAgIC5zdHlsZSgndmlzaWJpbGl0eScsICdoaWRkZW4nKVxuICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgLmRlbGF5KChkLCBpKSA9PiAxMjUgKyBpICogMTI1KVxuICAgICAgLnN0eWxlKCd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKVxuXG4gICAgLy8gZW50ZXJcbiAgICBjb25zdCB0ckVudGVyID0gdHJKb2luLmVudGVyKCkuYXBwZW5kKCd0cicpXG5cbiAgICB0ckVudGVyXG4gICAgICAuc2VsZWN0QWxsKCd0ZCcpXG4gICAgICAuZGF0YShyb3dDZWxscylcbiAgICAgIC5lbnRlcigpXG4gICAgICAuYXBwZW5kKCd0ZCcpXG4gICAgICAuYXR0cignY2xhc3MnLCBkID0+IGRbMF0pXG4gICAgICAudGV4dChkID0+IGRbMV0pXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZHJhd0JvYXJkXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gZHJhd0JvYXJkLmpzIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQVNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUFBO0FBRUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///3\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar getTransform = function getTransform(_ref) {\n var d = _ref.d,\n getCoords = _ref.getCoords;\n return 'translate(' + getCoords(_.last(d.measures).pct) + ')';\n};\n\nvar drawCars = function drawCars(_ref2) {\n var g = _ref2.g,\n cars = _ref2.cars,\n getCoords = _ref2.getCoords;\n\n // join\n var gJoin = g.selectAll('g.car').data(cars, function (d) {\n return d.number;\n });\n\n // update\n gJoin.attr('class', function (d) {\n return d.position === 1 ? 'car leader' : 'car';\n }).attr('transform', function (d) {\n return getTransform({ d: d, getCoords: getCoords });\n });\n\n // enter\n var gEnter = gJoin.enter().append('g').attr('class', function (d) {\n return d.position === 1 ? 'car leader' : 'car';\n }).attr('transform', function (d) {\n return getTransform({ d: d, getCoords: getCoords });\n });\n\n gEnter.append('circle').attr('cx', 0).attr('cy', 0).attr('r', 12);\n\n gEnter.append('text').text(function (d) {\n return d.number;\n }).attr('dy', 5);\n\n // remove\n gJoin.exit().remove();\n};\n\nexports.default = drawCars;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9kcmF3Q2Fycy5qcz9hMDAwIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGdldFRyYW5zZm9ybSA9ICh7IGQsIGdldENvb3JkcyB9KSA9PlxuICBgdHJhbnNsYXRlKCR7Z2V0Q29vcmRzKF8ubGFzdChkLm1lYXN1cmVzKS5wY3QpfSlgXG5cbmNvbnN0IGRyYXdDYXJzID0gKHsgZywgY2FycywgZ2V0Q29vcmRzIH0pID0+IHtcbiAgLy8gam9pblxuICBjb25zdCBnSm9pbiA9IGcuc2VsZWN0QWxsKCdnLmNhcicpLmRhdGEoY2FycywgZCA9PiBkLm51bWJlcilcblxuICAvLyB1cGRhdGVcbiAgZ0pvaW5cbiAgICAuYXR0cignY2xhc3MnLCBkID0+IChkLnBvc2l0aW9uID09PSAxID8gJ2NhciBsZWFkZXInIDogJ2NhcicpKVxuICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBkID0+IGdldFRyYW5zZm9ybSh7IGQsIGdldENvb3JkcyB9KSlcblxuICAvLyBlbnRlclxuICBjb25zdCBnRW50ZXIgPSBnSm9pblxuICAgIC5lbnRlcigpXG4gICAgLmFwcGVuZCgnZycpXG4gICAgLmF0dHIoJ2NsYXNzJywgZCA9PiAoZC5wb3NpdGlvbiA9PT0gMSA/ICdjYXIgbGVhZGVyJyA6ICdjYXInKSlcbiAgICAuYXR0cigndHJhbnNmb3JtJywgZCA9PiBnZXRUcmFuc2Zvcm0oeyBkLCBnZXRDb29yZHMgfSkpXG5cbiAgZ0VudGVyXG4gICAgLmFwcGVuZCgnY2lyY2xlJylcbiAgICAuYXR0cignY3gnLCAwKVxuICAgIC5hdHRyKCdjeScsIDApXG4gICAgLmF0dHIoJ3InLCAxMilcblxuICBnRW50ZXJcbiAgICAuYXBwZW5kKCd0ZXh0JylcbiAgICAudGV4dChkID0+IGQubnVtYmVyKVxuICAgIC5hdHRyKCdkeScsIDUpXG5cbiAgLy8gcmVtb3ZlXG4gIGdKb2luLmV4aXQoKS5yZW1vdmUoKVxufVxuXG5leHBvcnQgZGVmYXVsdCBkcmF3Q2Fyc1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIGRyYXdDYXJzLmpzIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUVBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///4\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar drawTrack = function drawTrack(_ref) {\n var container = _ref.container,\n track = _ref.track;\n\n var margin = 20;\n var dimension = container.node().offsetWidth - margin * 2;\n\n var xExtent = d3.extent(track, function (d) {\n return d.x;\n });\n var x = d3.scaleLinear().domain(xExtent);\n\n var yExtent = d3.extent(track, function (d) {\n return d.y;\n });\n var y = d3.scaleLinear().domain(yExtent);\n\n var aspect = (xExtent[1] - xExtent[0]) / (yExtent[1] - yExtent[0]);\n\n var width = Math.min(dimension * aspect, dimension);\n var height = Math.min(dimension / aspect, dimension);\n\n x.range([0, width]);\n y.range([0, height]);\n\n var svg = container.append('svg').attr('width', width + 2 * margin).attr('height', height + 2 * margin);\n\n var g = svg.append('g').attr('transform', 'translate(' + margin + ', ' + margin + ')');\n\n var line = d3.line()\n // .curve(d3.curveBasis)\n .x(function (d) {\n return x(d.x);\n }).y(function (d) {\n return y(d.y);\n });\n\n var path = g.append('path').attr('class', 'track').datum(track).attr('d', line).node();\n\n var totalLength = path.getTotalLength();\n\n var getCoords = function getCoords(pct) {\n var p = path.getPointAtLength(totalLength * (pct % 1));\n return [p.x, p.y];\n };\n\n var delta = 0.01;\n var before = getCoords(1 - delta);\n var zero = getCoords(0);\n var after = getCoords(delta);\n\n g.append('line').attr('class', 'finish-line').attr('x1', before[0]).attr('y1', before[1]).attr('x2', after[0]).attr('y2', after[1]).attr('transform', 'rotate(90, ' + zero + ')');\n\n return { g: g, getCoords: getCoords };\n};\n\nexports.default = drawTrack;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9kcmF3VHJhY2suanM/MTY1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBkcmF3VHJhY2sgPSAoeyBjb250YWluZXIsIHRyYWNrIH0pID0+IHtcbiAgY29uc3QgbWFyZ2luID0gMjBcbiAgY29uc3QgZGltZW5zaW9uID0gY29udGFpbmVyLm5vZGUoKS5vZmZzZXRXaWR0aCAtIG1hcmdpbiAqIDJcblxuICBjb25zdCB4RXh0ZW50ID0gZDMuZXh0ZW50KHRyYWNrLCBkID0+IGQueClcbiAgY29uc3QgeCA9IGQzLnNjYWxlTGluZWFyKCkuZG9tYWluKHhFeHRlbnQpXG5cbiAgY29uc3QgeUV4dGVudCA9IGQzLmV4dGVudCh0cmFjaywgZCA9PiBkLnkpXG4gIGNvbnN0IHkgPSBkMy5zY2FsZUxpbmVhcigpLmRvbWFpbih5RXh0ZW50KVxuXG4gIGNvbnN0IGFzcGVjdCA9ICh4RXh0ZW50WzFdIC0geEV4dGVudFswXSkgLyAoeUV4dGVudFsxXSAtIHlFeHRlbnRbMF0pXG5cbiAgY29uc3Qgd2lkdGggPSBNYXRoLm1pbihkaW1lbnNpb24gKiBhc3BlY3QsIGRpbWVuc2lvbilcbiAgY29uc3QgaGVpZ2h0ID0gTWF0aC5taW4oZGltZW5zaW9uIC8gYXNwZWN0LCBkaW1lbnNpb24pXG5cbiAgeC5yYW5nZShbMCwgd2lkdGhdKVxuICB5LnJhbmdlKFswLCBoZWlnaHRdKVxuXG4gIGNvbnN0IHN2ZyA9IGNvbnRhaW5lclxuICAgIC5hcHBlbmQoJ3N2ZycpXG4gICAgLmF0dHIoJ3dpZHRoJywgd2lkdGggKyAyICogbWFyZ2luKVxuICAgIC5hdHRyKCdoZWlnaHQnLCBoZWlnaHQgKyAyICogbWFyZ2luKVxuXG4gIGNvbnN0IGcgPSBzdmcuYXBwZW5kKCdnJykuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke21hcmdpbn0sICR7bWFyZ2lufSlgKVxuXG4gIGNvbnN0IGxpbmUgPSBkM1xuICAgIC5saW5lKClcbiAgICAvLyAuY3VydmUoZDMuY3VydmVCYXNpcylcbiAgICAueChkID0+IHgoZC54KSlcbiAgICAueShkID0+IHkoZC55KSlcblxuICBjb25zdCBwYXRoID0gZ1xuICAgIC5hcHBlbmQoJ3BhdGgnKVxuICAgIC5hdHRyKCdjbGFzcycsICd0cmFjaycpXG4gICAgLmRhdHVtKHRyYWNrKVxuICAgIC5hdHRyKCdkJywgbGluZSlcbiAgICAubm9kZSgpXG5cbiAgY29uc3QgdG90YWxMZW5ndGggPSBwYXRoLmdldFRvdGFsTGVuZ3RoKClcblxuICBjb25zdCBnZXRDb29yZHMgPSBwY3QgPT4ge1xuICAgIGNvbnN0IHAgPSBwYXRoLmdldFBvaW50QXRMZW5ndGgodG90YWxMZW5ndGggKiAocGN0ICUgMSkpXG4gICAgcmV0dXJuIFtwLngsIHAueV1cbiAgfVxuXG4gIGNvbnN0IGRlbHRhID0gMC4wMVxuICBjb25zdCBiZWZvcmUgPSBnZXRDb29yZHMoMSAtIGRlbHRhKVxuICBjb25zdCB6ZXJvID0gZ2V0Q29vcmRzKDApXG4gIGNvbnN0IGFmdGVyID0gZ2V0Q29vcmRzKGRlbHRhKVxuXG4gIGdcbiAgICAuYXBwZW5kKCdsaW5lJylcbiAgICAuYXR0cignY2xhc3MnLCAnZmluaXNoLWxpbmUnKVxuICAgIC5hdHRyKCd4MScsIGJlZm9yZVswXSlcbiAgICAuYXR0cigneTEnLCBiZWZvcmVbMV0pXG4gICAgLmF0dHIoJ3gyJywgYWZ0ZXJbMF0pXG4gICAgLmF0dHIoJ3kyJywgYWZ0ZXJbMV0pXG4gICAgLmF0dHIoJ3RyYW5zZm9ybScsIGByb3RhdGUoOTAsICR7emVyb30pYClcblxuICByZXR1cm4geyBnLCBnZXRDb29yZHMgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBkcmF3VHJhY2tcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBkcmF3VHJhY2suanMiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFGQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///5\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _constants = __webpack_require__(0);\n\nvar _constants2 = _interopRequireDefault(_constants);\n\nvar _getRandomArbitrary = __webpack_require__(7);\n\nvar _getRandomArbitrary2 = _interopRequireDefault(_getRandomArbitrary);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar moveCar = function moveCar(_ref) {\n var car = _ref.car,\n delta = _ref.delta;\n var measures = car.measures;\n\n var random = 0.02;\n\n var lastTwo = measures.slice(-2);\n\n // Figure out if we started a new lap.\n var isNewLap = Math.floor(lastTwo[0].pct) !== Math.floor(lastTwo[1].pct);\n\n // Calculate new speed.\n var newSpeed = _.clamp(lastTwo[1].speed * (0, _getRandomArbitrary2.default)(1 - random, 1 + random), _constants2.default.MIN, _constants2.default.MAX);\n\n // Calculate new pct.\n var newPct = lastTwo[1].pct + delta * lastTwo[1].speed / 3600000;\n\n return _extends({}, car, {\n isNewLap: isNewLap,\n measures: [].concat(_toConsumableArray(measures), [{\n pct: newPct,\n speed: newSpeed\n }]).slice(isNewLap ? -2 : 0)\n });\n};\n\nexports.default = moveCar;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9tb3ZlQ2FyLmpzP2RlNzkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbnN0YW50cyBmcm9tICcuL2NvbnN0YW50cy5qcydcbmltcG9ydCBnZXRSYW5kb21BcmJpdHJhcnkgZnJvbSAnLi9nZXRSYW5kb21BcmJpdHJhcnkuanMnXG5cbmNvbnN0IG1vdmVDYXIgPSAoeyBjYXIsIGRlbHRhIH0pID0+IHtcbiAgY29uc3QgeyBtZWFzdXJlcyB9ID0gY2FyXG4gIGNvbnN0IHJhbmRvbSA9IDAuMDJcblxuICBjb25zdCBsYXN0VHdvID0gbWVhc3VyZXMuc2xpY2UoLTIpXG5cbiAgLy8gRmlndXJlIG91dCBpZiB3ZSBzdGFydGVkIGEgbmV3IGxhcC5cbiAgY29uc3QgaXNOZXdMYXAgPSBNYXRoLmZsb29yKGxhc3RUd29bMF0ucGN0KSAhPT0gTWF0aC5mbG9vcihsYXN0VHdvWzFdLnBjdClcblxuICAvLyBDYWxjdWxhdGUgbmV3IHNwZWVkLlxuICBjb25zdCBuZXdTcGVlZCA9IF8uY2xhbXAoXG4gICAgbGFzdFR3b1sxXS5zcGVlZCAqIGdldFJhbmRvbUFyYml0cmFyeSgxIC0gcmFuZG9tLCAxICsgcmFuZG9tKSxcbiAgICBjb25zdGFudHMuTUlOLFxuICAgIGNvbnN0YW50cy5NQVhcbiAgKVxuXG4gIC8vIENhbGN1bGF0ZSBuZXcgcGN0LlxuICBjb25zdCBuZXdQY3QgPSBsYXN0VHdvWzFdLnBjdCArIGRlbHRhICogbGFzdFR3b1sxXS5zcGVlZCAvIDM2MDAwMDBcblxuICByZXR1cm4ge1xuICAgIC4uLmNhcixcbiAgICBpc05ld0xhcCxcbiAgICBtZWFzdXJlczogW1xuICAgICAgLi4ubWVhc3VyZXMsXG4gICAgICB7XG4gICAgICAgIHBjdDogbmV3UGN0LFxuICAgICAgICBzcGVlZDogbmV3U3BlZWRcbiAgICAgIH1cbiAgICBdLnNsaWNlKGlzTmV3TGFwID8gLTIgOiAwKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1vdmVDYXJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBtb3ZlQ2FyLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBRkE7QUFMQTtBQVdBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\nvar getRandomArbitrary = function getRandomArbitrary(min, max) {\n return Math.random() * (max - min) + min;\n};\n\nexports.default = getRandomArbitrary;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9nZXRSYW5kb21BcmJpdHJhcnkuanM/OWY2MSJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBnZXRSYW5kb21BcmJpdHJhcnkgPSAobWluLCBtYXgpID0+IE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSArIG1pblxuXG5leHBvcnQgZGVmYXVsdCBnZXRSYW5kb21BcmJpdHJhcnlcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBnZXRSYW5kb21BcmJpdHJhcnkuanMiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///7\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _drawTrack2 = __webpack_require__(5);\n\nvar _drawTrack3 = _interopRequireDefault(_drawTrack2);\n\nvar _drawCars = __webpack_require__(4);\n\nvar _drawCars2 = _interopRequireDefault(_drawCars);\n\nvar _constants = __webpack_require__(0);\n\nvar _constants2 = _interopRequireDefault(_constants);\n\nvar _drawBoard = __webpack_require__(3);\n\nvar _drawBoard2 = _interopRequireDefault(_drawBoard);\n\nvar _chart = __webpack_require__(2);\n\nvar _chart2 = _interopRequireDefault(_chart);\n\nvar _moveCar = __webpack_require__(6);\n\nvar _moveCar2 = _interopRequireDefault(_moveCar);\n\nvar _calculateMetrics = __webpack_require__(1);\n\nvar _calculateMetrics2 = _interopRequireDefault(_calculateMetrics);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Draw the track.\nvar _drawTrack = (0, _drawTrack3.default)({\n container: d3.select('.circuit'),\n track: circuitTracks[0]\n}),\n gCircuit = _drawTrack.g,\n getCoords = _drawTrack.getCoords;\n\n// Setup the chart.\n\n\nvar chartBits = _chart2.default.setup(d3.select('.chart'));\n\n// Create the state.\nvar dx = 0.015;\nvar state = {\n cars: _(drivers).sortBy('standing').slice(0, 10).map(function (d, i, array) {\n return {\n number: d.number,\n name: d.name.split(' ')[1].slice(0, 3),\n measures: [{\n speed: _constants2.default.AVERAGE,\n pct: 0\n }, {\n speed: _constants2.default.AVERAGE,\n pct: dx * array.length - (i + 1) * dx\n }],\n elapsed: 0,\n laps: [],\n status: 'yellow',\n position: i + 1\n };\n }).value()\n};\n\nvar draw = function draw(setup) {\n // Draw the cars.\n (0, _drawCars2.default)({ g: gCircuit, getCoords: getCoords, cars: state.cars });\n\n // Draw the board.\n (0, _drawBoard2.default)({ cars: state.cars, setup: setup });\n\n // Update the chart.\n _chart2.default.update(_extends({ cars: state.cars }, chartBits));\n};\n\ndraw(true);\n\nvar now = 0;\nvar timer = d3.interval(function (elapsed) {\n var delta = elapsed - now;\n\n // Move the cars (and also keep them sorted by position).\n state = _extends({}, state, {\n cars: _(state.cars).map(function (car) {\n return (0, _moveCar2.default)({ car: car, delta: delta });\n }).sortBy(function (d) {\n return -_.last(d.measures).pct;\n }).value()\n\n // Calculate metrics.\n });state = _extends({}, state, {\n cars: state.cars.map(function (car, index, cars) {\n return (0, _calculateMetrics2.default)({ car: car, raceElapsed: elapsed, index: index, cars: cars });\n })\n\n // Draw everything.\n });draw();\n\n now = elapsed;\n\n // Stop when the leader gets to 10 laps.\n if (_.last(state.cars[0].measures).pct >= 10) {\n timer.stop();\n }\n}, 0);\n\n// document.querySelector('button.slow').addEventListener('click', () => {\n// state.cars[0].speed = state.cars[0].speed * 0.9\n// })\n\n// document.querySelector('button.fast').addEventListener('click', () => {\n// state.cars[0].speed = state.cars[0].speed * 1.01\n// })\n\ndocument.querySelector('button.stop').addEventListener('click', function () {\n timer.stop();\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9zY3JpcHQuanM/OWE5NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZHJhd1RyYWNrIGZyb20gJy4vZHJhd1RyYWNrLmpzJ1xuaW1wb3J0IGRyYXdDYXJzIGZyb20gJy4vZHJhd0NhcnMuanMnXG5pbXBvcnQgY29uc3RhbnRzIGZyb20gJy4vY29uc3RhbnRzLmpzJ1xuaW1wb3J0IGRyYXdCb2FyZCBmcm9tICcuL2RyYXdCb2FyZC5qcydcbmltcG9ydCBjaGFydCBmcm9tICcuL2NoYXJ0LmpzJ1xuaW1wb3J0IG1vdmVDYXIgZnJvbSAnLi9tb3ZlQ2FyLmpzJ1xuaW1wb3J0IGNhbGN1bGF0ZU1ldHJpY3MgZnJvbSAnLi9jYWxjdWxhdGVNZXRyaWNzLmpzJ1xuXG4vLyBEcmF3IHRoZSB0cmFjay5cbmNvbnN0IHsgZzogZ0NpcmN1aXQsIGdldENvb3JkcyB9ID0gZHJhd1RyYWNrKHtcbiAgY29udGFpbmVyOiBkMy5zZWxlY3QoJy5jaXJjdWl0JyksXG4gIHRyYWNrOiBjaXJjdWl0VHJhY2tzWzBdXG59KVxuXG4vLyBTZXR1cCB0aGUgY2hhcnQuXG5jb25zdCBjaGFydEJpdHMgPSBjaGFydC5zZXR1cChkMy5zZWxlY3QoJy5jaGFydCcpKVxuXG4vLyBDcmVhdGUgdGhlIHN0YXRlLlxuY29uc3QgZHggPSAwLjAxNVxubGV0IHN0YXRlID0ge1xuICBjYXJzOiBfKGRyaXZlcnMpXG4gICAgLnNvcnRCeSgnc3RhbmRpbmcnKVxuICAgIC5zbGljZSgwLCAxMClcbiAgICAubWFwKChkLCBpLCBhcnJheSkgPT4gKHtcbiAgICAgIG51bWJlcjogZC5udW1iZXIsXG4gICAgICBuYW1lOiBkLm5hbWUuc3BsaXQoJyAnKVsxXS5zbGljZSgwLCAzKSxcbiAgICAgIG1lYXN1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzcGVlZDogY29uc3RhbnRzLkFWRVJBR0UsXG4gICAgICAgICAgcGN0OiAwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzcGVlZDogY29uc3RhbnRzLkFWRVJBR0UsXG4gICAgICAgICAgcGN0OiBkeCAqIGFycmF5Lmxlbmd0aCAtIChpICsgMSkgKiBkeFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZWxhcHNlZDogMCxcbiAgICAgIGxhcHM6IFtdLFxuICAgICAgc3RhdHVzOiAneWVsbG93JyxcbiAgICAgIHBvc2l0aW9uOiBpICsgMVxuICAgIH0pKVxuICAgIC52YWx1ZSgpXG59XG5cbmNvbnN0IGRyYXcgPSBzZXR1cCA9PiB7XG4gIC8vIERyYXcgdGhlIGNhcnMuXG4gIGRyYXdDYXJzKHsgZzogZ0NpcmN1aXQsIGdldENvb3JkcywgY2Fyczogc3RhdGUuY2FycyB9KVxuXG4gIC8vIERyYXcgdGhlIGJvYXJkLlxuICBkcmF3Qm9hcmQoeyBjYXJzOiBzdGF0ZS5jYXJzLCBzZXR1cCB9KVxuXG4gIC8vIFVwZGF0ZSB0aGUgY2hhcnQuXG4gIGNoYXJ0LnVwZGF0ZSh7IGNhcnM6IHN0YXRlLmNhcnMsIC4uLmNoYXJ0Qml0cyB9KVxufVxuXG5kcmF3KHRydWUpXG5cbmxldCBub3cgPSAwXG5jb25zdCB0aW1lciA9IGQzLmludGVydmFsKGVsYXBzZWQgPT4ge1xuICBjb25zdCBkZWx0YSA9IGVsYXBzZWQgLSBub3dcblxuICAvLyBNb3ZlIHRoZSBjYXJzIChhbmQgYWxzbyBrZWVwIHRoZW0gc29ydGVkIGJ5IHBvc2l0aW9uKS5cbiAgc3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgY2FyczogXyhzdGF0ZS5jYXJzKVxuICAgICAgLm1hcChjYXIgPT4gbW92ZUNhcih7IGNhciwgZGVsdGEgfSkpXG4gICAgICAuc29ydEJ5KGQgPT4gLV8ubGFzdChkLm1lYXN1cmVzKS5wY3QpXG4gICAgICAudmFsdWUoKVxuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIG1ldHJpY3MuXG4gIHN0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGNhcnM6IHN0YXRlLmNhcnMubWFwKChjYXIsIGluZGV4LCBjYXJzKSA9PlxuICAgICAgY2FsY3VsYXRlTWV0cmljcyh7IGNhciwgcmFjZUVsYXBzZWQ6IGVsYXBzZWQsIGluZGV4LCBjYXJzIH0pXG4gICAgKVxuICB9XG5cbiAgLy8gRHJhdyBldmVyeXRoaW5nLlxuICBkcmF3KClcblxuICBub3cgPSBlbGFwc2VkXG5cbiAgLy8gU3RvcCB3aGVuIHRoZSBsZWFkZXIgZ2V0cyB0byAxMCBsYXBzLlxuICBpZiAoXy5sYXN0KHN0YXRlLmNhcnNbMF0ubWVhc3VyZXMpLnBjdCA+PSAxMCkge1xuICAgIHRpbWVyLnN0b3AoKVxuICB9XG59LCAwKVxuXG4vLyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b24uc2xvdycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuLy8gICBzdGF0ZS5jYXJzWzBdLnNwZWVkID0gc3RhdGUuY2Fyc1swXS5zcGVlZCAqIDAuOVxuLy8gfSlcblxuLy8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uLmZhc3QnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbi8vICAgc3RhdGUuY2Fyc1swXS5zcGVlZCA9IHN0YXRlLmNhcnNbMF0uc3BlZWQgKiAxLjAxXG4vLyB9KVxuXG5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b24uc3RvcCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICB0aW1lci5zdG9wKClcbn0pXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc2NyaXB0LmpzIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7Ozs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQWhCQTtBQUFBO0FBSkE7QUFDQTtBQXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBUkE7QUFXQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBUEE7QUFDQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///8\n")}]);